下面的程式為什麼得不到預期的結果,輸出的結果都是0,為什麼謝謝了

2022-10-08 15:18:27 字數 4114 閱讀 4733

1樓:

當然會是0,你又沒為a陣列再賦過值,只是開頭全為零,後邊當然還是零,不信你把這行int a[4]=,b[4]=;零改為5,後邊輸出就都是5了。如果你最後想輸出的是x陣列或者y陣列,倒有可能是你想要的結果。

另外,這一行x[j]=a[0]+i*(a[1]+i*(a[2]+i*a[3]));結果為零吧?x[j]=0+i*(0+i*(0+i*0)),不是零是什麼?你為ab陣列賦值為零隻能得到這個結果,如果把這一行的x陣列與a交換a[j]=x[0]+i*(x[1]+i*(x[2]+i*x[3]));倒是有意義的,因為你最終要輸出a和b陣列。

所以,你這個程式本身就有問題。

得把這兩行

x[j]=a[0]+i*(a[1]+i*(a[2]+i*a[3]));

y[j]=b[0]+i*(b[1]+i*(b[2]+i*b[3]));

都改了才會有你想要的結果。

2樓:匿名使用者

for(j=0;j<=3;j++)

}上面這段對x 和y的變化對a和b沒有任何影響,而且a和b裡取到的值也是0,x和y也都成0了

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

這段直接輸出了a 和b當然是0

3樓:祥龍九霄

看了你的資料的結果,想問一下你是不是想計算陣列a和b?

那就應該把

for(j=0;j<=3;j++)}改成

for(j=0;j<=3;j++,i+=2)你寫的每次x[i]的值實際上是a[0] + 6 * (a[1] + 6 * (a[2] + 6 * a[3]))的值,所以應該改了,別用雙迴圈。

4樓:匿名使用者

你 輸出的 是 a[i]陣列啊 定義的 時候 a陣列中本來 就都是0啊

你是不是 想輸出 x和 y陣列??

改一下 printf

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

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

5樓:

你這樣子寫肯定沒有值啊,你的ab陣列裡面的值都是零,怎麼會有值呢?

6樓:匿名使用者

你在迴圈裡並沒有對a賦值,相反x、y陣列被賦值為0了,最後你輸出陣列a,自然值是0

7樓:匿名使用者

怎麼樣才算預期結果?

下面的j**a程式中輸出結果為什麼是0,請講明一下原因,謝謝

8樓:匿名使用者

首先你呼叫了fermin方法

,這樣做並沒有改變i,只是在feimin方法內改變了i,方法執行完內,i仍然是0,接著i=i++,樓主知道容i++和++i的區別嗎?i++先把i的值賦給了i,然後i自己再自增,所以i還是0 ,如果是++i則會把++i的值賦給i,這樣就會輸出1了

c++輸出問題。為什麼下面程式的輸出結果為*8992*8992*8992$。而不是所預想的:*#*#*#$。求高手解答。緊急

9樓:

cout << 『# 』 ;此語句有問題,將#後空位去掉即好

10樓:

#include

void main()

cout << "$\n";

}//這樣就可以了

c語言 下面程式執行結果為什麼是0 而不是1 main() {int n[5]={0,0,0},

11樓:與子如初見

因為迴圈的時候當i等於k的時候退出迴圈了,根本沒有執行迴圈體n[i] = n[i]+1;這一句,所以n[k]的值為初始化的值,初始化的值為0.故輸出0,。

12樓:匿名使用者

因為當i=k時,for迴圈的條件已經不滿足,不會執行n[i]=n[i]+1。故n[k]還是0.

13樓:匿名使用者

如果需要1,則改成for(i=0;i<=k;i++)

14樓:殷明明孫楓

選cn=4;

相當於是這樣

intn=0;

while(n++<=2)

//先進行

n<=2判斷,再進行n++自增運算。n=3的時候,n>2,但還是會進行++自增運算,所以為回4

printf("%d",n);

下面程式執行後的輸出結果是

15樓:雪v歌

一開始,s被賦值,為2

接著3次迴圈,

第一次,i= 0,%2求餘為0做了else t= 5,a= 5,返回值8 (因為在內部呼叫,到了外面還是用a=3)

第二次,i= 1,a= 4,t= 4返回值8(外部a因前一次a++,所以為4)

第三次i= 2,a= 6,t= 6,返回值11(外部a因前一次a++,所以為5)[ 同理第一次使用else的時候a++了,所以不是5而是6了 ]

把三次返回值加起來,就是所輸出s 29= 8+8+11+2注意static的用法,區分區域性和全域性~

關於union的c語言題目:寫出下面程式正確的輸出結果。謝謝了!

16樓:凌雲小紫冥

int和long一樣都是4個位元組,所以s->k取的就是i[0]的值。

printf("%c\n",s->c[0]) 算出是9和大小端有關,只有小端才是9。就是ansi char '9',換成十六進位制就是39。char[0]取了i[0]的低八位。

17樓:第一碗羊雜割

首先 union 和 struct 不同的一點就是一個 union 中的所有成員都是共用一個記憶體空間的,大小由成員中要求空間最大的來決定。也就是說你給其中一個成員賦值以後,其他成員就都是這個值,只不過因為成員型別不同導致這個值的表現不同。現在看這個程式,定義了一個 union

union  t;

所有成員的大小分別如下:

i: 2 * sizeof(int) = 2 * 4 = 8

k: sizeof(long) = 4

c: 4 * sizeof(char) = 4 * 1 = 4

可見最大的是那個整數陣列 i,佔 8 個位元組,所以這個 union t 的大小就是 8。

然後,你通過

s->i[0] = 0x39;

s->i[1] = 0x38;

給 i 陣列賦值,也就是 i 的前四個位元組儲存的是十六進位制整數 0×39,後四個位元組儲存的是十六進位制整數 0×38。因為 union 的所有成員共享一個記憶體空間,所以 k 和 c 的值同 i 的值是一樣的。然而 k 和 c 只有四個位元組的長度,所以後面的 0×38 就被忽略了,因為 0×39 已經佔據了前 4 個位元組。

也就是說,現在 k 的值是 0×39,c 的值也是 0×39。

然後看你的輸出

printf("%1x\n", s->k);

printf("%c\n", s->c[0]);

你要將 k 以十六進位制整數的方式輸出到螢幕上,c 以字元的方式輸出到螢幕上,也就是將 0×39 分別以十六進位制整數和字元的方式輸出到螢幕上。0×39 代表的十六進位制整數當然還是 39,而 0×39 所代表的字元是 '9'(注意這個 9 是字元而不是整數),這個你可以查一下 ascii 表看看十六進位制的 39 對應的字元是不是 '9'。所以輸出的結果自然就是 39 和 9 了。

下圖為 ascii 表的一部分,可見十進位制的 57,也就是十六進位制的 39 所代表的字元是 '9'。

為了更好理解 union,你也可以使用

printf("%c\n", s->c[4]);

列印出來 c[4],看看結果是不是 '8'。這是因為雖然定義 c 的長度是 4,但由於整個 union 在記憶體中的長度有 8,所以 c[4] 到 c[7] 這四個位元組在記憶體中仍然是存在的,而它的值就是剛才存在 i 中的第二個整數 0×38。然後因為十六進位制的 38 對應的字元是 '8'(見上圖),所以列印出 c[4] 的值是 8。

一點題外話是,包含系統標頭檔案時請使用

#include

而不是#include "stdio.h"

這樣會稍微提高執行效率。還有就是請讓 main 函式返回整數 0 而不是 void,返回 void 是不規範的寫法。

為什麼我得不到真愛,為什麼得不到真愛

有一句話叫 一切隨緣 真愛是自己把握的,想過為什麼得不到嗎?愛是相互的,愛是自私的但卻不能太過干涉對方,用心去愛另一半,不要奢求回報,真愛一定會降臨的!祝福你早日遇到你的真愛!不是得不到真愛,是自己沒留意 很多美好的事物,我們都曾經擁有過,但自己並沒覺得幸福,等到失去時才知道原來真愛就是那麼簡單 你...

這個C語言程式為什麼得不到想要的結果啊!求高手指教!在學校機房寫了一中午寫出來的老師留得作業

下面的 輸出結果是 0 1 2 3 4 5 6 8lz主要的錯誤是 沒有跳出迴圈跟指標下標 具體看 include define maxlen 100 typedef struct sqlist int listinsert sqlist p,int i,int x int locateelemen...

為什麼愛的得不到啊

幸福不會時時等著你,愛你的和你愛的人不是隨時可以出現,請你學會珍惜。當一個深愛著你的人為你而改變,那是因為他愛你,當你遇到一個人,他為你收起他的頑固脾氣 也因為他愛你,他把你的興趣也變成是他的興趣時 還是因為他愛你.喜歡一個人是沒有理由的,無悔的付出 都認為是值得的,只要能和相愛的人在一起。其實我們...