user-0 提问: 地址错误

回复:
user: user-1
content: #include <stdio.h> #define N 3 #define PR printf #define SF scanf /*输入十个学生的三门科目的成绩，输出三门课的平均成绩，   以及最高分的学生数据（学号，姓名，三门课的成绩和平均成绩）   */ struct Student {     char num[6];     char name[8];     double score[3];     double avr; }stu[N];  int main() {     int i,j,maxi;     double max;     double sum;     double averange;     //输入数据     for(i=1;i<=N;i++)     {         PR("input %d student ID is:\n ",i);         PR("NO:");         //SF("%s",&stu[i].num);         SF("%s", stu[i].num);         PR("name:");         //SF("%S",&stu[i].name);         SF("%s", stu[i].name);         for(j = 1;j <= 3;j++)         {             PR("score %d:",j);             SF("%lf", &stu[i].score[j]);         }     }     //计算     averange = 0;     max = 0;     for(i = 0;i < N; i++)     {         sum = 0;         for(j = 0;j < 3;j++)             sum+=stu[i].score[j];         stu[i].avr = sum / 3.0;         averange += stu[i].avr;         if(sum > max)         {             max=sum;             maxi=i;         }     }     averange /=N*1.0;      //输出     PR("NO. name score1 score2 score3 averange\n ");     for(i = 0; i < N; i++)     {         PR("%5s%10s",stu[i].num,stu[i].name);         for(j = 0; j < 3; j++)             PR("%9.2lf" , stu[i].score[j]);         PR("%8.2lf\n" , stu[i].avr);     }     PR("averange=%5.2lf\n",averange);     PR("The highest score is:student %s,%s", stu[maxi].num,stu[maxi].name);     //PR("his score are %6.2lf %6.2lf %6.2lf %6.2lf  averange is :%5.2lf",stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);     PR("his score are %6.2lf %6.2lf %6.2lf  averange is :%5.2lf",stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);       return 0; }  供参考～

user: user-0
content: 引用 4 楼 user-2的回复:你这是越界了吧。数组的大小为N，那么它的下标应该是0~N-1，可是你的for循环下标是1~N  CSDN论坛新手指南 好的，我回去再试试，之前改过，粘贴错了

user: user-2
content: 你这是越界了吧。数组的大小为N，那么它的下标应该是0~N-1，可是你的for循环下标是1~N  CSDN论坛新手指南

user: user-0
content: 引用 2 楼 qq_45768871的回复:[quote=引用 1 楼 自信男孩的回复:]#include <stdio.h> #define N 3 #define PR printf #define SF scanf /*输入十个学生的三门科目的成绩，输出三门课的平均成绩，   以及最高分的学生数据（学号，姓名，三门课的成绩和平均成绩）   */ struct Student {     char num[6];     char name[8];     double score[3];     double avr; }stu[N];  int main() {     int i,j,maxi;     double max;     double sum;     double averange;     //输入数据     for(i=1;i<=N;i++)     {         PR("input %d student ID is:\n ",i);         PR("NO:");         //SF("%s",&stu[i].num);         SF("%s", stu[i].num);         PR("name:");         //SF("%S",&stu[i].name);         SF("%s", stu[i].name);         for(j = 1;j <= 3;j++)         {             PR("score %d:",j);             SF("%lf", &stu[i].score[j]);         }     }     //计算     averange = 0;     max = 0;     for(i = 0;i < N; i++)     {         sum = 0;         for(j = 0;j < 3;j++)             sum+=stu[i].score[j];         stu[i].avr = sum / 3.0;         averange += stu[i].avr;         if(sum > max)         {             max=sum;             maxi=i;         }     }     averange /=N*1.0;      //输出     PR("NO. name score1 score2 score3 averange\n ");     for(i = 0; i < N; i++)     {         PR("%5s%10s",stu[i].num,stu[i].name);         for(j = 0; j < 3; j++)             PR("%9.2lf" , stu[i].score[j]);         PR("%8.2lf\n" , stu[i].avr);     }     PR("averange=%5.2lf\n",averange);     PR("The highest score is:student %s,%s", stu[maxi].num,stu[maxi].name);     //PR("his score are %6.2lf %6.2lf %6.2lf %6.2lf  averange is :%5.2lf",stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);     PR("his score are %6.2lf %6.2lf %6.2lf  averange is :%5.2lf",stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);       return 0; }  供参考～ 为什么呢，这样呢，scanf里面的[/quote] 用VS2019还是有问题，地址错误，为什么呢

user: user-0
content: 引用 1 楼 自信男孩的回复:#include <stdio.h> #define N 3 #define PR printf #define SF scanf /*输入十个学生的三门科目的成绩，输出三门课的平均成绩，   以及最高分的学生数据（学号，姓名，三门课的成绩和平均成绩）   */ struct Student {     char num[6];     char name[8];     double score[3];     double avr; }stu[N];  int main() {     int i,j,maxi;     double max;     double sum;     double averange;     //输入数据     for(i=1;i<=N;i++)     {         PR("input %d student ID is:\n ",i);         PR("NO:");         //SF("%s",&stu[i].num);         SF("%s", stu[i].num);         PR("name:");         //SF("%S",&stu[i].name);         SF("%s", stu[i].name);         for(j = 1;j <= 3;j++)         {             PR("score %d:",j);             SF("%lf", &stu[i].score[j]);         }     }     //计算     averange = 0;     max = 0;     for(i = 0;i < N; i++)     {         sum = 0;         for(j = 0;j < 3;j++)             sum+=stu[i].score[j];         stu[i].avr = sum / 3.0;         averange += stu[i].avr;         if(sum > max)         {             max=sum;             maxi=i;         }     }     averange /=N*1.0;      //输出     PR("NO. name score1 score2 score3 averange\n ");     for(i = 0; i < N; i++)     {         PR("%5s%10s",stu[i].num,stu[i].name);         for(j = 0; j < 3; j++)             PR("%9.2lf" , stu[i].score[j]);         PR("%8.2lf\n" , stu[i].avr);     }     PR("averange=%5.2lf\n",averange);     PR("The highest score is:student %s,%s", stu[maxi].num,stu[maxi].name);     //PR("his score are %6.2lf %6.2lf %6.2lf %6.2lf  averange is :%5.2lf",stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);     PR("his score are %6.2lf %6.2lf %6.2lf  averange is :%5.2lf",stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);       return 0; }  供参考～ 为什么呢，这样呢，scanf里面的