C語言問題,跪求詳解

2023-01-03 22:56:21 字數 824 閱讀 3759

1樓:

輸出的結果為: how are you? how

a[20]和b[20]是陣列,a和b是陣列名,20代表陣列的長度(沒有20個長度後面直接布\0),陣列名本身代表該陣列的首地址,因此scanf函式中的a,b本身就是地址,不用寫成&a,&b。

另外,關於結果為什麼不是how are you? how are you?,那是因為scandf輸入流中遇到空格符或是換行符就會自動終止輸入,這也是scanf的一個缺點,但是用gets()函式就不會出現這樣的問題,它允許輸入空格,遇到換行符才會終止。

2樓:

char a[20]="how are you?",b[20]; //這句是定義了兩個字元陣列,並給a賦了初值

scanf("%s",b); //取地址符用在變數前代表變數的地址,這裡b與&b[0]等價,直接用陣列名可表示此陣列首個元素的地址

3樓:匿名使用者

scanf("%s",&b); 這樣看看

4樓:匿名使用者

a和b是陣列名,在你現在這個環境下使用的話會被當成是陣列第一個元素的指標。

輸出將會是how are you? how。因為%s這個說明符將會被空字元(空格、換行、製表等)隔斷。

所以,用scanf加%s的組合只能讀入一個「單詞」,不能讀入一整個「句子」。

想讀入一個「句子」,可以用fgets或者gets

5樓:匿名使用者

scanf("%s",b);

%s看到空格就停止。所以,只讀到how就停下來,然後輸出。

C語言問題求詳解

2 2與2 2有什麼區別?是邏輯與運算子,對於a b,當a和b都是非0時,a b返回1,否則返回0,即 只返回1 代表真 或0 代表假 且 是短路運算子,當a為0時,不再執行表示式b。而 是按位與運算子,對於a b,每次都要執行表示式a與表示式b,且a b的結果是由按位運算計算後確定的,不只有0和1...

C語言,要詳解

到scanf為止應該不用解釋 下面的一大串到if leap 為止是對閏年的判斷解釋 先判斷year是否能整除4 1.若不能,leap賦值為0 2.若能 判斷year能否整除100 i.若不能,leap賦值為1 ii.若能,判斷year能否整除400 一若能,leap賦值為1 二若不能,leap賦值為...

C語言第9題,求詳解,C語言選擇題,求詳解

小寫字母的ascii碼比同一字母的ascii碼小32。a a 就ascii碼值而言,就是 32。所以,ch ch a a ch a a ch 32。即ch的值就是 g 字母是按順序 bai排列的,小寫字母du用zhi a 加上 相對 a 的偏移dao數內就是相應的字母,大寫字母相容對 a 的偏移數就...