永发信息网

C语言调试出错 0xC0000005: Access Violation.

答案:4  悬赏:30  手机版
解决时间 2021-02-03 21:20
  • 提问者网友:却不属于对方
  • 2021-02-03 06:43
高手帮忙看看,自学没人教态痛苦了,出点什么错误自己要看好半天。
好像是input函数下姓名互换的问题。帮我改正,谢了。不要拿别人做好的给我。
#include<stdio.h>
#include<string.h>
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<z&&(a[n][0]!=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<m&&(a[c][0]!=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;
}

}

1楼的办法不行,大家有条件的话可以先用软件试一下再回答。。辛苦了。
最佳答案
  • 五星知识达人网友:青尢
  • 2021-02-03 07:04
修改如下:

//---------------------------------------------------------------------------
#include<stdio.h>
#include<string.h>
#include <ctype.h>
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,name[b]);strcpy(name[b],name[c]);strcpy(name[c],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<z&&(a[n][0]!=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<m&&(a[c][0]!=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;
}

}

//---------------------------------------------------------------------------
全部回答
  • 1楼网友:等灯
  • 2021-02-03 10:00
strcpy(x[0],name[b]); => strcpy(x,name[b]); strcpy(name[b][0],name[c]); => strcpy(name[b],name[c]); ... ...
  • 2楼网友:独钓一江月
  • 2021-02-03 09:49
#include<stdio.h> #include<conio.h> #include<string.h> 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.0)>((a[c][1]+a[c][2]+a[c][3])/3.0)) { { strcpy(x,name[b]); strcpy(name[b],name[c]); strcpy(name[c],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<z&&(a[n][0]!=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<m&&(a[c][0]!=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; } }
  • 3楼网友:慢性怪人
  • 2021-02-03 08:37
好了,文件路径已经改回原来位置(刚才为了调试方便,将原程序中的文件路径改为另外的地址,所以你会看到这个提示。): //查询不及格 void fail() { int i=0,j=0,k=0,l=0,m=0,n,p,q,t,u; file *fp; stu s[n], *p1[n],*p2[n],*p3[n]; system("cls"); if((fp=fopen("student.txt","rb"))==null) { printf("cant't open file!\n");exit(0); } while(!feof(fp)) { fread(&s[i],sizeof(stu),1,fp); if(feof(fp)) break; i++; } t=i;i=0; for(u=0;uname,p1[n]->num,p1[n]->c); } printf("高数不及格:姓名 学号 高数成绩\n"); for(p=0;pname,p2[p]->num,p2[p]->math); } printf("英语不及格:姓名 学号 英语成绩\n"); for(q=0;qname,p3[q]->num,p3[q]->english); } fclose(fp); getch(); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯