用C语言写一个代码#include <stdio.h> struct student { int id; char name[20]; float score; }; int main() { int n = 5, i, j; struct student stu[n], temp; // 输入学生信息 printf("请输入 %d 个学生的信息(学号、姓名、成绩):\n", n); for (i = 0; i < n; i++) { printf("学生 %d:", i + 1); scanf("%d %s %f", &stu[i].id, stu[i].name, &stu[i].score); } // 按成绩从高到低排序 for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (stu[j].score < stu[j + 1].score) { temp = stu[j]; stu[j] = stu[j + 1]; stu[j + 1] = temp; } } } // 输出学生信息 printf("\n按成绩从高到低输出各学生的信息:\n"); for (i = 0; i < n; i++) { printf("%d\t%s\t%.1f\n", stu[i].id, stu[i].name, stu[i].score); } return 0; }
时间: 2024-01-15 11:03:14 浏览: 30
好的,这是一个简单的 C 语言程序,它定义了一个 `struct student` 结构体,包含学生的学号、姓名和成绩。程序首先要求用户输入 5 个学生的信息,然后使用冒泡排序算法将学生按成绩从高到低排序,最后按照排序后的顺序输出各学生的信息。
如果您有任何问题或需要进一步的帮助,请随时告诉我。
谢谢!
相关问题
#include <stdio.h> #include <string.h> #define MAX_STUDENT_NUM 30 // #define MAX_COURSE_NUM 6 // #define NAME_LEN 20 // struct Student { char id[10];//学生学号 char name[NAME_LEN];//姓名 int scores[MAX_COURSE_NUM];//各科分数 int total_score;//总分 float avg_score;//平均分 }; void input_record(struct Student students[], int num);//录入每个学生的学号、姓名和各科考试成绩 void calc_total_avg_course(struct Student students[], int num, int course_num);//计算每门课程的总分和平均分 请用c语言分别补充函数内容
补充input_record函数内容:
```
void input_record(struct Student students[], int num)
{
for (int i = 0; i < num; i++)
{
printf("请输入第%d个学生的学号:", i+1);
scanf("%s", students[i].id);
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", students[i].name);
for (int j = 0; j < MAX_COURSE_NUM; j++)
{
printf("请输入第%d个学生的第%d门课程成绩:", i+1, j+1);
scanf("%d", &students[i].scores[j]);
}
}
}
```
补充calc_total_avg_course函数内容:
```
void calc_total_avg_course(struct Student students[], int num, int course_num)
{
for (int i = 0; i < course_num; i++)
{
int total_score = 0;
for (int j = 0; j < num; j++)
{
total_score += students[j].scores[i];
}
printf("第%d门课程的总分为:%d,平均分为:%.2f\n", i+1, total_score, (float)total_score/num);
}
}
```
注:这里假设MAX_COURSE_NUM为6,NAME_LEN为20。
#include <stdio.h> #include <string.h> #include <stdlib.h> struct student{ char name[20]; char sex; float score; }; float avg_score(struct student *p,int n); void find_score(struct student stu[],int num,char name[]); int main(){ int n,i; printf("输入学生人数:"); scanf("%d",&n); struct student stu[n]; for(i=0;i<n;i++){ printf("\n输入第%d个学生姓名:",i+1); scanf("%s",&stu[i].name); printf("输入第%d个学生性别:",i+1); scanf(" %c",&stu[i].sex); printf("输入第%d个学生C语言成绩:",i+1); scanf("%f",&stu[i].score); } printf("平均分:%.2f\n",avg_score(stu,n)); char name[20]; printf("输入查询学生姓名:"); scanf("%s",name); find_score(stu,n,name); free(stu); return 0; } float avg_score(struct student *p,int n) { float sum = 0,avg; for (int i = 0; i < n; i++) { sum += p[i].score; } avg = sum/n; return avg; } void find_score(struct student stu[],int num,char name[]) { int i; for (i = 0; i < num; i++) { if (strcmp(name,stu[i].name) == 0) { printf("%s的C语言成绩是:%.2f\n",name,stu[i].score); break; } } if(i==num){ printf("找不到该学生\n"); } }
这是一个使用结构体的C语言程序,实现了以下两个功能:
1. 输入学生信息,包括姓名、性别和C语言成绩,计算平均分并输出。
2. 输入学生姓名,查询该学生的C语言成绩并输出。
程序中定义了一个名为student的结构体,包含了三个成员变量:姓名name、性别sex和C语言成绩score。在程序中,使用了动态内存分配来创建了一个大小为n的结构体数组stu,存储了n个学生的信息。
函数avg_score用于计算学生C语言成绩的平均分,接受一个指向结构体数组的指针p和数组大小n作为参数,返回一个float类型的平均分数。
函数find_score用于查询指定学生的成绩,接受一个结构体数组stu、数组大小num和一个char类型的字符串name作为参数,输出该学生的C语言成绩。
在程序执行完毕后,使用free函数释放了动态分配的内存。
阅读全文