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 的偏移數就...