C语言调试出错 0xC0000005: Access Violation.0
高手帮忙看看,自学没人教态痛苦了,出点什么错误自己要看好半天。
好像是input函数下姓名互换的问题。帮我改正,谢了。不要拿别人做好的给我。
#include
#include
void input(float a[][4],char name[][30],int d)
{
long b,c,m,t;
char x[30];
printf("输入学生个数:");
scanf("%d",&m);
for (b=d-1;b>=d-m;b--)
{printf("姓名:");
scanf("%s",name[b]);
printf("学号:");
scanf("%f",&a[b][0]);
printf("语文成绩:");
scanf("%f",&a[b][1]);
printf("数学成绩:");
scanf("%f",&a[b][2]);
printf("英语成绩:");
scanf("%f",&a[b][3]);
}
for(b=d-1;b>0;b--)
for(c=b-1;c>=0;c--)
{if (((a[b][1]+a[b][2]+a[b][3])/3)>((a[c][1]+a[c][2]+a[c][3])/3))
{{strcpy(x[0],name[b]);strcpy(name[b][0],name[c]);strcpy(name[c][0],x);}{t=a[b][0];a[b][0]=a[c][0];a[c][0]=t;}{t=a[b][1];a[b][1]=a[c][1];a[c][1]=t;}{t=a[b][2];a[b][2]=a[c][2];a[c][2]=t;}{t=a[b][3];a[b][3]=a[c][3];a[c][3]=t;}}
}
}
void chazhao(float a[][4],char name[][30],int z)
{
int m,n;
printf("输入学号:");
scanf("%d",&m);
for(n=0;n
{if (a[n][0]==m)
printf("第%d名:",n+1);printf("%s",name[n]); printf("学号:%.0f 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 平均分:%.2f\n",a[n][0],a[n][1],a[n][2],a[n][3],((a[n][1]+a[n][2]+a[n][3])/3));
}
}
void shuchu(float a[][4],char name[][30])
{
int c,m;
printf("输入要查看的学生个数(分数由高到低):");
scanf("%d",&m);
for (c=0;c
{printf("第%d名:",c+1);puts(name[c]); printf("学号:%.0f 语文成绩:%.2f 数学成绩:%.2f 英语成绩:%.2f 平均分:%.2f\n",a[c][0],a[c][1],a[c][2],a[c][3],((a[c][1]+a[c][2]+a[c][3])/3));}
}
main()
{
float a[400][4]={0};
char b[400][30];
int e;
int m=400;
int n=4;
loop: printf("\n 主菜单\n===================================\n\t1.输入学生分数\n\t2.根据学号查看学生成绩\n\t3.输出前N名学生的成绩\n\t0.退出\n===================================\n");
scanf("%d",&e);
switch(e)
{case 1:input(a,b,m);goto loop;
case 2:chazhao(a,b,m);getch();goto loop;
case 3:shuchu(a,b);
getch();goto loop;
case 0:printf("谢谢使用!"); getch();break;
default:printf("输入错误!");getch();goto loop;
}
}