因為在scanf("%c",j[i]);之后你又將i++;這時j[i]中的值就不是你輸入的值,再用if(j[i]=='n')
在禹州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需設(shè)計網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,禹州網(wǎng)站建設(shè)費用合理。
判斷,當(dāng)然有問題
我是一名多年的單片機(jī)工程師,下面的講解你可以參考一下。
原句是下面這樣的。
while(n)
{
語句1;
語句2;
語句n;
}
講解:
1 while(1)是無限循環(huán)花括號里面的語句。
比如:
while(1)
{
a=b;
c=d;
}
這樣語句a=b; c=d;,從上到下執(zhí)行完后,然后又回到起始點,再從上到下執(zhí)行,如此無限循環(huán)。
2 while(i--)。
假設(shè)i=50,每執(zhí)行完花括號里面一次,i就減1,這個就是符號“--”的原理,“--”名字叫做自減,直到i=0就退出while花括號里面的語言,相當(dāng)于執(zhí)行while花括號里面的語句50次。
比如:
i=50
while(i--)
{
a=b;
c=d;
}
e=g;
這樣語句a=b; c=d;,從上到下執(zhí)行完后,然后又回到起始點,再從上到下執(zhí)行,如此循環(huán)50次后,就退出while語句,往下面執(zhí)行e=g。
3 如果你想學(xué)習(xí)更多的C語言程序與電路知識,百度一下“17個實驗學(xué)會單片機(jī)”,就可以看到教程了,感興趣的朋友可以找一下。
c語言while循環(huán)用法:
一般形式如下:
while(表達(dá)式)
{循環(huán)體內(nèi)語句}
循環(huán)體外語句
其中執(zhí)行過程如下:
(1)計算while后面括號里表達(dá)式的值,若其結(jié)果非0,則轉(zhuǎn)入(2),否則轉(zhuǎn)(3)。
(2)執(zhí)行循環(huán)體,轉(zhuǎn)(1)。
(3)退出循環(huán),執(zhí)行循環(huán)體下面的語句。
由于是先執(zhí)行判斷后執(zhí)行循環(huán)體,所以循環(huán)體可能一次都不執(zhí)行。
循環(huán)體可以為空語句“;”。
使用:
如果循環(huán)次數(shù)在執(zhí)行循環(huán)體之前就已確定,一般用for語句。如果循環(huán)次數(shù)是由循環(huán)體的執(zhí)行情況確定的,一般用while語句或者do- while語句。
當(dāng)循環(huán)體至少執(zhí)行一次時,用do-while語句,反之,如果循環(huán)體可能一次也不執(zhí)行,則選用while語句。C++/C循環(huán)語句中,for語句使用頻率最高,while語句其次,do語句很少用。
三種循環(huán)語句for、while、do-while可以互相嵌套自由組合。但要注意的是,各循環(huán)必須完整,相互之間絕不允許交叉。
while語句的原型是while(表達(dá)式)語句,當(dāng)表達(dá)式為非0值時,執(zhí)行while語句中的嵌套語句。
while(1)其中1代表一個常量表達(dá)式,它永遠(yuǎn)不會等于0。循環(huán)會一直執(zhí)行下去。除非你設(shè)置break等類似的跳出循環(huán)語句循環(huán)才會中止。
而while(i--)其中i是一個變量,因此表達(dá)式i--有不同的值,依次遞減,i--是先取值后減,--i先加后取值,所以i--的值同未執(zhí)行該自減運算時的i相等。因此當(dāng)i為0時,循環(huán)會跳出。
while語句的一般形式為:
while(表達(dá)式)語句
其中表達(dá)式是循環(huán)條件,語句為循環(huán)體。
while語句的語義是:計算表達(dá)式的值,當(dāng)值為真(非0)時, 執(zhí)行循環(huán)體語句。
C語言中的while是一種循環(huán)語句,是計算機(jī)的一種基本循環(huán)模式。當(dāng)滿足條件時進(jìn)入循環(huán),不滿足跳出
使用格式為:
?while(條件表達(dá)式)
? {
? ? 循環(huán)體語句;
? }
3.當(dāng)while循環(huán)的條件表達(dá)式為真時,進(jìn)入循環(huán),一直循環(huán)到條件表達(dá)式為假為止
while語句如下:
while語句的一般形式為:??while(表達(dá)式)語句其中表達(dá)式是循環(huán)條件,語句為循環(huán)體。
while語句的語義是:計算表達(dá)式的值,當(dāng)值為真(非0)時,執(zhí)行循環(huán)體語句。其執(zhí)行過程可用下圖表示?!纠?-2】用while語句計算從1加到100的值。用傳統(tǒng)流程圖和N-S結(jié)構(gòu)流程圖表示算法,見圖:
#includestdio.h
intmain(void){
inti,sum=0;
i=1;
while(i=100){
sum=sum+i;
i++;
}
printf("%d\n",sum);
return0;
}
【例6-3】統(tǒng)計從鍵盤輸入一行字符的個數(shù)。
#includestdio.h
intmain(void){
intn=0;
printf("inputastring:\n");
while(getchar()!='\n')n++;
printf("%d",n);
return0;
}
本例程序中的循環(huán)條件為getchar()!='\n',其意義是,,只要從鍵盤輸入的字符不是回車就繼續(xù)循環(huán)。循環(huán)體n++完成對輸入字符個數(shù)計數(shù)。從而程序?qū)崿F(xiàn)了對輸入一行字符的字符個數(shù)計數(shù)。使用while語句應(yīng)注意以下兩點。1)while語句中的表達(dá)式一般是關(guān)系表達(dá)或邏輯表達(dá)式,只要表達(dá)式的值為真(非0)即可繼續(xù)循環(huán)。
#includestdio.h
intmain(void){
inta=0,n;
printf("\ninputn:");
scanf("%d",n);
while(n--)printf("%d",a++*2);
return0;
}
本例程序?qū)?zhí)行n次循環(huán),每執(zhí)行一次,n值減1。循環(huán)體輸出表達(dá)式a++*2的值。該表達(dá)式等效于(a*2;a++)。2)循環(huán)體如包括有一個以上的語句,則必須用{}括起來,組成復(fù)合語句。
while循環(huán)的一般形式為:
while(表達(dá)式){
語句塊
}
其中表達(dá)式稱為循環(huán)條件,語句塊稱為循環(huán)體。
while語句的意思是:先計算表達(dá)式的值,當(dāng)值為真(非0)時,執(zhí)行循環(huán)體語句;執(zhí)行完循環(huán)體語句,再次計算表達(dá)式的值,如果為真,繼續(xù)執(zhí)行循環(huán)體??這個過程會一直重復(fù),直到表達(dá)式的值為假(0),就退出循環(huán),執(zhí)行后面的語句。其執(zhí)行過程如下圖所示:
用while語句計算1加到100的值:
?
12345678910
#includestdio.hintmain(void){??inti=1,sum=0;??while(i=100){????sum+=i;????i++;??}??printf("%d\n",sum);??return0;}
運行結(jié)果:
5050
代碼分析:
1)程序運行到while語句時,因為i=1,i=100的值為真,所以執(zhí)行循環(huán)體;執(zhí)行結(jié)束后i的值變?yōu)?,sum的值變?yōu)?。
2)接下來會繼續(xù)判斷i=100是否成立,因為此時i=2,i=100成立,所以繼續(xù)執(zhí)行循環(huán)體;執(zhí)行結(jié)束后i的值變?yōu)?,sum的值變?yōu)?。
3)重復(fù)執(zhí)行步驟2)。
4)當(dāng)循環(huán)進(jìn)行到第100次,i的值變?yōu)?01,sum的值變?yōu)?050;因為此時i=100不再成立,所以就退出循環(huán),不再執(zhí)行循環(huán)體,轉(zhuǎn)而執(zhí)行while循環(huán)后面的代碼。
再看一個例子,統(tǒng)計從鍵盤輸入的一行字符的個數(shù):
?
12345678
#includestdio.hintmain(){??intn=0;??printf("Inputastring:");??while(getchar()!='\n')n++;??printf("Numberofcharacters:%d\n",n);??return0;}
運行結(jié)果:
Inputastring:c.biancheng.net
Numberofcharacters:15
本例程序中的循環(huán)條件為getchar()!='\n',其意義是,只要從鍵盤輸入的字符不是回車就繼續(xù)循環(huán)。循環(huán)體n++;完成對輸入字符個數(shù)計數(shù)。
do-while循環(huán)
除了while循環(huán),在C語言中還有一種do-while循環(huán)。
do-while循環(huán)的一般形式為:
do{
語句塊
}while(表達(dá)式);
do-while循環(huán)與while循環(huán)的不同在于:它會先執(zhí)行循環(huán)體,然后再判斷表達(dá)式是否為真,如果為真則繼續(xù)循環(huán);如果為假,則終止循環(huán)。因此,do-while循環(huán)至少要執(zhí)行一次循環(huán)體。其執(zhí)行過程可用下圖表示:
用do-while計算1加到100的值:
?
12345678910
#includestdio.hintmain(){??inti=1,sum=0;??do{????sum+=i;????i++;??}while(i=100);??printf("%d\n",sum);??return0;}
運行結(jié)果:
5050