求求前辈,软件工程大一新生C语言问题:排序

//可以运行,但是不知道为什么tempfele。exe已停止工作spacer.gif

#include "stdio.h"

void main()

{

    int a[4],t,i,s,d,j;

    for(i=0;i<5;i++)

    {

    scanf("%d",&a[i]); 

    }

    for(s=0;s<4;s++)

    {

    for(j=0;j<4-s;j++)//j<9-i

    {

    if(a[j]>a[j+1])

    {

    t=a[j];a[j]=a[j+1];a[j+1]=t;                                               

    }

    }                                                                                                                                                                                                                             

    }

    for(d=0;d<5;d++)

    {

    printf("%d  ",a[d]);

    }

}



溯源1
浏览 1039回答 1
1回答

onemoo

数组a只能存4个元素,但你第一个for循环中i从0到4却循环了5次! 也就是第5次循环时scanf的写入越界了,这就有可能引起运行时错误。 而且似乎你把数组a就当成有5个元素了...另外,main函数的返回类型为int,不要写成void! 而且函数不需要参数时要在参数列表中写上void,不要留空!
打开App,查看更多内容
随时随地看视频慕课网APP