当前位置:编程学习 > C/C++ >>

C语言的一段程序

下面的一段程序,希望各位帮我修改下(工具DEV-C++)

#include<stdio.h>
#include<string.h>
struct stu
{
char nam[20];
int b;
int c;
char d;
char e;
int f;
};
main()
{
int n,i;
scanf("%d",&n);
struct stu l[200];
for(i=0;i<n;i++)
scanf("%s%d%d%c%c%d",l[i].nam,&l[i].b,&l[i].c,l[i].d,l[i].e,&l[i].f);
int m[n];
for(i=0;i<n;i++)m[i]=0;
for(i=0;i<n;i++)
{
if(l[i].b>80&&l[i].f>=1)m[i]+=8000;
if(l[i].b>85&&l[i].c>80)m[i]+=4000;
if(l[i].b>90)m[i]+=2000;
if(l[i].b>85&&l[i].e=='Y')m[i]+=1000;
if(l[i].c>80&&l[i].d=='Y')m[i]+=850;
}
int k=0,u=0;
for(i=0;i<n;i++)
if(m[i]>u){u=m[i];k=i;}
printf("%s\n%d\n",l[k].nam,u);
u=0;
for(i=0;i<n;i++)
u+=m[i];
printf("%d\n",u);
system("pause");
}
测试数据

输入

4

YaoLin 87 82 Y N 0

ChenRuiyi 88 78 N Y 1

LiXin 92 88 N N 0

ZhangQin 83 87 Y N 1

输出

ChenRuiyi

9000

28700

谢谢!!!!!

追问:#include<stdio.h>
#include<string.h>
struct student
{
char name[20];
int pingjun,pingyi;
char ganbu,xibu;
int lunwen;
};

struct student stu[101];
int N;

char maxname[20];
int max1;
int maxall;

void work()
{
int i,maxtemp;
max1=maxall=0;

for(i=1;i<N;i++)
{

maxtemp=0;
if(stu[i].pingjun>80 && stu[i].lunwen!=0)
maxtemp+=8000;
if(stu[i].pingjun>85 && stu[i].pingyi>80)
maxtemp+=4000;
if(stu[i].pingjun>90)
maxtemp+=2000;
if(stu[i].pingjun>85 && stu[i].xibu=='Y')
maxtemp+=1000;
if(stu[i].pingyi>80 && stu[i].ganbu=='Y')
maxtemp+=850;

maxall+=maxtemp;
if(maxtemp>max1)
{
max1=maxtemp;
strcpy(maxname,stu[i].name);
}
}
}

main()
{
int i;
FILE *in,*out;

in=fopen("scholar.in","r");
out=fopen("scholar.out","w");
fscanf(in,"%d",&N);

for(i=1;i<=N;i++)
{
fscanf(in,"%s %d %d %c %c %d",stu[i].name,&stu[i].pingjun,&stu[i].pingyi,&stu[i].ganbu,&stu[i].xibu,&stu[i].lunwen);
}
work();
fprintf(out,"%s\n",maxname);
fprintf(out,"%d\n",max1);
fprintf(out,"%d\n",maxall);

}

请问,这段程序是正确的,可是,为什么它不用吸收空格和回车??

答案:帮你改好了. 你看看加粗部分.

#include<stdio.h>
#include<malloc.h> //malloc
#include<string.h>
struct stu
{
char nam[20];
int b;
int c;
char d;
char e;
int f;
};
main()
{
int n,i;
scanf("%d",&n);
struct stu l[200];
for(i=0;i<n;i++)

//加上三个%*c,第一个吸收回车,第二第三个吸收空格.
scanf("%*c%s%d%d%*c%c%*c%c%d",l[i].nam,&l[i].b,&l[i].c,&l[i].d,&l[i].e,&l[i].f);
int *m=(int *)malloc(sizeof(int)*n); //动态申请数组.
for(i=0;i<n;i++)m[i]=0;
for(i=0;i<n;i++)
{
if(l[i].b>80&&l[i].f>=1)m[i]+=8000;
if(l[i].b>85&&l[i].c>80)m[i]+=4000;
if(l[i].b>90)m[i]+=2000;
if(l[i].b>85&&l[i].e=='Y')m[i]+=1000;
if(l[i].c>80&&l[i].d=='Y')m[i]+=850;
}
int k=0,u=0;
for(i=0;i<n;i++)
if(m[i]>u){u=m[i];k=i;}
printf("%s\n%d\n",l[k].nam,u);
u=0;
for(i=0;i<n;i++)
u+=m[i];
printf("%d\n",u);

free(m); //释放m所占空间.
system("pause");
}
运行时截图:

上一个:C语言是什么 好学吗 ?
下一个:编写程序的C语言

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,