C语言编程问题求解:输入一个四行五列的数组,要求算出平均值最大的一行以及平均值。请问逻辑错误在哪?

作者&投稿:禽复 (若有异议请与网页底部的电邮联系)
~ 你这个程序,第一个循环,你没有任何用处,循环那么多遍你计算的始终是第一行的值。你可以直接去掉循环max=a[0][0]+....+a[0][4].然后第二个循环,你要把if那个判断挪到循环里面去。不然你这样循环结束后total就等于最后一边的循环值,就是最后一行的值。你就只是把第一行跟最后一行做了比较,别的你都没比较。把判断大小的if放在循环里面。还有,你的循环其实只是循环了行,并没有设计列,所以把j的那个循环也可以去掉,一层循环就够了。我修改了一下,是这样
#include<stdio.h>
int main()
{ float a[4][5];
int i,j,t1;
float aver,max,total;
printf("请输入数组\n");
for(i=0;i<=3;i++)
{
for(j=0;j<=4;j++)
{
scanf("%f",&a[i][j]);
}
}

max=a[0][0]+a[0][1]+a[0][2]+a[0][3]+a[0][4];

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

total=a[i][0]+a[i][1]+a[i][2]+a[i][3]+a[i][4];
if(total>max)
{
max=total;
t1=i+1;
}
total = 0;
}
aver=max/5;
printf("平均值最大的行是第%d行,平均值是%f",t1,aver);
return 0;
}

#include<stdio.h>
int main()
{
float a[4][5];
int i,j,t1;
float aver,max,total;//total为无用变量,可以省略
float number; //新加代码
printf("请输入数组");
for(i=0;i<=3;i++)
{
for(j=0;j<=4;j++)
{
scanf("%f",&a[i][j]);
}
}
//这儿的代码是显示你所输入的矩阵,方便你观察输入与结果是否符合
/*for(i=0;i<=3;i++)
{
for(j=0;j<=4;j++)
{
printf("%f ",a[i][j]);
}
printf("\n");
}*/
max=a[0][0]+a[0][1]+a[0][2]+a[0][3]+a[0][4];//新加代码
t1=0;
for(i=0;i<=3;i++)
{
//此处代码修改
number=a[i][0]+a[i][1]+a[i][2]+a[i][3]+a[i][4];
if(max<=number)
{
max=number;
t1 =i;
}
number=0;
}
//注意有段代码全部删除
aver=max/5;
printf("平均值最大的行是第%d行,平均值是%f",(t1+1),aver);
return 0;
}

扫了一遍,感觉scanf("%d",&a[i][j]);很可疑

C语言 编写一个程序,输入一个正整数,求出它是几位数。
答:求一个正整数n的位数可以先定义一个变量num,并初始化为0,依次把该整数n除以10,直到其为0为止,并且每除一次10,变量num的个数就自加1,最后num的值就是该整数n的位数。include <stdio.h> int main(){ int n,num=0;scanf("%d",&n);while(n){ num++;n/=10;} printf("%d\n",num)...

C程序编写:输入一有6个元素浮点数组,求平均数)
答:以下是求解6个元素浮点数组平均值的C程序:include <stdio.h> int main() { float arr[6];float sum = 0.0;float avg = 0.0;// 读取输入数组 printf("Enter 6 float numbers: ");for(int i = 0; i < 6; i++) { scanf("%f", &arr[i]);} // 计算平均值 for(int i = 0...

c语言编程 求解简单表达式,输入一个形式如“操作数 运算符 操作数”的...
答:有没有括号的,有的话很烦喔,要用栈来写,没的话一个switch函数和一个循环函数就可以搞定了。用getchar()函数一个个读入所有字符,然后操作数的话用ASCII换成十进制的,switch里面分别就是+-*/四个运算,然后循环两次4个数读完就printf()出来,思路够清晰了吧,代码自己实践。。。无法实现我再...

c语言题目求助。编程序,输入一个百分制的成绩t后,按下式输出它的等级...
答:char rank(int score){ char c; if(score>=90&&score<=100) c='A'; else if(score>=80&&score<=89) c='B'; else if(score>=70&&score<=79) c='C'; else if(score>=60&&score<=69) c='D'; else if(score>=50&&score<=59) c='E'; ...

c语言编程:输入一个姓名,如果输入小明,输出好人,如果输入其他任何东西...
答:include <stdio.h>#include <string.h>int main(void){ int name[20]; scanf("%s",&name); if(strcmp(name,"小明")==0)printf("好人"); else printf("ERROR"); return 0;}

C语言:输入一个字符串,然后逆序输出
答:include <stdio.h> int main(){ int len,i;char str[100];gets(str);len=strlen(str);for(i=len-1;i>=0;i--)printf("%c",str[i]);return 0;}

C语言题目。编写程序实现,用户输入一个整数n,计算n!并输出。
答:include<stdio.h> int main(){ int n,i,j;scanf("%d",&n);int sum=1;for(i=1;i<=n;i++){ sum=sum*i;} printf("%d\n",sum);return 0;}

用c语言编写程序,要求输入一个数,求出1到这个数的和
答:include <stdio.h>void main(){int i,n,sum=0;scanf("%d",&n);for(i=1;i<=n;i++) sum+=i;printf("sum=%d",sum);} 运行示例:

...利用循环命令for什么什么,输入一个数,比如5,然后就会出现一棵_百度...
答:include <stdio.h> int main(){ int i,j,a;printf("输入松树的层数:");scanf("%d",&a);// 判断是否输入正数(可省略,但可保无错)if(a>0) { printf("输出:\n");// 输出松树的树冠:for(i=1;i<=a;i++) { // 输出对称的空格 for(j=1;j<=a-i;j++) { printf(" ")...

编写一个标准C语言程序:输入一个整数,按如下方式输出:第一行输出所有数...
答:include <stdio.h>#include <string.h>int main() {int n,i,j,len;char s[20];while(scanf("%d",&n) == 1) {sprintf(s,"%d",n);len = strlen(s);for(i = 0; i < len; ++i) {for(j = i; j < len; ++j)printf("%c",s[j]);printf("\n");}}return 0;} ...