作业要求
定义(序号、学号、姓名、获得学分、高数、大体、近代史、软导、C程均分)数据类型,并输入相应数据,计算平均分并按照下列格式输出(注意间和对齐)。
学号 姓名 性别 数学 英语 c语言体育 近代史 计算机总分 平均分
... ...... ... ...... ... ... ...... ...
要求:
第一条.必须为自己的个人信息,第二条是你的学号后续同学的信息,如果你为序号最后的一名同学,则你的后续是1号同学。
作业内容
定义一个存储学生信息的结构体,定义一个结构体数组,对各成员及元素赋值,进行运算,排序。最后输出。
1.各功能分别用函数实现.
<span style="font-size:18px;"> #include <stdio.h>
#include <string.h>
#define ST_NUM 5 //学生数
typedef struct
{
char num[10]; //学号
char name[9]; //姓名
char sex[3]; //性别
float match; //数学
float english;
float c_language;
float physical;
float modern_history;
float introduction_to_computer_science;
float sum;
float average;
}student;
student ST[ST_NUM];
void input()
{
int i,j;
printf ("请输入%d个学生的信息:\n",ST_NUM);
for (i=0;i<ST_NUM;i++)
{
printf ("学号:");
scanf ("%s",ST[i].num);
printf("姓名:");
scanf ("%s",ST[i].name);
printf("性别:");
scanf("%s",ST[i].sex);
printf("科目数学的成绩:");
scanf("%f",&ST[i].match);
printf("科目英语的成绩:");
scanf("%f",&ST[i].english);
printf("科目c语言的成绩:");
scanf("%f",&ST[i].c_language);
printf("科目体育的成绩:");
scanf("%f",&ST[i].physical);
printf("科目近代史的成绩:");
scanf("%f",&ST[i].modern_history);
printf("科目计算机的成绩:");
scanf("%f",&ST[i].introduction_to_computer_science);
}
}
void output()
{
int i,j;
printf("学号\t姓名\t性别\t");
printf("数学\t英语\tc语言\t体育\t近代史\t计算机\t总分\t平均分\n");
for (i=0;i<ST_NUM;i++)
{
printf("%s\t%s\t%s\t",ST[i].num,ST[i].name,ST[i].sex);
printf("%3.2f\t",ST[i].match);
printf("%3.2f\t",ST[i].english);
printf("%3.2f\t",ST[i].c_language);
printf("%3.2f\t",ST[i].physical);
printf("%3.2f\t",ST[i].modern_history);
printf("%3.2f\t",ST[i].introduction_to_computer_science);
printf("%3.2f\t%3.2f\n",ST[i].sum,ST[i].average);
}
}
void process()
{
int i,j;
for(i=0;i<ST_NUM;i++)
{
ST[i].sum=ST[i].match+ST[i].english+ST[i].c_language+ST[i].physical+ST[i].modern_history+ST[i].introduction_to_computer_science;
ST[i].average=ST[i].sum/6;
}
}
void sort()
{
student tstu; int i,j;
for(i=0;i<ST_NUM;i++)
{
for(j=ST_NUM-1;j>i;j--)
{
if(ST[j].sum>ST[j-1].sum)
{
tstu=ST[j];
ST[j]=ST[i];
ST[i]=tstu;
}
}
}
}
int main()
{
input();
process();
sort();
output();
return 0;
}</span>
2.只用一个主函数
#include <stdio.h>
#include <string.h>
#define ST_NUM 1//学生数
typedef struct
{
char num[10]; //学号
char name[9]; //姓名
char sex[3]; //性别
float match; //数学
float english;
float c_language;
float physical;
float modern_history;
float introduction_to_computer_science;
float sum;
float average;
}student;
student ST[ST_NUM];
void main()
{
int i,j;
printf ("请输入%d个学生的信息:\n",ST_NUM);
for (i=0;i<ST_NUM;i++)
{
printf ("学号:");
scanf ("%s",ST[i].num);
printf("姓名:");
scanf ("%s",ST[i].name);
printf("性别:");
scanf("%s",ST[i].sex);
printf("科目数学的成绩:");
scanf("%f",&ST[i].match);
printf("科目英语的成绩:");
scanf("%f",&ST[i].english);
printf("科目c语言的成绩:");
scanf("%f",&ST[i].c_language);
printf("科目体育的成绩:");
scanf("%f",&ST[i].physical);
printf("科目近代史的成绩:");
scanf("%f",&ST[i].modern_history);
printf("科目计算机的成绩:");
scanf("%f",&ST[i].introduction_to_computer_science);
}
for(i=0;i<ST_NUM;i++)
{
ST[i].sum=ST[i].match+ST[i].english+ST[i].c_language+ST[i].physical+ST[i].modern_history+ST[i].introduction_to_computer_science;
ST[i].average=ST[i].sum/6;
}
student tstu;
for(i=0;i<ST_NUM;i++)
{
for(j=ST_NUM-1;j>i;j--)
{
if(ST[j].sum>ST[j-1].sum)
{
tstu=ST[j]; ST[j]=ST[i]; ST[i]=tstu;
}
}
}
printf("学号\t姓名\t性别\t");
printf("数学\t英语\tc语言\t体育\t近代史\t计算机\t总分\t平均分\n");
for (i=0;i<ST_NUM;i++)
{
printf("%s\t%s\t%s\t",ST[i].num,ST[i].name,ST[i].sex);
printf("%3.2f\t",ST[i].match);
printf("%3.2f\t",ST[i].english);
printf("%3.2f\t",ST[i].c_language);
printf("%3.2f\t",ST[i].physical);
printf("%3.2f\t",ST[i].modern_history);
printf("%3.2f\t",ST[i].introduction_to_computer_science);
printf("%3.2f\t%3.2f\n",ST[i].sum,ST[i].average);
}