巴菲特和他的财富人生:C语言编程问题(请高手指教,这个程序能否运行成功,若不行请修正,谢)

来源:百度文库 编辑:神马品牌网 时间:2024/04/26 04:38:58
#include<stdio.h>
#include<string.h>
struct student
{ char num[10];
char name[8];
int score_ENG,score_CHN,score_math;
double avr;
double avr_ENG;
double avr_CHN;
double avr_math;
}stu[30],stu1[30];
void main()
{ int i,j,t,t1,t2,sum,sum_ENG,sum_CHN,sum_math;
char *temp,*temp1;
double avr_ENG,avr_CHN,avr_math;
FILE *fp;
j=0;
sum_ENG=0;
sum_CHN=0;
sum_math=0;
for(i=1;i<=30;i++)
{ printf("\n please input NO. %d score:\n",i);
printf("stuNO:");
scanf("%s",stu[i].num);
printf("name:");
scanf("%s",stu[i].name);
printf("score_ENG.");
scanf("%d",&stu[i].score_ENG);
printf("score_CHN.");
scanf("%d",&stu[i].score_CHN);
printf("score_math.");
scanf("%d",&stu[i].score_math);
sum=stu[i].score_ENG+stu[i].score_CHN+stu[i].score_math;
stu[i].avr=sum/3.0;
printf("avr=%5.1f",stu[i].avr);
sum_ENG+=stu[i].score_ENG;
sum_CHN+=stu[i].score_CHN;
sum_math+=stu[i].score_math;
}
avr_ENG=sum_ENG/30.0;
printf("avr_ENG=%5.1f",avr_ENG);
avr_CHN=sum_CHN/30.0;
printf("avr_CHN=%5.1f",avr_CHN);
avr_math=sum_math/30.0;
printf("avr_math=%5.1f",avr_math);
for(i=1;i<=30;i++)
{ if(stu[i].avr<stu[i+1].avr)
strcpy(temp,stu[i].num);
strcpy(stu[i].num,stu[i+1].num);
strcpy(stu[i+1].num,temp);
strcpy(temp1,stu[i].name);
strcpy(stu[i].name,stu[i+1].name);
strcpy(stu[i+1].name,temp1);
t=stu[i].score_ENG;stu[i].score_ENG=stu[i+1].score_ENG;stu[i+1].score_ENG=t;
t1=stu[i].score_CHN;stu[i].score_CHN=stu[i+1].score_CHN;stu[i+1].score_CHN=t1;
t2=stu[i].score_math;stu[i].score_math=stu[i+1].score_math;stu[i].score_math=t2;
printf("the sorted student is:\n");
}
for(i=1;i<=30;i++)
printf("%s,%s,%d,%d,%d\n",stu[i].num,stu[i].name,stu[i].score_ENG,stu[i].score_CHN,stu[i].score_math);
printf("the good students are:\n");
for(i=1;i<=3;i++)
printf("sum%d is %s\n",i,stu[i].name);
printf("THE unqualitide student are:");
for(i=1;i<=30;i++)
{ if(stu[i].score_ENG||stu[i].score_CHN||stu[i].score_math<60)
j++;
printf("%s ",stu[i].name);
if(j%5==0)
printf("\n");
}
fp=fopen("d:\\stud","w");
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}

temp和temp1两个指针没初始化吧.你定义了两个char*型的指针,没有分配空间给它们,后面直接用strcpy(temp,stu[i].num)和strcpy(temp1,stu[i].name)肯定要出错的.
所以可以这样修改:
char *temp = new char[8],*temp1 = new char[8]; //line 14