(注:暂时先记录这些问题,后期再持续更新)
int count,i,n; //count 为记录不及格成绩的个数
double grade,total; //grade 存放输入的成绩,total保存成绩之和
printf("Enter n:");
scanf("%d",&n); //输入学生人数n
total = 0;
count = 0;
for(i=1;i<=n;i++){
printf("Enter grade #%d:",i);
scanf("%lf",&grade); //输入第i个成绩
total = total + grade;
if(grade<60){ //统计不及格的学生人数
count++;
}
}
printf("Grade average = %.2f\n",total/n);
printf("Number of failures = %d\n",count);
return 0;
int count,num; //count 为记录不及格成绩的个数;num 为记录输入的个数
double grade,total; //grade 存放输入的成绩,total保存成绩之和
num = 0;
total = 0;
count = 0;
printf("Enter grades:");
scanf("%lf",&grade);
while(grade>=0){
total = total+grade; //累加成绩
num++; //计数
if(grade<60)
count++;
scanf("%lf",&grade); //读入一个新数据,为下次循环做猪呢比
}
if(num != 0){
printf("Grade average = %.2f\n",total/num);
printf("Number of failures is %d\n",count);
}
else
printf("Grade average is 0\n");
return 0;
int i,mark,max,n;
printf("Enter n:");
scanf("%d",&n); //输入数据个数
printf("Enter %d marks:",n);
scanf("%d",&mark); //读入第一个成绩
max = mark;
for(i=1;i<n;i++){
scanf("%d",&mark);
if(max<mark)
max = mark;
}
printf("Max = %d\n",max);
return 0;
注:若输入的一批以负数结束的成绩中选出最高分,可以用while语句实现。
struct student{ //学生信息结构定义
int num; //学号
char name[10]; //姓名
int computer,english,math; //三门课程成绩
double average; //个人平均成绩
};
double count_average(struct student s); //函数声明,计算个人平均成绩
int main(void)
{
int i,n;
struct student s1; //定义结构变量
printf("Input n:");
scanf("%d",&n);
printf("Input the student's number,name,course scores\n");
for(i=1;i<=n;i++){
printf("No.%d:",i);
scanf("%d%s%d%d%d",&s1.num,&s1.name,&s1.math,&s1.english,&s1.computer);
s1.average = count_average(s1); //函数调用,结构变量作为函数参数
printf("num:%d,name:%s,average:%.2lf\n",s1.num,s1.name,s1.average);
}
return 0;
}
double count_average(struct student s)
{
return (s.math + s.english + s.computer)/3.0;
}
struct student{ //学生信息结构定义
int num; //学号
char name[10]; //姓名
int computer,english,math; //三门课程成绩
double average; //个人平均成绩
};
int main(void)
{
int i,index,j,n;
struct student students[50],temp; //定义结构数组
double count_average(struct student s);
/* 输入*/
printf("Input n:");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Input the info of No.%d:\n",i+1);
printf("number:");
scanf("%d",&students[i].num);
printf("name:");
scanf("%s",&students[i].name);
printf("math.score:");
scanf("%s",&students[i].math);
printf("english.score:");
scanf("%s",&students[i].english);
printf("computer.score:");
scanf("%s",&students[i].computer);
students[i].average = count_average(students[i]);
}
/* 结构数组排序,选择排序法*/
for(i=0;i<n-1;i++){
index = i;
for(j=i+1;j<n;j++)
if(students[j].average>students[index].average) //比较平均成绩
index = j;
temp = students[index]; //交换数组元素
students[index] = students[i];
students[i] = temp;
}
/* 输出排序后的信息*/
printf("num\tname\taverage\n");
for(i=0;i<n;i++)
printf("%d\t%s\t%.2lf\n",students[i].num,students[i].name,students[i].average);
return 0;
}
double count_average(struct student s)
{
return (s.math + s.english + s.computer)/3.0;
}
注:本题中,定义了结构数组students用于存储学生信息,先输入n个学生的基本信息,其中个人平均成绩的计算通过调用函数count_average()实现,然后使用选择排序法根据个人平均成绩从高到低对学生的信息排序,最后按顺序输出结构数组中的数据。