C语言错题记录1
问题描述
10个学生,每个学生的数据包括学号,姓名,3门课的成绩。对其进行处理
代码
#import <Foundation/Foundation.h>
#include<stdio.h>
#include<string.h>
#define n 10 //十个学生
struct student //定义结构体变量
{
char name[20];
int num;
double score[3];
double average;
}student1[n];
int main()
{
int i,j;
FILE *fp;
fp=fopen("./aa.txt","w");
for(i=0;i<n;i++)
{
printf("请输入%d学生的信息\n",i+1);
scanf("%d%s%lf%lf %lf",&student1[i].num,student1[i].name,&student1[i].score[0],&student1[i].score[1],&student1[i].score[2]);//地址常量 可不加&
}
//打印出各学生的信息
for(i=0;i<n;i++)
{
printf("输出各学生信息:");
printf("%d%s%f%f%f",student1[i].num,student1[i].name,student1[i].score[0],student1[i].score[1],student1[i].score[2]);
}
//找出成绩最高的那个学生并输出其信息
double max=student1[0].average;
int row=0;
for(i=0;i<n;i++)
{
if(max<student1[i].average)
{
max=student1[i].average;
}
row=i;
}
//各科平均成绩
double average_ever[3];//定义一个存放3门课的平均成绩的数组
int sum=0;
for(j=0;j<3;j++)
{
for(i=0;i<n;i++)
{
sum=sum+student1[i].score[j];
}
average_ever[j]=sum/n;
sum=0;
}
for(int d=0;d<3;d++)//输出各门课的平均成绩
{
printf("第%d门课的平均成绩依次为\n",d+1);
printf("%.1f\n",average_ever[d]);
fprintf(fp,"第%d门课的平均成绩依次为\n",d+1);
fprintf(fp,"%.1f\n",average_ever[d]);
}
printf("最高分的学生的数据\n"); //
printf("%d %s %f %f %f\n",student1[row].num,student1[row].name,student1[row].score[0],student1[row].score[1],student1[row].score[2]);
fprintf(fp,"最高分的学生的数据\n"); //
fprintf(fp,"%d%s %f%f%f\n",student1[row].num,student1[row].name,student1[row].score[0],student1[row].score[1],student1[row].score[2]);
fclose(fp);
return 0;
}
过程中的问题
- 问题1: 现实的分数信息为0
- 问题2: 多输入了一个成绩 但是 没记入
错误原因
- double型 输入为 lf 输出f
- printf 手贱打了& 作死系列!!