有一道C语言程序设计题(需要用循环、数组、函数和结构体做。千万不要涉及到C++)。
- 提问者网友:刺鸟
- 2021-05-05 16:33
1,根据学生信息定义一个结构体类型,再说明一个该结构体类型的数组。
2,用input函数从键盘上输入10个学生的数据。
3,用average函数求出每个学生总成绩、平均成绩和所有学生的总平均成绩。
4,用maximum函数找出最高分的学生的数据。
5,再主函数中输出每位学生的学号、姓名、三门课的成绩、总成绩和平均成绩以及总平均分和最高分学生的数据。
输出形式如下:
NO name score1 score2 score3 total average
101 wang 80 79 81 240 80.00
102 li 91 90 89 270 90.00
- 五星知识达人网友:毛毛
- 2021-05-05 17:16
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define STUDEN_NUM 2
typedef struct Student
{
char No[5];
char Name[17];
int score1;
int score2;
int score3;
float average;
int total;
} _STUDENT;
void input(Student* student)
{
scanf("%s%s%d%d%d", student->No, student->Name, &student->score1, &student->score2, &student->score3);
}
void output(Student* student, int n)
{
int i;
printf("No\tname\tscore1\tsocre2\tscore3\ttotal\taverage\n");
for(i=0; i<n; i++)
{
printf("%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n", student[i].No, student[i].Name, student[i].score1, student[i].score2, student[i].score3, student[i].total, student[i].average);
}
}
void average(Student* student, float* allaverage, int n)
{
int i;
for(i=0; i<n; i++)
{
student[i].total = student[i].score1+student[i].score2+student[i].score3;
student[i].average = float(student[i].total)/3.0f;
*allaverage += student[i].average;
}
*allaverage = *allaverage/n;
}
void maximum(Student* student, int n)
{
int temp = student[0].total;
int order = 0;
int i;
for(i=1; i<n; i++)
{
if(temp < student[i].total)
{
temp = student[i].total;
order = i;
}
}
i = order;
printf("The top student information:\n");
printf("%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n", student[i].No, student[i].Name, student[i].score1, student[i].score2, student[i].score3, student[i].total, student[i].average);
}
void main()
{
Student student[STUDEN_NUM];
int i;
float allaverage = 0.0f;
int toporder = 0;
for(i=0; i<STUDEN_NUM; i++)
{
printf("Please input student%d's No, name and the scores!\n", i+1);
input(&student[i]);
}
average(student, &allaverage, STUDEN_NUM);
output(student, STUDEN_NUM);
maximum(student, STUDEN_NUM);
printf("All the student's average is: %.2f\n", allaverage);
}
谢谢采纳!