有關C 語言正負數的問題?
讓使用者重複輸入整數,當輸入9999時,表示輸入結束。
計算並印出這些輸入數字中「所有正整數的平均值」。
不包含零及負數。
輸入整數 2
輸入整數 5
輸入整數 -3
輸入整數 8
輸入整數 9999
平均值是 5.000
以下是自己寫的,不知哪裡寫錯了,各位大大能幫個忙。
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char* argv[])
{
int i,j,num[20],count=0;
float sum=0;
for(i=0;i<=19;i++)
{
printf("輸入整數(最多20個整數):");
scanf("%d",&num[i]);
if(num[i] == 9999)
break;
}
for(i=0;i<=num[i];i++)
{
if(num[i]>0 && num[1]!=9999)
{
sum=sum+num[i];
count++;
}
else
continue;
}
sum=sum/count;
printf("平均值是:%f\n",sum);
system("pause");
return 0;
}
2 則回答
最佳解答
看一下這段
for(i=0;i<=num[i];i )
{
if(num[i]>0 && num[1]!=9999)
{
sum=sum num[i];
count ;
}
else
continue;
}
num[1]!=9999 把他改成num[i]!=9999,你不小心打錯
你主要錯誤的地方在以下
你在
for(i=0;i<=num[i];i )
{
if(num[i]>0 && num[i]!=9999)
{
sum=sum num[i];
count ;
}
else
continue;
}
這段的上方加入以下程式碼
for(i=0;i<20;i++) printf("%d\n",num[i]);
把陣列中的值都看一下
你大概就明白了
2007-08-12 18:44:07 補充:
你的想法是
宣告陣列,把值放入,然後用9999當結束,ok
假設像你題目一樣
輸入整數 2
輸入整數 5
輸入整數 -3
輸入整數 8
輸入整數 9999
那麼
num[0]會是2
num[1]會是5
num[2]會是-3
num[3]會是8
num[4]會是9999
那麼num[5] , num[6] ... num[19] 的值是多少呢??
他們是一堆垃圾值
在來看你求總和的方法
你求總和的方法是
找出 [陣列中所有] 非負數 且 非9999 的 值 之總和
所以~~
你會把那些垃圾值也加進去
解決方法
1.在一開始輸入整數之前,把陣列的所有值都初始為0
或
2.在做總和的時候,遇到9999就直接break(而不是continue)
你有宣告j,就拿來用吧~你在加總的那段可以改成這樣
for(j=0;j<=19;j++)
{
if (num[j]>0)
{
if(j!=i)
{
sum=sum+num[j];
count++;
}
else
break;
}
}
不過事實上,這樣的程式最多只能輸入19個整數,因為要輸入9999,表示輸入結束