求助:Runtime Error:Segmentation fault,但是没有发现大佬说的数组开得太小或者指针异常的问题。

ggboy1999 2021-01-01 08:48:17
一个学校的题目,学校判题系统报错:Runtime Error:Segmentation fault,但是没有发现大佬说的数组开得太小或者指针异常的问题。
——————————————————————以下是题目———————————————————————————
题目描述
输入多个学生的学号、姓名和成绩,然后输出成绩最高的哪个学生的姓名和学号
输入描述
输入包含多组样例。
每组样例包含一个整数N,代表有N个学生。

接下来N行依次输入每个学生的学号、姓名和成绩。
若N = 0,则表示输入结束,这个样例不需要被处理。

输出描述
对于每组用例,你应当输出这组样例N个学生中成绩最高的学生的姓名和学号,每个输出占一行。
提示

样例输入复制样例输入数据
​2
1000 mingming 89

1001 lingling 90

3

1090 huanghuang 88

1076 zhouzhou 76

1003 xiaohong 87

0
样例输出
1001 lingling
1090 huanghuang
允许最长运行时间
3000ms
允许使用最大内存
1025MB
———————————————————以上是题目——————————————————————————
————————————————————我的代码:——————————————————————————
#include<stdio.h>
struct student
{
int number;
char name[100];
int score;
//int len;
};
void mystructioncontempt(struct student x[],int len)
{
int i=0;
//printf("len=%d\n",len);
struct student max=x[0];
for(;;)
{//printf("记号2\n");
if(max.score<=x[i].score)max=x[i];
//printf("%d %s",max.number,max.name);
i++;
//printf("i= %d len=%d\n",i,len);
if(i==len)
{
printf("%d %s\n",max.number,max.name);
break;
}
}
}
int main()
{
struct student s[100][100];
int len[100];
int i,j,n;
int flag=0;
for(i=0;;i++)
{
scanf("%d",&n);
if(n==0)break;
else
{//printf("记号3\n");
len[i]=n;
// printf("len[%d]=%d\n",i,n);
flag++;
for(j=0;j<n;j++)
{
// s[i][j].len=n;
scanf("%d %s %d",&s[i][j].number,s[i][j].name,&s[i][j].score);
//printf("记号2\n");
}
}
}
i=0;
for(;;)
{
mystructioncontempt(s[i],len[i]);
i++;
if(i==flag)break;
}
}
————————————————————————————————————————————————————————
测试软件 devc++5.11 编译通过功能没发现问题,实在不知道问题在哪里求助大佬
...全文
321 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ggboy1999 2021-01-04
  • 打赏
  • 举报
回复
各位好兄弟等我考完试回来结帖哈
qzjhjxj 2021-01-02
  • 打赏
  • 举报
回复 1
供参考:
#include<stdio.h>

struct student
{
    int number;
   char name[20];
    int score;
     //int len;
};

int main(int argc, char* argv[])
{
    struct student s[100][100];
    int i,j,k=0,n,max[100]={0};

    while(1)
      {
        scanf("%d",&n);
        if(n==0) break;
        else
           {
              max[k]=0;i=0;
              for(j=0;j<n;j++)
                 {
                    scanf("%d %s %d",&s[k][j].number,&s[k][j].name,&s[k][j].score);
                    if(max[k] < s[k][j].score)
                     {
                        max[k] = s[k][j].score;
                        i=j;
                     }
                 }
              max[k] = i;
              k++;
           }
      }
    for(i=0;i<k;i++)
       printf("%d %s\n",s[i][max[i]].number,s[i][max[i]].name);

 
    return 0;
}
qybao 2021-01-01
  • 打赏
  • 举报
回复
把for(;;)改成for(;i<flag;i++) 如果一开始就输入n为0,那么flag就是0,没有任何输入数据,for(;;)无条件进入循环执行mystructioncontempt(s[i],len[i]);因为没有输入数据,s[i]和len[i]的内存信息都是垃圾信息,所以导致访问错误,所以改成for(;i<flag;i++)就可以控制flag为0时就不进入for循环
ggboy1999 2021-01-01
  • 打赏
  • 举报
回复
来人呐
手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。课程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个课程准备精细,每一课都避免千篇一律,前一课有对后一课的预告,后一课有对前一课的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。基本提纲:1、课程综述、环境配置2、OpenVINO范例-超分辨率(super_resolution_demo)3、OpenVINO范例-道路分割(segmentation_demo)4、OpenVINO范例-汽车识别(security_barrier_camera_demo)5、OpenVINO范例-人脸识别(interactive_face_detection_demo)6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo)7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo)8、NCS和GOMFCTEMPLATE9、课程小结,资源分享

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧