1樓:匿名使用者
自己對照看一下。
main()
,b[15]=,*p=a,*q=b;
int i;
for(i=0;i<15;i++)
*(p+i+6)=*(q+i);
printf("%s\n%s\n",a,p);}
2樓:
首先你的printf("%s",a[22]);肯定報錯列印後面接陣列名,a[22]陣列訪問越界;
應該printf("%s\n",a);
還有你的"hoello!"有7位,你在傳值的時候*(p+i+6)=*(q+i); //i=0時,*(p+i+6)= "!",也就是說你把『!
』 這個字元覆蓋了,用一個strlen(a)就不用擔心這種問題了。
main()
;char b[15]=;
char *p=a;
char *q=b;
int i;
for(i=0;i<15;i++)
*(p+i+strlen(a))= *q++;
printf("%s\n",a);
printf("%s\n",p);}
我用c語言編了程式,問題和我的方案如圖,但是按回車卻什麼都不輸出,這是為什麼啊,請問哪裡錯了啊
因為題主在內層的第三個 while 迴圈,也就是 while p 1 中改變了全域性變數 i 的值,而 i 不僅是輸出結果,還是最外層 while 迴圈的計數器,所以這個值一旦被改變整個迴圈就會混亂,最後出現死迴圈,導致程式無限執行無法輸出結果。所以題主需要一個 i 的副本來完成上述迴圈,而不改變 ...
C語言中處處楊輝三角形的程式,C語言中處處楊輝三角形的程式
11 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252...
C語言中的小數問題,我看到書中有的程式用到除法時,如1 0 2 a b c ,分子是精確到小數點後一位
1.0 2 a b c 上式中的分子1.0並不是精確到小點後一位,而是告訴編譯器此處是浮點運算,而不是整數運算。如上式如果變成1 2 a b c 那麼首先在計算1 2時,編譯器將之看成是整數運算,這時,結果不是0.5,而是0,所以1 2 a b c 的結果為0 至於 b 2 a 其結果要看b和a兩個...