當前位置:係統粉 > 電腦問答 > 其他問答 > 這個c的for語句是不是特殊用法

這個c的for語句是不是特殊用法

提問者:暖晨姑娘  |  瀏覽 次  |  提問時間:2017-03-22  |  回答數量:3

這個c的for語句是不是特殊用法main() {void squ(char a[],char b[]); char s1[20]="I am a boy",s2[20]="you are a boy"; squ(s1,s2); printf("\n%s",s1); } void squ(char x[],char y[]) {int i=0,j=0; while(x!='\0') {while(y[j]!='\0') {if(x==y[j]) {for(j=i;x[j]=x[j+1];j++); i--; break; } j++; } i++;j=0; } } 首先它要做的問題是把前一個句子中出現的於後一個句子中的相同字符刪除,運行結果是 Im, 表示對for(j=i;x[j]=x[j+1];j++)此句很不理解,它不是連循環的格式都不是嗎 這是清華出版社2005年11月的《c語言程序設計》p141的一道例題 求各位幫忙 按我的想法,另外寫了一個,始終不對,做法如下: main() {void squ(char a[],char b[]);    char s1[

已有3條答案
斜翼天使

斜翼天使

回答數:209  |  被采納數:111

2017-03-22 10:33:06
for的語法是for(表達式1;表達式2;表達式3)
編譯後變成
表達式1;
循環開始:
表達式2;
if 執行結果==0 goto 結束
...//執行循環內容
表達式3;
goto 循環開始
結束:
隻要滿足for的括號裏有3個表達式(或兩個分號)就是正確的
讚 20
令狐澤

令狐澤

回答數:54  |  被采納數:108

2017-03-22 11:46:20

版主,我從別處得到答案了,在這裏和大家分享哈!下為解答者的回複,至於我寫的為啥不對,讓我再想想吧

發信人: mllml (馬連良 夢露), 信區: Program
標題: Re: 這個c程序看不懂
發信站: BBS 蘭大西北望站 (2012-03-03 19:48:21 Sat), 站內

你是說for 裏麵的這句麼?:x[j]=x[j+1]

這句的意思是:將x[j+1]的值賦給x[j],然後判斷x[j]是否是0:如果是0,則循環終止,如果是非零,則循環繼續。

這裏涉及到C的一個概念:表達式或者賦值語句本身是有值的,並且這個值可以判斷語句的條件。

比如初學者經常犯的錯誤: 把if (x==15) {...}
誤寫成: if (x=15){...};這時候表達式x=15的返回值是15(非零),因此條件為真,所以在任何情況下都會執行if所包含的語句。

同樣的,如果錯把if (x==0){...}寫成了 if(x=0){...}那麼if裏的語句就永遠不會執行了。

這個問題裏for的寫法等同於:

for (j=x; x[j]!='\0';x[j]=x[j+1],j++){...}
或者:
for (j=x; x[j];x[j]=x[j+1],j++){...}

那個例子的寫法比較簡潔,但是可讀性比較差,一般不提倡為了一點點速度犧牲可讀性。
讚 5
曲楚珩

曲楚珩

回答數:162  |  被采納數:126

2017-03-22 17:50:28
就是個普通的用法循環的嗎,隻不過是引用的數組負值而已,的
讚 16
解決方法
版權信息

Copyright @ 2011 係統粉 版權聲明 最新發布內容 網站導航