问题与代码:
文件名称:输入学生成绩,用结构体进行处理
作者:邓哲
时间:2016年12月15日08:59:22
#include <stdio.h>
#define N 100 /*N表示最多允许的学生人数*/
struct Student
{
int num; //学号
int c; //C语言成绩
int math; //数学成绩
float aver; //两科均分
};
int main( )
{
int n,i,number=0;
//定义结构体数组存放多名同学的成绩
struct Student stu[N];
printf("请输入学生人数: ");
scanf("%d", &n);
printf("请输入学号、C和数学课的成绩: \n");
for(i=0;i<n;i++)
{
scanf("%d %d %d",&stu[i].num,&stu[i].c,&stu[i].math);
{
if(stu[i].c>=60&&stu[i].math>=60)
{
number++;
}
}
}
printf("学号 C 数学 均分\t\n");
for(i=0;i<n;i++)
{
stu[i].aver=(stu[i].c+stu[i].math)/2;
printf("%d %d %d %.2f\t\n",stu[i].num,stu[i].c,stu[i].math,stu[i].aver);
}
printf("两门课都及格的人数:%d",number);
return 0;
}
知识点总结:数组输入应循环输入,整形处于整形得到的为整形,若要小数,则强制转换为是实型。
(2)
问题与代码:
文件名称:输出科均分与得奖学金的同学的学号。
#include <stdio.h>
#define N 100 /*N表示最多允许的学生人数*/
struct Student
{
int num; //学号
int c; //C语言成绩
int math; //数学成绩
float aver; //两科均分
};
int main( )
{
int n,i,sumC=0,sumM=0;
//定义结构体数组存放多名同学的成绩
float aver1,aver2,score;
struct Student stu[N];
printf("请输入学生人数: ");
scanf("%d", &n);
printf("请输入学号、C和数学课的成绩: \n");
for(i=0;i<n;i++)
{
scanf("%d %d %d",&stu[i].num,&stu[i].c,&stu[i].math);
}
printf("学号 C 数学 学分绩\t\n");
for(i=0;i<n;i++)
{
sumC+=stu[i].c;
sumM+=stu[i].math;
score=(float)(stu[i].c*3+stu[i].math*4)/7;
printf("%d %d %d %.2f\t\n",stu[i].num,stu[i].c,stu[i].math,score);
}
aver1=sumC/n;
aver2=sumM/n;
printf("%.2f %.2f\t\n",aver1,aver2);
printf("得奖学金的同学的学号是:\n");
for(i=0;i<n;i++)
{
score=(float)(stu[i].c*3+stu[i].math*4)/7;
if(stu[i].c>=60&&stu[i].math>=60&&score>80)
{
printf("%d ",stu[i].num);
}
}
return 0;
}