關於C語言中的小問題,關於C語言中的一個小問題

2021-08-03 14:08:01 字數 2051 閱讀 8906

1樓:

其實我覺得你說得對,這個程式編的有些問題,你試著先輸出非空格的字元,程式會跳過

if(c == ' ')

這個判斷,然後lastc = c後lastc中就存有你之前輸入的字元,你在輸入空格下次lastc = c中就會存有空格。如果你先輸入空格,程式就會崩潰,應為lastc未定義,我用的vs2010已經試過了,你可以試試。望採納

2樓:匿名使用者

當輸入的第一個字元是『 』時,此時的lastc是0或其他隨機值(不要不是『 』就好),判斷成立。

當輸入的第一個不是『 』,繼續第二個字元(比如『a』)輸入,lastc=『a』,然後輸入第三個字元是『 』,此時依舊成立。

3樓:匿名使用者

因為while中最後一條語句已將c值賦給lastc了。

語言不是太嚴謹,因為如果第一次c==『』,而此時lastc並不是『』。

4樓:姑蘇丞燁

lastc = c;

lastc是記錄上次輸出的c,如果為空格則不輸出 空格,如果不為空則輸出空格。

整個程式是在輸出c而lastc只是起到標記的功能。

if(c == ' ')

起到將連續的多個空格用一個空格代替的作用。

5樓:匿名使用者

就是說如果輸入c之後,判斷上一個輸入的c即 lastc,如果上一個c不是空格,就輸出這次的c。採納吧。。。。

由於while迴圈,如果第一次迴圈時c是空格,if(c == ' '){ if(lastc != ' ') putchar(c); 而lastc不是空格,輸出,此時lastc = c;第二次迴圈時c是空格,if(c == ' '){ if(lastc != ' ') putchar(c); c、lastc都是空格,故不輸出,滿足將連續的多個空格用一個空格代替。。

6樓:匿名使用者

這個沒那麼難理解吧。lastc = c;這條語句就是把當前輸入的字元賦給了lastc,迴圈繼續進行,c接受了新的輸入字元,若當前輸入的c為空格時,用lastc判斷上一個輸入字元是否為空格,若lastc為空格,則連續空格只輸出一個,否則輸出空格。最後,再把c的值賦給lastc,進入下一次迴圈。

不過話說lastc沒有初始化。

7樓:匿名使用者

你可以試試啊,比如你輸入ab,那麼c就是b,lastc就是a

一個關於c語言中++a的問題

8樓:砍侃看

(++a)+(++a)+(++a);

這種表示式的寫法是抄很不好的,因為bai其結果是未定義的,不同du的編譯zhi器得到的結果可能不一樣。所dao以不建議這樣寫,而且對其討論沒有意義,因為你也不知道會得到什麼答案。答案有可能是22,也有可能是24。

因為都沒有錯。

為什麼是22?

因為你的編譯器是這樣處理的,

首先,對a自增,a就是6

再對a自增,這時a就是7

然後相加,注意相加的不是6和7,而是7和7,因為a就是記憶體的一塊,不可能既是6又是7,這時結果是14

再對a自增,a就是8了,然後14+8=22。

在csdn上有個帖子是討論這個問題的,你可以找找。討論的結果就是,這種表示式沒有任何意義。

9樓:兄弟連教育北京總校

首先++a是在用a前就被加了,a++則是在整個語句結束之後之後加的

int a=2

「printf("%d,%d\n",a,++a);」為什麼是專3,3而不是2,3呢 printf是從後往前看引數的,++a,a=3,再屬執行輸出。

「printf("%d,%d\n",++a,a);」為什麼是3,2而不是3,3呢 同理,先看到a,則a=2,然後看到++a,a=3,輸入。

「printf("%d,%d\n",a,a++);」為什麼是2,2,而不是2,3 先看到a++,但++要再整個語句結束之後++,所以a 都輸出2

「printf("%d,%d\n",a++,a);」為社麼是2,2,而不是3,3 先看到a,再看到a++,但是要在語句結束之後加

有關C語言的小問題,關於C語言的幾個小問題

line 69 函式showarr,parr是指向結構體的指標,你這裡要訪問的應該是它的成員陣列parr pbase void showarr struct arr parr ps1 這個問題在編譯階段通常會有警告的,因為printf格式符 d是整數,你給的parr i 跟它是不匹配的,會引起 fo...

關於C語言中棧的問題

可以參考這個 include include include int errorflag typedef structstack int isnumeric char s 判斷 是不是數字 int empty stack s 判斷stack是不是為空 void init stack s 初始化 st...

c語言程式設計小問題,C語言程式設計小問題

我的電腦 工具 選單 資料夾選項 檢視 頁 勾掉 已知檔案型別的副檔名 就可以顯示副檔名exe了 另外,這些檔案要到dos視窗 命令視窗 下執行才可以看到結果,如果在windows雙擊,程式執行終止後就會退出,當然視窗一閃就過了 首先,沒有.exe是因為你在 資料夾選項 中設定了 隱藏已知檔案型別的...