五个学生四门成绩,计算平均分,并用平均分进行排序

努力升本的码畜 2019-12-03 08:26:31
用平均分实现排序,并打印出表格,我是实在不会了,头都大了,救救孩子吧 而且我们还没有学到指针,只能用简单函数实现 #include <stdio.h> int main() { int i,j; float a[5][4],sum[4]={0}; printf("\t\t课程1\t课程2\t课程3\t课程4\n"); for(i=0;i<5;i++) { printf("%d号学生",i+1); for(j=0;j<4;j++) scanf("%f",&a[i][j]); } for(j=0;j<4;j++) for(i=0;i<5;i++) sum[i] += a[i][j]; printf("\t\t成绩表\n"); printf("\t课程1\t课程2\t课程3\t课程4\t平均分\n"); for(i=0;i<5;i++) { printf("\n学生%d:\t",i+1); for(j=0;j<4;j++) printf(" %.1f\t",a[i][j]); printf(" %.1f",sum[i]/4); printf("\n"); } return 0; }
...全文
511 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
寻开心 2019-12-03
  • 打赏
  • 举报
回复
sum 数组少了一个
冒泡第二层循环控制有问题
寻开心 2019-12-03
  • 打赏
  • 举报
回复
#include <stdio.h>

int main()
{
int i,j,k,t;
float a[5][4],sum[5]={0};
printf("\t\t课程1\t课程2\t课程3\t课程4\n");
for(i=0;i<5;i++) {
printf("%d号学生",i+1);
for(j=0;j<4;j++)
scanf("%f",&a[i][j]);
}

for(i=0;i<5;i++)
for(j=0;j<4;j++)
sum[i] += a[i][j];

for(i=0;i<5;i++) {
for(j=0;j<5-i-1;j++) {
if(sum[j]<sum[j+1]) {
t=sum[j];
sum[j]=sum[j+1];
sum[j+1]=t;
}
for(k=0;k<4;k++) {
t=a[j][k];
a[j][k]=a[j+1][k];
a[j+1][k]=t;
}
}
}

printf("\t\t成绩表\n");
printf("\t课程1\t课程2\t课程3\t课程4\t平均分\n");
for(i=0;i<5;i++) {
printf("\n%d号学生:",i+1);
for(j=0;j<4;j++)
printf(" %.1f\t",a[i][j]);
printf(" %.1f",sum[i]/4);
printf("\n");
}
return 0;
}
  • 打赏
  • 举报
回复
引用 1 楼 寻开心的回复:
同一个问题,不用多次发帖的
把对sum做排序的代码也写出来,然后排序过程当中交换sum数据的时候,同步交换a数组的内容就出来了
就差这一个步骤了
老哥介意私聊吗,我改了之后出现了一些新的奇怪的问题
山乀 2019-12-03
  • 打赏
  • 举报
回复
#include<stdio.h>
#define N 5
main()
{
int a[N][5],i,j,n,x,y,z;
printf("请输入学号和考勤分、内务分\n");
for(i=0;i<N;i++)
for(j=0;j<3;j++)
{scanf("%d",&a[i][j]);}
for(i=0;i<N;i++)
{
for(a[i][3]=0,j=1;j<3;j++)
{a[i][3]+=a[i][j];}
}
printf("请输入查询的学号:");
scanf("%d",&n);
i=0;
while(i<N&&a[i][0]!=n)
{i++;}
if(i<N)
{
printf("该生的考勤分、内务分、总分为:");
for(j=1;j<4;j++)
printf("%4d",a[i][j]);
printf("\n");
}
else printf("你要找的学生不存在\n");
for(i=0;i<N-1;i++)
{
for(j=i+1;j<N;j++)
{
for(z=0;z<4;z++)
if(a[i][3]<a[j][3])
{
x=a[i][z];
a[i][z]=a[j][z];
a[j][z]=x;
}
}
}
for(i=0;i<N;i++)
{a[i][4]=i+1;}
printf("输出排序后的成绩表\n");
printf(" 学号 考勤分 内务分 总分 名次\n");
printf("-----------------------------\n");
for(i=0;i<N;i++)
{
for(j=0;j<5;j++)
printf("%6d",a[i][j]);
printf("\n");
}
} // 你可以参考一下我写的这个题
寻开心 2019-12-03
  • 打赏
  • 举报
回复
同一个问题,不用多次发帖的
把对sum做排序的代码也写出来,然后排序过程当中交换sum数据的时候,同步交换a数组的内容就出来了
就差这一个步骤了

69,371

社区成员

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

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