求二維陣列中負數的個數,為什么我運行完顯示的是0呢?
這是我的程式:
#include<stdio.h>
void average(int a[3][4]){
int i,j;
float ave=0.,sum=0,num=0,n=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++){
if(a[i][j]>=0){
num=num+1.;
sum=sum+a[i][j];
ave=sum/num;
}
else
n++;
}
printf("%.2f ",ave);
printf("%d",n);
}
int main(){
int i,j,sum=0,num=0,n=0,a[3][4];
float ave=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
average(a);
return 0;
}
uj5u.com熱心網友回復:
#include <stdio.h>void average(int a[3][4])
{
int i, j;
int n = 0;
float ave = 0.0, sum = 0.0, num = 0.0;
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
{
printf("%f",a[i][j]);
if (a[i][j] >= 0)
{
num = num + 1.;
sum = sum + a[i][j];
ave = sum / num;
}
else
n++;
}
printf("%.2f ", ave);
printf("%d", n);
}
int main()
{
int i, j, a[3][4];
float ave = 0;
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
scanf("%d", &a[i][j]);
average(a);
return 0;
}
我在你基礎上改得 你看看那些不同 注意資料型別
uj5u.com熱心網友回復:
我知道我的問題了,非常感謝uj5u.com熱心網友回復:
for(i=0;i<3;i++)//----%d改為%f--------------
for(j=0;j<4;j++){
if(a[i][j]>=0){
num=num+1.;
sum=sum+a[i][j];
}
else
n++;
}
ave=sum/num;//--------把求ave的運算式放在for回圈之外,這樣只執行一次就好----
printf("%.2f ",ave);
printf("%f",n);
VC++6.0除錯

請參考《C++中printf()函式的用法4》
希望能夠幫到你!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/80193.html
標籤:新手樂園
