一道C語言問題,一道c語言問題

時間 2022-05-19 12:40:07

1樓:程銘龍

看程式先看main函式

int a,b,c;定義了3個整型變數;

然後分別呼叫了3次sub函式;

再看sub函式

sub (int x,int y,int *z)因為c語言的函式呼叫過程中是在棧上開闢的記憶體空間,所以試圖對引數本身做的操作在函式被呼叫結束之後將無意義。所以該函式要對z變數進行操作所以要取其位址,因為改變的z值是在棧記憶體上main函式位置的z ,因為函式呼叫結束之後變數的值則被修改。

再次看這個sub函式,函式體很簡單,就是z=x-y;

所以3次呼叫sub函式 abc的值將不難理解;

sub(10,6,&c); c = 10 - 6 = 4;

因此printf(「%d %d %d\n」,a,b,c);

程式的輸出結果為: 0 4 4

2樓:匿名使用者

先看主函式,這裡sub(10,6,&c);表示將呼叫函式sub,呼叫時x,y分別被賦值10、6,計算z等於4,返回值4給c;然後sub(8,c,&b);表示函式sub,呼叫時x,y分別被賦值8、4,計算z等於4,返回值4給b;最後sub(c,b,&a)不在重複,返回值0給a,最後輸出a,b,c所以是d)

3樓:匿名使用者

1.跳過sub函式,先從main函式看起。

int a,b,c是定義了3個整形變數。

接著是連著3此sub函式呼叫。

然後是列印a,b,c3個數的值

2.然後看sub函式。

sub (int x,int y,int *z) //引數x,y是整形,z是乙個整形指標,或者說乙個指向整形資料的位址

//z所指向的位址,存放的是x-y的值。

所以,sub函式就是求差了。講x-y的值存入到z所指向的地方。

3.然後再看main中呼叫sub的地方

sub(10,6,&c); // &c(資料c的位址)指向的地方(就是資料c),存放的是10-6=4

sub(8,c,&b); //同上,b的值是8-c=8-4=4;

sub(c,b,&a);//再同上,a=b-c=4-4=0結論:d

4樓:匿名使用者

sub (int x,int y,int *z)此函式中x,y均為整形變數,而z為整形指標,所以該函式中形參z可以改變main函式中實參對應的值

因此sub(10,6,&c);語句中c=4;

而sub(8,c,&b);語句中c=4,故b=4sub(c,b,&a);語句中c=b=4,所以a=0;

5樓:匿名使用者

c=10-6=4

b=8-c=8-4=4

a=c-b=4-4=0;

所以a,b,c 0,4,4

6樓:匿名使用者

sub的函式的用處是將x+y的值賦值給指標元素z, 所以我們來看主函式c=10-6;c=4返回值 把4的值給了c;同理 b的值變為8-c 即b=4,返回值把4賦給了b。最後a=4-4=0 所以輸出4 4 0 選擇d。

一道c語言問題

7樓:敏文漪萇林

大括號打錯位置了

#include

void

main()

for(i=0;i<5;i++)

printf("%d\n",a[i]);}

一道c語言問題

8樓:prince白虛

樓主應該分清定義時的int *p;和一般語句*p;的區別。

前者的*p中的*僅僅是乙個識別符號,告訴你這是乙個指標變數,用於區別於一般變數。

而後者的*p中的*是乙個單目運算子,用於找到位址在記憶體中所標記的區域。

由於題目中的*p=&b是在定義語句中,所以其實際意義是指「針變數p指向b的位址」。

另外補充,在作定義int a,b=2,*p=&b;後p=&b

*p=2

望採納。

9樓:天下

是int *p=&b

*p=b

p等於b的位址

所以選b

一道c語言的問題

10樓:惠淑懿斯禎

//我猜想你的程式目的是想輸出1到100之間的非素數。如果是這樣的話,那麼程式中有幾個錯誤

#include

void

main()

}if(n%5==0)

printf("\n");}

一道c語言問題?

11樓:匿名使用者

先求通項公式,這樣可以讓時間複雜度降到最低:

如果n為奇數:原式=1+2+3+……+n - 2*(2+4+6+……+n-1)=(n+1)*n/2 - (n+1)*(n-1)/2=(n^2 + n - n^2 + 1) / 2 = (n+1)/2;

如果n為偶數:原式=(n+1)*n/2 - 2 * (2+4+……+n) = (n^2 + n) / 2 - (2+n)*n/2 = (n^2 +n - 2n - n^2)/2 = -n/2;

所以,程式得:

#include

int main()

printf("和為%d\n",sum);

return 0;}

12樓:匿名使用者

#include

int main()

printf("和為%d\n",sum);

return 0;}

(如果是有的平台的題目,他不讓你輸入提示,不然算報錯,看著改一些就行)

13樓:小黑哎啊

#include

int main()

求助一道c語言問題

14樓:因特納雄耐爾一定會實現

f本身是個函式指標,前面的* 要麼不加(如選項a),要麼一定要和f用括號括起來.

f=add,而add函式的返回值是int,不是指標型別,d中的* 是和add的返回值結合,add的返回值不是指標,無法結合,編譯時一定會有錯誤資訊彈出。

建議你自己用編譯器輸入一次,然後編譯看看反饋資訊,這樣記憶會更深刻.

一道C語言問題

c語言是從右向左解釋算式的。其實,像y x x 這類的計算語句在實際應用中是很少用到的。因為這樣算式的結果依賴於編譯程式的解釋。而不同廠家出品的編譯程式往往在細節上面是不一致的。所以對這類語句不建議初學者過多研究。你要搞清楚自加在左邊和在右邊的區別。在你給的式子當中,有個 x,所以在計算的時候,先計...

請教一道C語言問題

結構體中的各個成員在儲存時是相鄰的,所以變數i和p是相鄰的。int p s.i p 0 4 p 1 3 p指向s.i之後,p 0 就是s.i,而p 1 就是s.p,因此,這三行過後,s.p指向位址3 這是乙個非法位址 s.p p s.p 1 1 s.p 0 2 這裡先讓s.p指向p所指向的位址,也就...

一道c語言ACM錄入問題,acm的一道c語言問題

acm這些題目不需要先儲存輸入,最後再一次性輸出。直接邊處理,邊輸出就行了。然後像這種型別的輸入,如下。while scanf d n n 0 小於100,你在a i 90 處放行的個數真的好嗎。acm的一道c語言問題 這題的意思是讓你從幾幅圖中提取背景。其實就是很多畫素點,要提取這攝像頭中的背景,...