關於C語言的一個問題,關於C語言的6個問題

時間 2023-03-27 03:35:14

1樓:網友

值的互換不一定需要中間變數。

但你所說的交換記憶體地址的話,不通過中間變數挺難做得到。因為c語言沒有直接交換的語句。

所以,可以通過以下方式來進行值交換。

void swap(int* a,int* b)void main()

雖然n和m的值是互相交換了,但是它們的各自的指標地址並沒有改變。

2樓:網友

當然要有中間變數了。

你想想 有兩瓶飲料 你要把這兩瓶中的飲料換下 那你不借助另外一個瓶子的話是不是換不過來。

所以兩個數字也如此。

他們都分別佔有自己的儲存空間 所以換的時候要新開闢一個儲存空間。

應該明白了吧。

3樓:匿名使用者

在我的印象中好像是的。

要想交換地址,而又不用中間變數,那就有點為難人了。

假如那個函式是。

void change(int a,int b)在交換過程中不用中間變數,根本都不可能。

但是如果你要想只是顯示的結果是 交換的 而不考慮有沒有交換地址的話你把輸出的順序交換一下。

printf("%d, %d",b,a);

也能達到相同的效果。

4樓:網友

可能有點難操作,不過可以提供給你一個不用中間變數互換值的方法。

x,y都為傳入的指標。

*x=(*x+*y)/2;

*y=2*(*x)-(y);

*x=2*(*x)-(y);

這樣原來的值就互換了。

5樓:網友

其實很簡單的了,計算機的記憶體中,就好象你拿了兩個不同的容器,裡面裝的不同的東西,你要把他們的內容互換,你怎麼辦?還不是先找個空的容器,把其中一個的東西倒出來啊?

關於c語言的6個問題

6樓:世紀網路

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

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

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

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

與double的最大精度是多少?

5.如何處理符號位?

6.多餘的小數位是被截斷還是舍入?

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

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

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

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

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

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

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

關於c語言的幾個問題

關於c語言的問題

7樓:萌妹說數碼

你好,稍等,需要時間。

#include int main();存放統計的個數 gets(a); for(i=0;(str=a[i])!0';i++)printf("小寫字母:%d",b[0]);printf("大寫字母:

%d",b[1]);printf("數字:%d",b[2]);printf("空格:%d",b[3]);printf("其他字元:

%d",b[4]);return 0;}

8樓:疏詩霜徐致

舉個例子:a身高有170,a考試成績為95分。

b身高有180,b考試成績為78分。

那麼你說,a比b高,還是b比a高呢!

因此這樣籠統的說是不行的!!!

所以我們得說:a的成績比b的成績高,b的個子比a的個子高;這樣才能明白到底是怎麼回事。

在結構體中a[i]中,a[i]有成績也有很多他的屬性說不清,那麼就用「.」表示「的」來講;

也就是a[i]「的"s=a[i].s!這樣就能具體到某個變數和屬性了!

9樓:功遐思曠申

inta=10

a+=a-=a-a

這個表示式的運算是從右向左,+-級別大於=(這裡是賦值)a-a就是a=10-10=0

a-=a-a

就是a=a-(a-a)=a-0=10

a+=a-=a-a

就是a=a+[a-(a-a)]=10+10=20第二個printf("%d,%d,%d",c+=c++,c+8,++c);

c+=c++是:

c++=5+1=6

c+c++=c+6=11

c+8是:c+8=13

++c是。++c=5這裡c先用咯才自加的。

所以printf語句輸出。

後面兩個再等等,我看看。

10樓:局梅鞠冬

:「inti=0,num=0;要分別寫等於。

答案:這樣做可以避免出現異常和浪費系統資源。

:「i=0要寫在什麼地方有規定嗎?」

答案:在c語言中有明確的規定,在for迴圈語句中只能這樣寫:inti;

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

或者。int

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

下面的寫法在c語言中是錯誤的:

for(int

i=0;i<…;i++)

11樓:世秀梅眭姬

inta=10

a+=a-=a-a

賦值運算。從右望左算!

也就是先算a-=a-a

也就是10-10,a-=10-10,a=10-0;所有這一部a-=a-a,是10

a+=10這一步。

就等於20了。

a=10+10

希望對你有所幫助!

不懂的地方追問我!

關於c語言的問題

12樓:滕秀愛宋辛

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

13樓:欽秀花風婉

intg(int

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

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

14樓:逢微多希慕

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

main()

main(void)

main(int

arg,char

*args)

voidmain()

voidmain(void)

voidmain(int

arg,char

*args)

intmain()

intmain(int

arg,char

*args)

最後一種是最規範的。

15樓:聶雅戴憶之

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

16樓:叢聰慕谷夢

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語言的幾個問題

17樓:從玉枝拱珍

1:字母只讀一個,而數字可以很多個一起讀。

(我汗,以前都沒注意著,c的題目越出越細了)

2.空格也是字母的一種如果是10

20ab,那麼10

3:那個逗號有,你輸資料的時候也要相應的有逗號,d裡z是double型,應該用%lf;

4:長度是3沒錯,逗號同上。

至於那個45678,45後面是不是有空格的啊。空格說的是數字取到這裡結束咯。浮點數列印的時候小數點後6~7位都打出來的,沒有實際價值。

5:輸入流。

%指的是一共有3位,包含小數點。

6:scanf裡沒有逗號,所以輸入的時候也不能有逗號,此題y=',這個資料時不確定的。

7:同5;一共4位,包含小數點,小數點後取兩位。

8:選a的話abc之間沒有空格,看了我上面的,第8題應該沒問題了。

9:字元型變數ch,能夠賦值給他的只有單個字元和小於255的數字,至於為什麼小於255,等你看了書後面的內容就懂了。

10:b選項指的是16進位制的ff,就是『\255』,asc碼裡是有這個字元的10:

18樓:閃蘭允未

你這麼多題誰會一下子答給你啊。

很浪費時間的。

如果你分為10個問題,一個問題5分,保證你10分鐘以內每個題都會有好答案,這麼多別人沒那麼時間和閒功夫。

我先幫你做2題,你先採納我的答案吧!

這兩個題是要看你的scanf中他們有沒空格,如果有空格輸入就要有空格,如果沒空格輸入也不需要有空格,你這是輸入進去的,我看一模一樣,估計是你不仔細造成的。

連輸入兩個數字當然要用空格隔開,不然那就是連成一個大數了。

19樓:萢萢

這種題目挺坑人的,基本都是在玩文字遊戲。

第一題中的c的意思是,如果一門程式語言要成為結構化程式,必須要具備順序、分支、迴圈這三種基本結構。比如:一個人要是人,就必須是人生出來的,而不是狗或者豬生出來的,因為基因不一樣。

這裡的順序、分支、迴圈結構就相當於基因。

第二題中的c的意思是,如果一個程式是由結構化程式語言寫的,那麼這個程式就是結構化程式,它不一定需要具備順序、分支、迴圈等基本結構,但是用來寫這個程式的程式語言一定是具備寫順序、分支、迴圈等基本結構能力的程式語言,也就是說如果把這個程式擴充套件,是可以寫出順序、分支、循序結構的。比如:一個已經出生了的人,由於天生殘疾,缺了胳膊斷了腿,雖然這樣,但是他仍然是一個人,因為他具備的基因是人的基因,只是不完全而已。

關於c語言的問題,一個關於c語言的問題

彬彬有禮 對於你的疑問,我一個一個幫你解決 1.因為5 9 代表整除取商,即結果為0 而 5.0 9 代表5除以9,即結果為0.555556 所以兩者結果完全不一樣。再比如 3 2 1,而3.0 2 1.5 2.double b 2這是對的,沒有必要寫成double b 2.0,因為系統會自動幫你轉...

關於C語言的問題,求教,一個關於C語言的問題,求教!!

冰雨vs冰霜 a b 是賦值 a b 是等號 這是新手長犯錯誤 c語言中經常犯的毛病!初學者必看!c 語言的最大特點是 功能強 使用方便靈活。c編譯的程式對語法檢查並不象其它高階語言那麼嚴格,這就給程式設計人員留下 靈活的餘地 但還是由於這個靈活給程式的除錯帶來了許多不便,尤其對初學c語言的人來說,...

關於C語言的細節問題,關於C語言的一個細節問題

不用每次都開闢記憶體空間,存放b c的值,編譯器可以做到將b c的結果存放在暫存器中,這樣既方便又高效。a 編譯器不可能把前者優化為後者,因為那樣做編譯的結果可能是錯誤的。 可能會快一點,但快不了多少,因為cpu運算是把資料從記憶體 或硬碟 取到暫存器裡,再運算的。執行a b c時並不會在記憶體中開...