当前位置:编程学习 > C/C++ >>

帮忙做一个c语言程序。

题目是:输入10个学生的学号,语数外三门课的成绩,输出他们的平均分,总分,并排序。急需谢谢!
追问:不管怎样  非常感谢!!  我觉得好复杂啊!好像我的老师指导其他同学做的没有这么多.
答案:
#include "stdio.h" 
#include "string.h"
#define a 11
#define b 5
#include "time.h"//这两个头文件的引入是为了随机数和随机数种子
#include "stdlib.h"
void av(float student[a][b]){//求每个人总成绩并保存入数组
int i,j;
for(i=0;i<a-1;i++){
student[i][b-1]=0;
for(j=1;j<b-1;j++)
student[i][b-1]+=student[i][j];
}
}
void sum(float student[a][b]){//求所有人某科总成绩并保存
int i,j;
for(j=1;j<b;j++)
student[a-1][j]=0;
for(i=0;i<a-1;i++){
student[a-1][3]+=student[i][3];
student[a-1][1]+=student[i][1];
student[a-1][2]+=student[i][2];
student[a-1][4]+=student[i][4];
}
}
void input(float student[a][b]){//输入
int i,j;
srand((unsigned)time(NULL));
for(i=0;i<a-1;i++){
student[i][0]=i+1;
/*printf("依次输入第%d个人语、数、外每科成绩:",i+1);*/
for(j=1;j<b-1;j++)
/*scanf("%d",&student[i][j]);*/
student[i][j]=rand()%50+51;//此处为了方便检验程序,用了随机数来代替了手工的输入,想输入只需注释此句,将/**/注释的两句取消注释即可。如果是手工的输入,最好是一个人的不同科成绩用空格分开,输入完一个人的三门成绩后,敲回车继续下一个人的成绩
}
}

void sort(float student[a][b],char name[10][20],char number[10][20]){//最简单的选择排序
int i,j,min;
float num;
char str[20];
for(i=0;i<a-2;i++){
min=i;
for(j=i+1;j<a-1;j++)//每次找出一个最小的值放到合适的位置
if(student[min][b-1]>student[j][b-1])
min=j;
for(j=0;j<b;j++){
num=student[i][j];
student[i][j]=student[min][j];
student[min][j]=num;
}
strcpy(str,name[i]);
strcpy(name[i],name[min]);
strcpy(name[min],str);
strcpy(str,number[i]);
strcpy(number[i],number[min]);
strcpy(number[min],str);
}
}
void myprint(float student[a][b],char name[10][20],char number[10][20]){//输出结果
printf(" 输入时的序号 学号 姓名 语文 数学 外语 三科总成绩 平均成绩\n\n");//此处的空格或许会因为百度网页的原因而与我的不符,从而使得显示的不是很整齐自己稍加修改即可
for(int i=0;i<a-1;i++){
printf("%3.0f",student[i][0]);
printf("%12s",number[i]);
printf("%8s",name[i]);
for(int j=1;j<b;j++)

printf("%10.1f",student[i][j]);
printf("%15.2f",student[i][b-1]/(float)(b-2));
printf("\n");
}
#include  <stdio.h>
main()
{
int b,d,e,a[10][3];
scanf("%d",&a); /*依次输入三科的分数*/
scanf("%d",&b); /*输入1---10计算出依次输入中第n次输入的学生的平均分和总分*/
switch(b)
{ case "1":d=a[0][0]+a[0][1]+a[0][2];
e=d/3;
printf("%d,%d\n",e,d)
break;
case "2":d=a[1][0]+a[1][1]+a[1][2];
e=d/3;
printf("%d,%d\n",e,d)
break;
case "2":d=a[2][0]+a[2][1]+a[2][2];
e=d/3;
printf("%d,%d\n",e,d)
break;
case "2":d=a[3][0]+a[3][1]+a[3][2];
e=d/3;
printf("%d,%d\n",e,d)
break;
case "2":d=a[4][0]+a[4][1]+a[4][2];
e=d/3;
printf("%d,%d\n",e,d)
break;
case "2":d=a[5][0]+a[5][1]+a[5][2];
e=d/3;
printf("%d,%d\n",e,d)
break;
case "2":d=a[6][0]+a[6][1]+a[6][2];
e=d/3;
printf("%d,%d\n",e,d)
break;
case "2":d=a[7][0]+a[7][1]+a[7][2];
e=d/3;
printf("%d,%d\n",e,d)
break;
case "2":d=a[8][0]+a[8][1]+a[8][2];
e=d/3;
printf("%d,%d\n",e,d)

break;
case "2":d=a[9][0]+a[9][1]+a[9][2];
e=d/3;
printf("%d,%d\n",e,d)

break;
default:printf("cuo wu!\n")
break;
}
}
这个没楼上的写的好 不过简单。。
俺也不算高手 只能写成这样了
  这个啊。。我也是C语言初学者,这个应该不难哟!~
书上的例题耶,看看书啊
楼上用的是二维数组
如果我是你们老师,不会给这个程序高分的。

用结构体会更好

struct student
{
name char[10]; //学生名字
int score[3]; //三门课分数
int toscore; //总分
}stu[10]; //十个学生


其他算法跟楼上是一样的,利用结构体会让程序更清晰!

上一个:C语言上机环境问题?
下一个:C语言有多少种版本

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,