刚学c语言不久,求大佬指教

u014115685 2019-11-18 11:39:43
题目



我写的程序,用的vs2010
#include<stdio.h>
#define N 3
int fac(float a[N][5])
{
float sum;
int i,j;
for(i=0;i<N;i++)
{
sum=0.0;
for(j=0;j<4;j++)
{
sum=sum+a[i][j];
}
a[i][4]=sum/4;
}
return 0;
}
int main()
{
float a[N][4]={76,89,87,80,80,88,67,77,66,78,80,90};
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<5;j++)
printf("%.1f\t",a[i][j]);
printf("\n");
}
return 0;
}
一直找不出问题
...全文
129 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
u014115685 2019-11-18
  • 打赏
  • 举报
回复
引用 5 楼 datoulaile123的回复:
[quote=引用 4 楼 一方通行Accelerator 的回复:]
[quote=引用 2 楼 datoulaile123的回复:]4门功课,数组下标0-3,不能循环到5

定义的a[3][4]是一个3行4列的矩形,a[i][4]=sum/4;这个地方不是定义了第五列的么?不能直接循环到5,变成3*5的矩阵吗?[/quote]
你都说了是3行4列的,那第3行第5列是什么数字呢[/quote] a[i][4]这个不算么?
datoulaile123 2019-11-18
  • 打赏
  • 举报
回复
引用 4 楼 一方通行Accelerator 的回复:
[quote=引用 2 楼 datoulaile123的回复:]4门功课,数组下标0-3,不能循环到5

定义的a[3][4]是一个3行4列的矩形,a[i][4]=sum/4;这个地方不是定义了第五列的么?不能直接循环到5,变成3*5的矩阵吗?[/quote]
你都说了是3行4列的,那第3行第5列是什么数字呢
u014115685 2019-11-18
  • 打赏
  • 举报
回复
引用 2 楼 datoulaile123的回复:
4门功课,数组下标0-3,不能循环到5
定义的a[3][4]是一个3行4列的矩形,a[i][4]=sum/4;这个地方不是定义了第五列的么?不能直接循环到5,变成3*5的矩阵吗?
u014115685 2019-11-18
  • 打赏
  • 举报
回复
引用 2 楼 datoulaile123 的回复:
4门功课,数组下标0-3,不能循环到5


定义的a[3][4]是一个3行4列的矩形,a[i][4]=sum/4;这个地方不是定义了第五列的么?不能直接循环到5,变成3*5的矩阵吗?
datoulaile123 2019-11-18
  • 打赏
  • 举报
回复
4门功课,数组下标0-3,不能循环到5
datoulaile123 2019-11-18
  • 打赏
  • 举报
回复
#include<stdio.h>
#define N 3
//int fac(float a[N][5])
//{
// float sum;
// int i, j;
// for (i = 0; i < N; i++)
// {
// sum = 0.0;
// for (j = 0; j < 4; j++)
// {
// sum = sum + a[i][j];
// }
// a[i][4] = sum / 4;
// }
// return 0;
//}
int main()
{
float a[N][4] = { 76, 89, 87, 80, 80, 88, 67, 77, 66, 78, 80, 90 };
float x = 0;
float sum = 0;
int i, j;
for (i = 0; i < N; i++)
{
x = 0;
sum = 0;
for (j = 0; j < 4; j++)
{
printf("%.1f\t", a[i][j]);
sum += a[i][j];
}

x = sum / 4;
printf("平均成绩%.3f\n", x);
}
return 0;
}
u014115685 2019-11-18
  • 打赏
  • 举报
回复
引用 11 楼 datoulaile123的回复:
[quote=引用 9 楼 一方通行Accelerator 的回复:]
[quote=引用 8 楼 datoulaile123的回复:][quote=引用 7 楼 一方通行Accelerator 的回复:]
[quote=引用 5 楼 datoulaile123的回复:][quote=引用 4 楼 一方通行Accelerator 的回复:]
[quote=引用 2 楼 datoulaile123的回复:]4门功课,数组下标0-3,不能循环到5

定义的a[3][4]是一个3行4列的矩形,a[i][4]=sum/4;这个地方不是定义了第五列的么?不能直接循环到5,变成3*5的矩阵吗?[/quote]
你都说了是3行4列的,那第3行第5列是什么数字呢[/quote]
就像扩大这个矩阵一样,给它加上第五列,能不能这样呢?[/quote]
那你定义的时候就大一点啊,明明没有的东西你去取,那就越界了啊。。[/quote]
是不是应该把那a[3][4]改成a[3][5],然后后面定义怎么改呢?你写的程序好像是3*4的矩阵,然后每行最后输出平均数,能不能一开始就设计成3*5的矩阵?虽然我觉得好像这样更麻烦,但是我很好奇可不可以这样,谢谢你了[/quote]int main()
{
float a[N][5] = { { 76, 89, 87, 80,0 }, { 80, 88, 67, 77,0 }, { 66, 78, 80, 90,0 } };
float x = 0;
float sum = 0;
int i, j;
for (i = 0; i < N; i++)
{
x = 0;
sum = 0;
for (j = 0; j < 5; j++)
{
printf("%.1f\t", a[i][j]);
sum += a[i][j];
}

//x = sum / 4;
x = sum / 5;

printf("平均成绩%.3f\n", x);
}
return 0;
}
这样??[/quote] 那第五列显示的是0……这样不对吧?算了,我觉得就之前那个就很好了,非常感谢大佬的耐心指导
datoulaile123 2019-11-18
  • 打赏
  • 举报
回复
引用 9 楼 一方通行Accelerator 的回复:
[quote=引用 8 楼 datoulaile123的回复:][quote=引用 7 楼 一方通行Accelerator 的回复:]
[quote=引用 5 楼 datoulaile123的回复:][quote=引用 4 楼 一方通行Accelerator 的回复:]
[quote=引用 2 楼 datoulaile123的回复:]4门功课,数组下标0-3,不能循环到5

定义的a[3][4]是一个3行4列的矩形,a[i][4]=sum/4;这个地方不是定义了第五列的么?不能直接循环到5,变成3*5的矩阵吗?[/quote]
你都说了是3行4列的,那第3行第5列是什么数字呢[/quote]
就像扩大这个矩阵一样,给它加上第五列,能不能这样呢?[/quote]
那你定义的时候就大一点啊,明明没有的东西你去取,那就越界了啊。。[/quote]
是不是应该把那a[3][4]改成a[3][5],然后后面定义怎么改呢?你写的程序好像是3*4的矩阵,然后每行最后输出平均数,能不能一开始就设计成3*5的矩阵?虽然我觉得好像这样更麻烦,但是我很好奇可不可以这样,谢谢你了[/quote]int main()
{
float a[N][5] = { { 76, 89, 87, 80,0 }, { 80, 88, 67, 77,0 }, { 66, 78, 80, 90,0 } };
float x = 0;
float sum = 0;
int i, j;
for (i = 0; i < N; i++)
{
x = 0;
sum = 0;
for (j = 0; j < 5; j++)
{
printf("%.1f\t", a[i][j]);
sum += a[i][j];
}

//x = sum / 4;
x = sum / 5;

printf("平均成绩%.3f\n", x);
}
return 0;
}
这样??
u014115685 2019-11-18
  • 打赏
  • 举报
回复
引用 8 楼 datoulaile123的回复:
[quote=引用 7 楼 一方通行Accelerator 的回复:]
[quote=引用 5 楼 datoulaile123的回复:][quote=引用 4 楼 一方通行Accelerator 的回复:]
[quote=引用 2 楼 datoulaile123的回复:]4门功课,数组下标0-3,不能循环到5

定义的a[3][4]是一个3行4列的矩形,a[i][4]=sum/4;这个地方不是定义了第五列的么?不能直接循环到5,变成3*5的矩阵吗?[/quote]
你都说了是3行4列的,那第3行第5列是什么数字呢[/quote]
就像扩大这个矩阵一样,给它加上第五列,能不能这样呢?[/quote]
那你定义的时候就大一点啊,明明没有的东西你去取,那就越界了啊。。[/quote] 是不是应该把那a[3][4]改成a[3][5],然后后面定义怎么改呢?你写的程序好像是3*4的矩阵,然后每行最后输出平均数,能不能一开始就设计成3*5的矩阵?虽然我觉得好像这样更麻烦,但是我很好奇可不可以这样,谢谢你了
datoulaile123 2019-11-18
  • 打赏
  • 举报
回复
引用 7 楼 一方通行Accelerator 的回复:
[quote=引用 5 楼 datoulaile123的回复:][quote=引用 4 楼 一方通行Accelerator 的回复:]
[quote=引用 2 楼 datoulaile123的回复:]4门功课,数组下标0-3,不能循环到5

定义的a[3][4]是一个3行4列的矩形,a[i][4]=sum/4;这个地方不是定义了第五列的么?不能直接循环到5,变成3*5的矩阵吗?[/quote]
你都说了是3行4列的,那第3行第5列是什么数字呢[/quote]
就像扩大这个矩阵一样,给它加上第五列,能不能这样呢?[/quote]
那你定义的时候就大一点啊,明明没有的东西你去取,那就越界了啊。。
u014115685 2019-11-18
  • 打赏
  • 举报
回复
引用 5 楼 datoulaile123的回复:
[quote=引用 4 楼 一方通行Accelerator 的回复:]
[quote=引用 2 楼 datoulaile123的回复:]4门功课,数组下标0-3,不能循环到5

定义的a[3][4]是一个3行4列的矩形,a[i][4]=sum/4;这个地方不是定义了第五列的么?不能直接循环到5,变成3*5的矩阵吗?[/quote]
你都说了是3行4列的,那第3行第5列是什么数字呢[/quote] 就像扩大这个矩阵一样,给它加上第五列,能不能这样呢?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧