帮忙找找错

来源:百度知道 编辑:UC知道 时间:2024/06/06 12:07:08
#include <stdio.h>
#include <stdlib.h>
typedef struct
{ char name[20];
int ave; int clas;
char sthd; char west;
int total; long prise;
} student;
student stu[100];

void main()
{int n,i,temp;
long sumup;
scanf("%d",&n);
for(i=0,temp=0;i<n;i++)
{scanf("%s%d%d%c%c%d",stu[i].name,&stu[i].ave,&stu[i].clas,&stu[i].sthd,&stu[i].west,&stu[i].total);
stu[i].prise=0;
if((stu[i].ave>80)&&(stu[i].total>=1))stu[i].prise=stu[i].prise+8000;
if(stu[i].ave>85&&stu[i].clas>80)stu[i].prise+=2000;
if(stu[i].ave>90)stu[i].prise+=1000;
if(stu[i].ave>85&&stu[i].west=='Y')stu[i].prise+=1000;
if(stu[i].clas>80)stu[i].prise+=850;
sumup=stu[i].prise;
if((i>=1)&&stu[i].prise>stu[temp].prise)temp=i;
}
printf("%s\n%ld\n%ld\n",stu[temp].name,stu[temp].prise,sumup) ;
system(&q

scanf("%s%d%d%c%c%d"...........
这里改成
scanf("%s%d%d %c %c%d".........
注意两个%c前面各加了一个空格.

你原来的问题就是输完前一个整数后,无论你是回车还是空格,那个回车或空格都会被%c接受去,就有问题了.

sacnf里加了空格后就确定了格式,你只要每个数据之间空一格输入就没问题了.你改成,也是可以的

scanf的格式串中,各格式参数最好要用分隔符分开,不然可能会无法正确接收输入的数据。

比如你的程序里%d%d连写了,那么输入整数时可能无法正确接收。