-
White Mouseybz,我對這個問題有乙個疑問:為什麼 scanf 在這裡要求 9 個條目? 不應該是8次嗎?
#include
int main()
int a[8], p;
printf("輸入 8 個數字:");
for (p=a; pfor (p=a; preturn 0;
在我修改後的程式中,迴圈次數相同,但是 printf 列印了 8 個數字,而 scanf 必須輸入 9 次,這是什麼原因?
我明白了原因 - 問題不在於迴圈次數,而是 - scanf("%d ", p);這裡有乙個空間! Scanf 跳過空格來讀取下乙個字元,因此您必須輸入另乙個數字。 此處的空格包括:
空格、製表符、換行符、回車符和分頁符。 只需刪除空格即可。
-
找到另乙個原因,你的程式沒有錯!
有一點需要注意,你說的是輸入8個數字,但是p關於輸入9個數字的問題,雙為什麼是對的,他的意見!
-
您給出的 C 程式有錯誤,*p='\0';p 應為小寫,並應更改為 *p='\0';
更正程式的結果是 C51
完整的程式和執行過程分析如下。
#include
void main()
int a=28,b;
char s[10],*p;
p=s;do
b=a%16;
if(b<10) *p=b+48;
else *p=b+55;
p++;a=a/5;
while(a>0);
p='\0';
puts(s);
<>程序解析。
因為 a==28,p=s,p 指向 s[0],進入 while 迴圈,b=28%16=12,b>10,*p=12+55=67,所以 s[0]==c'(ASCII 程式碼 67),p++,p 指向 s[1],a=a 5=5
a==5,a>0,繼續while迴圈,b=5%16=5,b<10,*p=5+48=53,所以s[1]==5'(ASCII 程式碼 53),p++,p 指向 s[2],a=5 5=1
a==1,a>0,繼續while迴圈,b=1%16=1,b<10,*p=1+48=49,所以s[2]==1'(ASCII 程式碼 49),p++,p 指向 s[3],a=1 5=0
a==0,退出 while 迴圈,*p='\0',所以 s[3]==0'(string terminator),輸出字元陣列 s,所以結果是 c51
-
**為:int main()
最初,m=9,進入for迴圈,確定m>0,然後執行迴圈語句。
如果 9%3==0 為 true,則執行 printf 語句,首先 --m 得到 8,然後將 m 的值列印為
m--進入下乙個迴圈到7,確定m>0,執行迴圈語句。
如果 judgment, 7%3=1≠0, m--輸入下乙個迴圈為 6,判斷 m>0,執行迴圈語句。
如果 6%3==0 為 true,則執行 printf 語句,首先 --m 得到 5,然後將 m 的值列印為
m--輸入下乙個迴圈為4,確定m>0,執行迴圈語句。
如果 judgment, 4%3=1≠0, m--進入下乙個迴圈為 3,判斷 m>0,執行迴圈語句。
如果 3%3==0 為 true,則執行 printf 語句,首先 --m 得到 2,然後將 m 的值列印為
m--輸入下乙個迴圈為1,確定m>0,執行迴圈語句。
如果判斷,1%3=1≠0,m--進入下乙個迴圈為0,判斷m>0不成立,跳出迴圈,程式結束。
所以最終的輸出是:852
請注意,首先執行 --m--,然後返回 m 的值; m--首先返回 m 的值,然後執行 --; 看
-
總結。 你好親愛的,如果 n = 0,則返回第乙個元素的陣列 x,例如。
你好親愛的,如果 n = 0,則返回第乙個元素的陣列 x,例如。
問題 3. 答案是
你好,是的。
為什麼。 為什麼錯了。
你好,因為 c 沒有 ()。
-
ASCII 程式碼按順序列出。
例如,小寫字母順序:a、b、c、d、e、f、g,..x、y、z,相鄰字母之差為1,從a遞增至z
例如,大寫的順序回答:a、b、c、d,..x、y、z,相鄰字母之間的差值為 1,從 a 到 z 遞增
你不需要記住他們的程式碼是什麼,你只需要知道順序。
int x='f';
x-'a'就是這樣'f' - 'a' 。按 A、B、C、D、E、F、ASCII 碼差 5 的順序,'f' - 'a'等於 5。
x-'a'+1 等於 6。
a'+ 6 到 a、b、c、d、e、f、g、h、i、j,第 6 個字母的右邊是 g。
A、G
-
你好! 非常樂意為您解答。
源輸出為 a, g:
#include
main()
-
執行 m=a>b,如果條件為 false,則 m=0;&&& 前面是 0,n=c>d 不執行,所以 n=2
-
你的程式相當於下面的程式,我稍微改了一下,看得更清楚:
#include
#include
void fun (char*w,int m)}main()
按照你的意圖,我會把我評論的兩個陳述移到迴圈的末尾。 即:
雖然 (p1 是在你原來的基礎上改變的,但這就是它被改變成這樣的:
而(P1 樓層主參考。
祝你好運!
-
第一:看程式執行:
初始值為 a=1,b=2
1<8 所以 b=b+a=2+1=3
a=a+2=1+2=3
然後在 for 語句中執行 a++, a=4
4<8 所以 b=b+a=3+4=7
a=a+2=4+2=6
然後在 for 語句中執行 a++, a=7
7<8 所以 b=b+a=7+7=14
a=a+2=7+2=9
然後在 for 語句中執行 a++,a=10
如果 10 不小於 8,則執行 for 語句。 結果 10,14Second:在 for 語句中將 a++ 更改為 ++a,與上面的輸出相同。 因為 A++ 和 ++A 是在
是一樣的,不影響後續的判斷和結果輸出。
第三:以我的拙見,你認為輸出結果是9,14是因為你不理解clear for語句的執行嗎? 而不是誤會。
A++ 與 ++A。
-
我認為改為 ++a 後,b 的值發生了變化,a 仍然保持不變。
-
稍微了解一下:先用a++,再加; +a 使用前新增。