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