C語言輸入乙個陣列後將陣列裡的數相加,為什麼輸出結果不對?

2025-02-25 12:35:04 字數 3542 閱讀 8031

1樓:聽不清啊

程式當中一共有三個錯誤。第一,定義的浮點數。

變數sum沒有初始值,應該在定義的時候給他賦初始值為0。第二拍畝,迴圈體沒有加花括號,導致只有讀入語句是執行迴圈的,薯賀鬧而下面的累加到sum的語句則要到迴圈結束以後才執行一次,起不到累加的作用。數罩第三,格式化輸入語句scanf在給float型別輸入時是不能指定小數位數的(最多隻能限定總位數),應該使用%f格式符。

2樓:

在執行完 for (i = 0; i <=9; i++)語句後,i = 10

然後再執行 sum +=a[i] 一次的時候就是加上 a[10],當鄭弊然結果就是預設的 浮點數 了慶叢亂!

估計你想要的過程應該是在執行 for 循譽檔環每次的時候就累加一次,那你就應該把 sum +=a[i] 語句放在 for 語句塊({}中才合適。

3樓:帳號已登出

代州歷碼中這個語句"sum+=a[i];"應放冊早搜睜灶在for迴圈體裡面,這時因為語句數量是2,所以應該用大括號將它們括起來。

4樓:網友

有兩個小問題:

sum應該初始化為0,像。

sum=0;

for迴圈巖戚此粗迅寫錯了,改成。

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

scanf("仔悶%f",&a[i]);

sum+=a[i];

5樓:創億百家

需仔滑要把後面那個sum+=a[i]用花括號括號和前面那個語句連起來 放到前面鬧塌那個for語句裡 作為念彎臘for迴圈體。

c語言想輸入乙個陣列,然後輸出這個陣列,這樣為什麼不行

6樓:冀峰馬躍

陣列a中有三個元素,即a[0],a[1],a[2];在輸出的時候a[3]下標越界。

要想輸出陣列中的所有元素,必須藉助迴圈把陣列中的元素逐個輸出;例如:

main(),i;

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

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

我編得這個這個c語言程式,即輸入乙個3*3陣列,輸出原陣列及求和。其他都沒問題,就是求和的時候出錯。

7樓:網友

陣列下標操作含義你明白嗎?

a[3][3] 是乙個常指標,不是整個陣列。

一般陣列引數是這樣傳的 void add(const int* a, const size_t num), 第乙個是陣列指標,第二個表示它的長度。二維陣列類似。

有a[3][3]做引數這樣搞得嗎?

8樓:網友

額,樓主,你這樣寫,**能通過嗎,二維陣列不能這樣傳遞的。

改為:m=add(a);

9樓:網友

m=add(a),傳遞陣列時傳遞陣列的首位址,即陣列名。

c語言 將檔案中的數字輸入到乙個二維陣列中為什麼輸出的結果不對???

10樓:網友

fscanf(fv, "%d,", sys[h][g]);應該是吧。

另外陣列sys最好定義為int型。

c語言給乙個陣列賦值完畢後,輸出這個陣列,**錯了?

11樓:王愛飛

你執行的時候應該是報「記憶體不能為讀」之類的溢位錯誤,在linux系統上提示為「段錯誤」,**應該改為下面的樣子:

#include

#include

int main()

for(i = 0; i < 10; +i)return 0;}

12樓:網友

printf("%d",a[10]);

這樣陣列越界了,即使不越界,也只輸出了乙個而已for i=0; i<10; i++

printf ("%d",a[i])

13樓:無敵大寶石

你定義的陣列a[10]是從a[0]到a[9]而之後輸出a[10]就溢位越界了,所以不對。

c語言的乙個關於陣列的問題.為什麼輸出結果不一樣?????

14樓:侯又聊靜婉

array[j]!=0'是乙個不確定條件,因為陣列中沒有這個值,所以j會一直加,直到遇到空,然而**有空,誰也不知道。

用c語言從檔案裡面讀入資料並儲存在陣列,為什麼陣列前後輸出資料不一樣?

15樓:網友

這種情況通常是檔案讀寫操作錯誤,讀寫是不匹配,可以把檔案操作部分的**貼上來看看。

16樓:沈奕浪

這種你把**發上來才能找的出來。

c語言陣列的輸入和輸出不一樣啊,顯示沒有錯誤

17樓:網友

一樣啊,除了你自己打錯的一些地方,程式本身應該沒什麼毛病,只不過是你的輸出沒有加分隔符,所以三個整數連在一起輸出了。

18樓:網友

如果想逆序輸出將第二個for(i=0;i<3;i++)改為。

for(i=3;i>0;i--)如果直接輸出的把第二個for(i=0;i<3;i++)去掉。

初學c語言陣列,輸入四個數,輸出的為什麼不對

19樓:網友

陣列越界了,而且不是輸入4個數的。

>for(i=0;i<4;i++)

scanf("%d",&a[i]);

20樓:葶葶毓荔

scanf("%d",&a[4]);這行是不對的,首先a[4]就是不對的,只能到啊[3],其次,這語句只能輸入乙個數,應該用for語句輸入,即:for(i=0;i<4;i++)

scanf("%d",&a[i]);

21樓:網友

你還要給輸入加個迴圈。

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

要不然你裡面有4個資料,但是你只輸入了a[4]這乙個資料,他怎麼顯示的了全部呢?

再說你下從0開始,你輸出只能看到a[0]-a[3]所以你給a[4]複製你也看不到。

22樓:網友

輸入陣列的方法錯了,你這樣只能輸入一次,而且輸入的是a[4],顯然越界了。

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

scanf("%d",a+i); //也可以寫成 scanf("%d",&a[i]);

23樓:孫祥and孫祥

scanf("%d",&a[4]);你把所有的數輸入到a裡了,你可以這樣。

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

scanf("%d",&a[i]);

要想連續輸入的話可以用字串與整型數之間的轉換char a[5];

int i;

scanf("%s",a);

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

printf("%c",a[i]);

怎樣將一個陣列逆序輸出?將一個陣列逆序輸出

從最後一個元素,逆向遍歷到陣列的0元素,逐一輸出即可實現。1 建立陣列 2 輸入值 3 逆序遍歷輸出陣列。樓上的有我認為有些問題,我改了一下。include void main void 假設為你的陣列。int i 10 while i 0 將一個陣列逆序輸出 includeintmain retu...

c語言程式設計 輸入元素的陣列,輸出這個陣列的最大值,最

include int main for i 0 i 5 i arv sum 10.0 for i 0 i 5 i for i 0 i 5 i printf n printf 最大值為 2f 最小值為 2f a 0 a 4 printf n printf 2f n arv printf n retu...

c語言一個將陣列傳遞給函式的程式不懂?求解!

int largest 裡面兩個引數有什麼用?一個是陣列,一個是陣列長度。為什麼if 語句中num array count 要大於biggest 函式本身是為了找到陣列中最大的數,迴圈查詢,如果找到比當前最大的數biggest更大的數,則更新biggest,也就是下一句 biggest num ar...