编写了一段程序,可以运行,但是当输入数据的时候出现了
0x004026B8指令引用的0x00000000内存。该内存不能为written
新手不懂怎么回事儿,求解
程序如下:
#include <stdio.h>
#include <string.h>
const int RS=3;
char name[RS][8];
int no[RS];
float degree[RS][40];//存储学生三门课成绩及总分
void input(){
printf("输入数据:");
for (int i=1;i<=RS;i++){
printf(" 第%d个学生\n",i);
printf(" 姓名:");
scanf("%s",name[i-1]);
printf(" 学号:");
scanf("%d",no[i-1]);
printf(" 英语成绩:");
scanf("%f",degree[i-1][0]);
printf("程序设计成绩:");
scanf("%f",degree[i-1][1]);
printf(" 数学成绩:");
scanf("%f",degree[i-1][2]);
degree[i-1][3]=degree[i-1][0]+degree[i-1][1]+degree[i-1][2];
}
}
void sum(){
float s1=0,s2=0,s3=0;
printf("统计各科总成绩\n");
for (int i=0;i<=RS;i++)
{
s1=s1+degree[i][0];
s2=s2+degree[i][1];
s3=s3+degree[i][2];
}
printf(" 英语总成绩:%g\n",s1);
printf("程序设计总成绩:%g\n",s2);
printf(" 数学总成绩:%g\n",s3);
}
void query(){
int sel,bh,i;
char xm[8];
printf("数据查询\n");
printf(" 1.姓名 2.学号 请选择:");
scanf("%d",sel);
switch(sel)
{
case 1:printf(" 输入姓名:");
scanf("%s",xm);
for (i=0;i<=RS;i++)
if (strcmp(xm,name[i])==0){
printf(" 姓名:%s\n",xm);
printf(" 学号:%d\n",no[i]);
printf(" 英语成绩:%g\n",degree[i][0]);
printf("程序设计成绩:%g\n",degree[i][1]);
printf(" 数学成绩:%g\n",degree[i][2]);
printf(" 总成绩:%g\n",degree[i][3]);
}
break;
}
}
void main()
{
input();
sum();
query();
}
113 阅读
引用来自“six”的答案
引用来自“six”的答案
scanf("%s",name[i-1]);
改为 scanf("%s",&name[i-1]);
其余的类似
引用来自“痞子汤”的答案
引用来自“six”的答案