
C语言编程题,请帮帮忙。
题目如下学生成绩单制作1)定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2)从键盘输入10个学生的以上内容3)输出单门课成绩最高的学生的学号、姓名、以及该门...
题目如下
学生成绩单制作
1) 定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩
2) 从键盘输入10个学生的以上内容
3) 输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩
4) 输出三门课程的平均分数最高的学生的学号、姓名及其平均分
5) 将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:
number name math Chinese English average
103 tom 90 90 100 95
101 alice 90 80 70 80 展开
学生成绩单制作
1) 定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩
2) 从键盘输入10个学生的以上内容
3) 输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩
4) 输出三门课程的平均分数最高的学生的学号、姓名及其平均分
5) 将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:
number name math Chinese English average
103 tom 90 90 100 95
101 alice 90 80 70 80 展开
展开全部
#include <stdio.h>
#include <stdlib.h>
#define STU_NUM 10 //学生数量
#define COURSE_NUM 3 //课程数量
struct stu
{
char id[10];
char name[10];
int score[COURSE_NUM];
float ave;
};
char course_name[COURSE_NUM][20] = {"math", "Chinese", "English"};
int compare(const void * a, const void * b)
{
return ((struct stu*)a)->ave > ((struct stu *)b)->ave;
}
void print_score(struct stu * student, int num) //打印成绩
{
int i, j;
printf("\n\nnumber\tname\tmath\tChinese\tEnglish\taverage\n");
for (i = 0; i < num; i++)
{
printf("%s\t%s", student[i].id, student[i].name);
for (j = 0; j < COURSE_NUM; j++)
printf("\t%d", student[i].score[j]);
printf("\t%.2f\n", student[i].ave);
}
}
void main()
{
struct stu student[STU_NUM];
int i, j;
float sum;
int tmp;
printf("Please input the info of %d student: \n", STU_NUM);
for (i = 0; i < STU_NUM; i++)
{
scanf("%s %s", student[i].id, student[i].name);
sum = 0;
for (j = 0; j < COURSE_NUM; j++)
{
scanf("%d", &student[i].score[j]);
sum += student[i].score[j];
}
student[i].ave = sum / COURSE_NUM;
}
print_score(student, STU_NUM);
for (i = 0; i < COURSE_NUM; i++)
{
printf("\n\nHighest score of %s: \n", course_name[i]);
tmp = 0;
for (j = 1; j < STU_NUM; j++)
if (student[tmp].score[i] < student[j].score[i])
tmp = j;
tmp = student[tmp].score[i];
for (j = 0; j < STU_NUM; j++) //可能有多个最高分
if (student[j].score[i] == tmp)
printf("%s\t%s\t%s: %d\n", student[j].id, student[j].name, course_name[i], student[j].score[i]);
}
tmp = 0;
for (i = 1; i < STU_NUM; i++)
if (student[i].ave > student[tmp].ave)
tmp = i;
printf("\n\nHighest average score:\n %s\t%s\t%.2f", student[tmp].id, student[tmp].name, student[tmp].ave);
qsort(student, STU_NUM, sizeof(struct stu), compare); //快速排序
print_score(student, STU_NUM);
}
#include <stdlib.h>
#define STU_NUM 10 //学生数量
#define COURSE_NUM 3 //课程数量
struct stu
{
char id[10];
char name[10];
int score[COURSE_NUM];
float ave;
};
char course_name[COURSE_NUM][20] = {"math", "Chinese", "English"};
int compare(const void * a, const void * b)
{
return ((struct stu*)a)->ave > ((struct stu *)b)->ave;
}
void print_score(struct stu * student, int num) //打印成绩
{
int i, j;
printf("\n\nnumber\tname\tmath\tChinese\tEnglish\taverage\n");
for (i = 0; i < num; i++)
{
printf("%s\t%s", student[i].id, student[i].name);
for (j = 0; j < COURSE_NUM; j++)
printf("\t%d", student[i].score[j]);
printf("\t%.2f\n", student[i].ave);
}
}
void main()
{
struct stu student[STU_NUM];
int i, j;
float sum;
int tmp;
printf("Please input the info of %d student: \n", STU_NUM);
for (i = 0; i < STU_NUM; i++)
{
scanf("%s %s", student[i].id, student[i].name);
sum = 0;
for (j = 0; j < COURSE_NUM; j++)
{
scanf("%d", &student[i].score[j]);
sum += student[i].score[j];
}
student[i].ave = sum / COURSE_NUM;
}
print_score(student, STU_NUM);
for (i = 0; i < COURSE_NUM; i++)
{
printf("\n\nHighest score of %s: \n", course_name[i]);
tmp = 0;
for (j = 1; j < STU_NUM; j++)
if (student[tmp].score[i] < student[j].score[i])
tmp = j;
tmp = student[tmp].score[i];
for (j = 0; j < STU_NUM; j++) //可能有多个最高分
if (student[j].score[i] == tmp)
printf("%s\t%s\t%s: %d\n", student[j].id, student[j].name, course_name[i], student[j].score[i]);
}
tmp = 0;
for (i = 1; i < STU_NUM; i++)
if (student[i].ave > student[tmp].ave)
tmp = i;
printf("\n\nHighest average score:\n %s\t%s\t%.2f", student[tmp].id, student[tmp].name, student[tmp].ave);
qsort(student, STU_NUM, sizeof(struct stu), compare); //快速排序
print_score(student, STU_NUM);
}
2011-07-02
展开全部
定义一个结构体数组struct Stu{char num[5];char name[10];float sub[3];float ave;};struct Stu student[10];定义一个函数void Ave(struct Stu student){float sum[10];for(int i=0;i<10;i++){sum=student[i]->sub[0]+student[i]->sub[1]+student[i]->sub[2];student[i].ave=(float)(sum/3);}
格式化输出printf("\t\tnumber\tname\tmath\tChinese\tEnglish\taverage\n");for(int i=0;i<10;i++)printf("\t\t%6s\t%4s\t%4d\t%7d\t%7d\t%7d\n\t\t\t\t");我没调试,不知效果咋样,不过是这么做的。还有,这题太简单,可以改一下去掉固定的十个人而且这题是十分基础!可以用文件输入……
格式化输出printf("\t\tnumber\tname\tmath\tChinese\tEnglish\taverage\n");for(int i=0;i<10;i++)printf("\t\t%6s\t%4s\t%4d\t%7d\t%7d\t%7d\n\t\t\t\t");我没调试,不知效果咋样,不过是这么做的。还有,这题太简单,可以改一下去掉固定的十个人而且这题是十分基础!可以用文件输入……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询