kid_0203 2015-10-31 19:26 采纳率: 50%
浏览 2302
已采纳

帮忙看一下c语言这个关于数组的错误~

输入 10 个整数用选择排序法将它们按照升序排列好

原理说明:把一个数组从小到大排列,不停的扫描整个数组,第一次扫描把最小的数找出来并放在第一位,第二次扫描,把其余的数中最小的数找到放在第二位,以此类推,这样经过N-1次扫描之后就可以把N个数的顺序排列好了

 #define A 10
#include <stdio.h>
int main()
{
    int a[A],i,j,k,t;
    for(i=0;i<A;i++)
    scanf("%d",&a[i]);
    for(j=0;j<A-1;j++)
    {for(k=0;k<A-j;k++)
    if(a[k]>a[k+1]) {t=a[k];a[k]=a[k+1];a[k+1]=t;}}
    for(i=0;i<A;i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}

这段代码我在VC++6.0运行没问题,但是提交到学校网站编译结果是:
main.c:10:Bounds error: array reference (10) outside bounds of the array.
main.c:10: Pointer value: 0xbf946218
main.c:10: Object `a':
main.c:10: Address in memory: 0xbf9461f0 .. 0xbf946217
main.c:10: Size: 40 bytes
main.c:10: Element size: 4 bytes
main.c:10: Number of elements: 10
main.c:10: Created at: main.c, line 5
main.c:10: Storage class: stack

展开全部

  • 写回答

7条回答 默认 最新

  • 密函一封 2015-10-31 19:42
    关注

    {for(k=0;k if(a[k]>a[k+1]) {t=a[k];a[k]=a[k+1];a[k+1]=t;}}
    这个循环,当j=0,k=9时,a[k+1]越界,数组下标只能是0——9.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 fluent设置了自动保存后,会有几个时间点不保存
  • ¥20 激光照射到四象线探测器,通过液晶屏显示X、Y值
  • ¥15 这怎么做,怎么在我的思路下改下我这写的不对
  • ¥50 数据库开发问题求解答
  • ¥15 安装anaconda时报错
  • ¥20 如何用Python处理单元格内连续出现的重复词语?
  • ¥15 小程序有个导出到插件方式,我是在分包下引入的插件,这个export的路径对吗,我看官方文档上写的是相对路径
  • ¥20 希望有人能帮我完成这个设计( *ˊᵕˋ)
  • ¥100 将Intptr传入SetHdevmode()将Intptr传入后转换为DEVMODE的值与外部代码不一致
  • ¥50 基于ERA5数据计算VPD