高手帮忙看看,自学没人教态痛苦了,出点什么错误自己要看好半天。
好像是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楼的办法不行,大家有条件的话可以先用软件试一下再回答。。辛苦了。
C语言调试出错 0xC0000005: Access Violation.
答案:4 悬赏:30 手机版
解决时间 2021-02-03 21:20
- 提问者网友:却不属于对方
- 2021-02-03 06:43
最佳答案
- 五星知识达人网友:青尢
- 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;
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#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();
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯