莯&芜 2022-02-09 19:20 采纳率: 87%
浏览 18
已结题

请问如何输入,这题一输入回车就成了如图1直接结束了,输入输出如图二所示

#include<stdio.h>
int main()
{
int i,j,score[5][5];
float ave[5];
char name[5][10];
for(i=1;i<5;i++)
{
scanf("%s",name[i]);
for(j=1;j<=5;j++)
scanf("%d",score[i][j]);

}
for(i=0;i<5;i++)
{
    score[i][5]+=score[i][i];        
}
for(i=0;i<=4;i++)

{
for(j=0;j<4;j++)
ave[i]+=score[j][i];
ave[i]=ave[i]/5;
}
printf("姓名 总分 语文 数学 英语 综合\n");
for(i=0;i<5;i++)
{
printf("%6s",name[i]);
for(j=0;j<=4;j++)
printf("%4d",score[i][j]);
printf("\n");
}
printf("课程平均分:");
for(i=1;i<=4;i++)
printf("%.1f",ave[i]);
printf("\n");
return 0;
}
图一

img


图2

img

  • 写回答

2条回答 默认 最新

  • aaaa0ggMC 2022-02-09 19:38
    关注

    scanf("%d",score[i][j]) score前面带一个&
    改成:
    scanf("%d",&score[i][j])
    很明显这是内存访问问题,记住:
    指针或者字符型数组才不要加'&'取址符号,其他都要加,否则运气不好就会访问到不该访问的内存,然后崩掉
    你的代码这一类属于给野指针赋值,除此之外还有给空指针赋值,如下:

    char * img = NULL;
    scanf("%s",img);//崩溃
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月17日
  • 已采纳回答 2月9日
  • 创建了问题 2月9日