關於C語言的簡單問題,關於C語言的6個問題

時間 2023-03-22 19:05:07

1樓:弒緋

void的意思是空。

main()其實是縮寫,寫全是int main(),意思是函式又返回值。函式結束都會有return 0。意思是如果返回了乙個值,值等於0,那麼這個函式是能編譯的。

因為如果返回了0,說明函式能執行完。有些時候你會發現後面並沒有return 0,那也只是省略了,但實質是有的。

void main() 的意思是函式沒有返回值。同上相反。

函式後面的括號(main())的作用是設定匯入函式的值的形式引數。

在main()中,int和void區別不大,因為返回值的作用只是判斷是否能編譯。但如果不能編譯,即使沒有返回值,現在的編譯器也會報錯。

但如果不是主函式了,而是其它自定義函式就兩者就不一樣了。

例子。int str(void)

這裡返回值是b,所以函式要定義為int。如果返回值是其它型別,那麼定義的時候也需要定義成其他型別。

void str(void)

這個函式是沒有返回值的,它的作用就只是輸出字段。所以函式定義為void

2樓:匿名使用者

c語言裡,函式名前的型別如果省略,則預設為int,就是說main()相當於 int mian()。c是允許這樣的。

呼叫函式前,應該先宣告。int add(int x,int y); 把這一句放到main函式前即可。

關於c語言的6個問題

3樓:世紀網路

分類: 電腦/網路 >>程式設計 >>其他程式語言。

問題描述:1.域寬小於實際寬度時應如何處理?

2.預設的域寬與精度各是多少?

3.精度說明大於或小於實際精度時,應如何處理?

與double的最大精度是多少?

5.如何處理符號位?

6.多餘的小數字是被截斷還是捨入?

解析: 事實上,您問的問題比較泛,如果結合使用的編譯器型別和具體例子來問會比較好些。下面也只是泛泛而談。

1、域寬小於實際寬度時,通常輸出結果以實際寬度為準,如果需要以域寬來輸出,那麼實際結果需要截斷。比如將結果以實際寬度輸出到某個字元陣列中,再截斷。

2、預設的域寬為8位,精度為6位。

3、精度說明大於實際精度時,輸出補餘;小於實際精度時,輸出截斷。

4、float的最大精度是10的負44次方;double的最大精度是10的負323次方。

5、整型資料的符號位出現在最高位元組的最高位;浮點型資料則出現在位元組中間的某個位上。不明白什麼叫如何處理符號位?

6、多餘的小數字是截斷和捨入取決於不同的編譯環境。應當結合自己使用的編譯環境做一下測試即可明白。

關於c語言的幾個問題

關於c語言的問題

4樓:滕秀愛宋辛

a+=f(g(a));開始a=0;

首先呼叫g(a),由於g(i)引數是傳位址,故i在函式體內的修改會保持。故g(a)返回1,返回後a=1;

接著呼叫f(g(a))=f(1),f(i)引數是傳值,i在函式體內修改不會影響外部i的值。f(1)返回2,返回後a=1;但同時a+=f(g(a))=a+f(g(a))=1+2=3;

然後g(g(b)),此時b=0

首先呼叫g(b),返回1,返回後b=1;

再呼叫g(g(b))=g(1),返回2,返回後b=1,因為g(g(b))傳進去的引數是g(b)返回值,並不是b,故在外層g函式執行過程中b沒有改變,還是1;

b+=g(g(b))=b+g(g(b))=1+2

f(h(c)),此時c=0

首先呼叫h(c),返回1,返回後c=0;因為此時傳入引數為int,函式引數為char,要進行型別轉換,此過程會產生副本,即產生乙個c的副本,為char型別,所以此時在函式體中修改c的副本,不會影響外部c的值。

再呼叫f(h(c))=f(1),返回2,返回後c=0

c+=f(h(c))=0+2

5樓:欽秀花風婉

intg(int

&i)是乙個函式,其引數是乙個整型的引用,也就是在函式中對此引數進行修改也會影響到實際引數的值。

c+=f(h(c));是乙個表示式,把它就是c=c+f(h(c))這種形式。

6樓:逢微多希慕

main函式有多種寫法的,以下幾種都可以:

main()

main(void)

main(int

arg,char

*args)

voidmain()

voidmain(void)

voidmain(int

arg,char

*args)

intmain()

intmain(int

arg,char

*args)

最後一種是最規範的。

7樓:聶雅戴憶之

1,2,慢慢看,細細看,希望能夠幫到你。

8樓:叢聰慕谷夢

c語言的程式都是靠函式構成的,而函式是有自己的型別的。main作為主函式,函式前面的東西即為函式的型別。

用void形容的函式是無返回值函式,即voidmain()則無需返回乙個值,但是省略了void也是可以的,不過嚴格來講,無返回值函式規範的還是要加void的,如果是個有返回值的函式則必須要用相應的型別來定義。 main()

可以代替。void

main(),只要在在程式的最後一條加上。

return;,void

main()

有時不能代替。

main().完全可以不用viod

main().在vc++中viod

main()

沒有返回值。main()

intmain()

有返回值。如果只。

run這個程式,用void

main().如果用函式system

call這個程式,有時要返回值。要用intmain().在vc++中,如果用intmain().在程式的最後一條是return();望。

c語言的簡單問題

9樓:倒霉熊

1:a (bcd都需要後面的括號中作為關鍵字來指明)2:b (c語言的函式都是平行的,不能巢狀,呼叫可以巢狀,a呼叫b,b呼叫c。)

3:c (函式有返回型別,引數之間以逗號分隔,且都需要指明型別,不能省略,宣告需要分號結束)

4:c (靜態陣列,大小是固定的,你宣告是幾個元素就是幾個元素,下標不能越界,元素型別相同)

10樓:匿名使用者

1:a (變數分為動態儲存和靜態儲存,包括auto,static,register,extern,auto變數在呼叫的時系統自動分配空間,結束時自動釋放儲存空間,關鍵字auto可以省略;static呼叫結束後不消失,仍保留原值,意思就是變數值不變,必須用關鍵字static,register是為了提高執行效率而宣告的變數,變數放在暫存器中,也要關鍵字;extern是為了擴充變數的作用域,意思就是在乙個函式裡面宣告的乙個變數在另乙個函式中也能用)

2:b(程式的執行是從main函式開始的,其他函式只能在main函式中宣告,不能巢狀定義,但可以巢狀呼叫,如遞迴呼叫演算法)

3:c(函式的宣告在主函式main中相當於一條語句,所以必須有分號結尾,定義函式時,括號裡的引數必須每個指明型別,變數名都可以不寫,但是必須指明引數型別,這是為了和返回值匹配,如double fun(int ,int );都是正確的)

4:c(在標準c語言中,只要定義乙個陣列,那麼陣列的長度就定了,在c++中陣列的長度可以動態分配;陣列元素的型別在宣告陣列的時候就已經定義了,比如int a[9],那麼a 陣列的元素全為int型;)

11樓:匿名使用者

1. a

c語言的變數儲存類有:自動類、暫存器類、靜態類和外部類。

關鍵字auto加在變數名及其型別前,用來說明它是自動變數。區域性變數是指在函式內部說明的變數(有時也稱為自動變數)。用關鍵字auto進 行說明, 當auto省略時, 所有的非全程變數都被認為是區域性變數, 所以auto實際上 從來不用。

區域性變數在函式呼叫時自動產生, 但不會自動初始化, 隨函式呼叫的結束, 這個變數也就自動消失了, 下次呼叫此函式時再自動產生, 還要再賦值, 退出時又自動消失。

2. b3. c

4. c7. a

關於c語言的問題

12樓:鷹弈

1、有定義:int n=0,*p=&n,**q=&p;,則以下選項中,正確的賦值語句是(d)

; b.*q=2; ;d.*p=5;

解:*p為一級指標,其中p為指標的位址,**q為二級指標,其中*q為指標的位址,只能給變數或指標變數賦值,不能給位址賦值,所謂位址,就是由acs碼構成,簡單的說,就是每個人都有乙個名字(位址)一樣,目的是要區分每個人(位址中儲存的值)。

2、若有說明:int n=2,*p=&n,*q=p;,則一下其非法的賦值語句是(d)

; b.*p=*q; ;

解:同上。3、有以下程式:

void fun(char *a, char *b)

main()

( char c1='a',c2='a',*p1,*p2;

p1=&c1; p2=&c2; fun(p1,p2);

printf("%c%c",c1,c2);

}程式執行後的輸出結果是(a)

a. ab b. aa c. aa d. bb

解:這是指標傳值(位址傳值),實參傳給形參,其實就是p1(實參位址)與a(形參位址)共用乙個位址,p2與b共用乙個位址,a=b並沒有改變位址a中儲存的『a』,而是讓*a指向位址b,進而改變或控制位址b中存放的值,所以c1=『a』不變,而(*a)++就是字元『a'的asc碼加1,也就是字元『b'那麼位址b中的值就變成了字元『b'。

4、以下程式執行後的輸出結果是___1_1_1_1___

main()

}解:上面的q等於1吧,當i=1;n[1]+q=n[0]*2+1=0*2+1=1;

i=2;n[2]+q=n[1]*2+1=0*2+1=1;

i=3;n[3]+q=n[2]*2+1=1;

i=4;n[4]+q=1;

5、有如下程式:

#include

main()

解:簡單的說就是以「w(寫生成)」開啟的檔案,檔案內的原始資料將被刪除。這東西不是一兩句就能解釋清楚。

13樓:匿名使用者

1. *p表示指標所指向的變數。因此可以可以直接賦值。

對於a,p表示指標,不能直接對乙個指標賦值乙個變數值。

對於b,*q表示指標同a

對於c,兩者型別不同,乙個二級指標乙個一級指標,不能直接賦值。

表示指標 *p表示指標指向的值,不能直接對指標賦變數值。

3。對於x而言,函式沒有地方改它的值因此結果為為原來的值a,函式的功能把y位址傳給a,並且把值加1,因此a+1=b;

不管怎麼運算元組中的數全是0因此輸出其實是q值。

"",w")的時候如果檔案不存在那麼就會建立檔案,如果檔案存在就會把內容清空。

關於c語言的問題,關於C語言的問題

鷹弈 1 有定義 int n 0,p n,q p 則以下選項中,正確的賦值語句是 d a.p 1 b.q 2 c.q p d.p 5 解 p為一級指標,其中p為指標的地址,q為二級指標,其中 q為指標的地址,只能給變數或指標變數賦值,不能給地址賦值,所謂地址,就是由acs碼構成,簡單的說,就是每個人...

C語言簡單的問題,C語言簡單的問題

岔路程式緣 結果是60。int p 4 的含義 宣告p是指向含有4個整型元素的一維陣列的指標變數。其中 星號 代表指標 圓括號 與後面的方括號搭配代表指向一維陣列 4一維陣列的元素個數 int代表一維陣列元素的變數型別為整型。本例來講,宣告p並讓p指向a,其實p就把陣列a分成了三個一維陣列 1.3....

關於c語言資料溢位的問題,關於c語言資料溢位的問題

你的程式是沒有問題的,但是輸入的時候應該輸入 15 30 45 而不是15 30 45 如果你確實輸入的是15 30 45 這種形式,那 麼檢查你的輸入法,在輸入螢幕上一定要是英文,這不是溢位的 問題,只不過當你沒按正常讀入值的時候等於沒有賦初值,沒賦 值就是乙個很大的負數,我鬱悶,這個咋還沒解決呀...