user-0 提问: 程序出现未知错误

回复:
user: user-1
content: score 是个数组，再取地址就是地址的地址，所以错误了！

user: user-2
content: 你的数组长度是确定的，测试时n可能大于１０，就会发生数组下标越界的未定义行为； 你可以用malloc(),free()函数，运行时按输入的n申请空间，模拟动态数组

user: user-3
content: 引用 11 楼 qq_34984564 的回复:我是按照题目要求输入的。 输入样例： 3 Joe Math990112 89 Mike CS991301 100 Mary EE990830 95 输出样例： Mike CS991301 Joe Math990112  可是提交代码的时候没有输入数据这一环节啊，我刚才给min,max赋值以后再提交还是显示有段错误。 我在Linux测试没有问题，输出正常；

user: user-0
content: 我是按照题目要求输入的。 输入样例： 3 Joe Math990112 89 Mike CS991301 100 Mary EE990830 95 输出样例： Mike CS991301 Joe Math990112  可是提交代码的时候没有输入数据这一环节啊，我刚才给min,max赋值以后再提交还是显示有段错误。

user: user-3
content: #include <stdio.h>  struct student{     char sname[11];     char sno[11];     int score; }stu[10];  int main(){     int n;     int max,min,i=0,k,t;     scanf("%d",&n);      for(i=0;i<n;i++){         scanf("%s %s %d", stu[i].sname, stu[i].sno, &stu[i].score);     }      t = k = 0;     max = min = stu[0].score;     for(i=0;i<n;i++){         if(stu[i].score<=100 && stu[i].score>=0){             if(stu[i].score>max){                 max = stu[i].score;                 k = i;             }             if(stu[i].score<min){                 min = stu[i].score;                 t = i;             }         }     }     printf("%s %s\n",stu[k].sname,stu[k].sno);     printf("%s %s\n",stu[t].sname,stu[t].sno);     return 0; }

user: user-3
content: 引用 8 楼 qq_34984564 的回复:那个我改掉了，改完以后可以编译运行。   #include <stdio.h>    struct student{     char sname[11];     char sno[11];     int score; }stu[10];    int main(){     int n;     int max,min,i=0,k,t;     scanf("%d",&n);        for(i=0;i<n;i++){         scanf("%s %s %d", stu[i].sname, stu[i].sno, &stu[i].score);     }        t = k = 0;     max = min = stu[0].score;     for(i=0;i<n;i++){         if(stu[i].score<=100 && stu[i].score>=0){             if(stu[i].score>max){                 max = stu[i].score;                 k = i;             }             if(stu[i].score<min){                 min = stu[i].score;                 t = i;             }         }     }     printf("%s %s\n",stu[k].sname,stu[k].sno);     printf("%s %s\n",stu[t].sname,stu[t].sno);     return 0; }  这是我提交的代码，有段错误。不理解是哪里导致的段错误？ 需要初始化min和max;  另外， 你是如何输入的？

user: user-0
content: 那个我改掉了，改完以后可以编译运行。   #include <stdio.h>    struct student{     char sname[11];     char sno[11];     int score; }stu[10];    int main(){     int n;     int max,min,i=0,k,t;     scanf("%d",&n);        for(i=0;i<n;i++){         scanf("%s %s %d", stu[i].sname, stu[i].sno, &stu[i].score);     }        t = k = 0;     for(i=0;i<n;i++){         if(stu[i].score<=100 && stu[i].score>=0){             if(stu[i].score>max){                 max = stu[i].score;                 k = i;             }             if(stu[i].score<min){                 min = stu[i].score;                 t = i;             }         }     }     printf("%s %s\n",stu[k].sname,stu[k].sno);     printf("%s %s\n",stu[t].sname,stu[t].sno);     return 0; }  这是我提交的代码，有段错误。不理解是哪里导致的段错误？

user: user-4
content: int score[5]; stu[i].score<=100  能解释下这个为什么能编译通过，是什么意思呢？

user: user-0
content: 上面那段代码可以运行，答案也没有错 为什么提交以后编译错误？

user: user-3
content: #include <stdio.h>     #define     MAX_SIZE    10   struct student{     char sname[11];     char sno[11];     int score; }stu[MAX_SIZE];   int main(){     int n;     int max,min,i=0,k,t;     scanf("%d",&n);       for(i=0;i<n;i++){         scanf("%s %s %d", stu[i].sname, stu[i].sno, &stu[i].score);     }     printf("\n\n");       t = k = 0;     for(i=0;i<n;i++){         if(stu[i].score<=100 && stu[i].score>=0){             if(stu[i].score>max){                 max = stu[i].score;                 k = i;                 //printf("%s %s\n",stu[k].sname,stu[k].sno);             }             if(stu[i].score<min){                 min = stu[i].score;                 t = i;                 //printf("%s %s\n",stu[t].sname,stu[t].sno);             }         }     }     printf("%s %s\n",stu[k].sname,stu[k].sno);     printf("%s %s\n",stu[t].sname,stu[t].sno);     return 0; }

user: user-3
content: #include <stdio.h>   #define     MAX_SIZE    10  struct student{     char sname[11];     char sno[11];     int score; }stu[MAX_SIZE];  int main(){     int n;     int max,min,i=0,k,t;     scanf("%d",&n);      for(i=0;i<n;i++){         scanf("%s %s %d", stu[i].sname, stu[i].sno, &stu[i].score);     }     printf("\n\n");      t = k = 0;     for(i=0;i<n;i++){         if(stu[i].score<=100 && stu[i].score>=0){             if(stu[i].score>max){                 max = stu[i].score;                 k = i;                 //printf("%s %s\n",stu[k].sname,stu[k].sno);             }             if(stu[i].score<min){                 min = stu[i].score;                 t = i;                 //printf("%s %s\n",stu[t].sname,stu[t].sno);             }         }     }     printf("%s %s\n",stu[k].sname,stu[k].sno);     printf("%s %s\n",stu[t].sname,stu[t].sno);     return 0; } 1. stu数组的长度需要确定，不定数组长度C语言不支持。 2. scanf参数有问题，建议看一下scanf的使用； 3. 最大值和最小值，需要等循环处理结束后输出。 4. score只有一个值，所以不能定义数组score[5]

user: user-4
content: 编译应该不能通过才对。  score是数组， 类似stu[i].score <=100这样的地方都会报错。

user: user-0
content: 上面心急打错了，运行时总是提示程序已停止运行。