首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C语言一个小菜的有关问题

2012-04-07 
C语言一个小菜的问题C/C++ code//题目:题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插

C语言一个小菜的问题

C/C++ code
//题目:题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。#include<stdio.h>void main(){    int a[10]={1,2,3,9,11,12,13,15,67,80},i,j,temp1,temp2,number,end;    printf("原始的数组排序:\n");    for(i=0;i<10;i++)        printf("%-3d",a[i]);        printf("\n");    printf("请插入一个数字:");    scanf("%d",&number);    end=a[9];    if(number>end)          a[10]=end;    else    {      for(i=0;i<10;i++)      {          if(a[i]>number)          {             temp1=a[i];   //最大的数存于temp1            a[i]=number;   //最小的数存于a[i],目的是保留好a[i]的值;             for(j=i+1;j<11;j++)  //给a[i]后面增加一个, 用于存放比a[i]大的a[i+1],将较大的值放在a[j]中             {               temp2=a[j];               a[j]=temp1;               temp1=temp2;                                       }             break;          }      }    }for(i=0;i<=11;i++)    printf("%6d",a[i]);}


程序达到了目的,但是最后会弹出 Unhandled exception 0xC0000005;Access Violation,这里没有指针怎么会这样呢,求解啊?

[解决办法]
没看完。。不过你这个
if(number>end)
a[10]=end;
越界了、、

[解决办法]
你需要扩展数组的长度的话就用动态数组(vector),如果不想用,就在一开始申请足够的长度,比如你只要插入一个数,而原来有10个数的话,就申请为a[11],并且记住该数组的最后一个元素是a[10]而不是a[11],所以最后输出部分索引i不能等于11的。楼主看下书吧……
[解决办法]
数组长度不够,插入一个的话就是11个数了
这样改
C/C++ code
int a[11]={1,2,3,9,11,12,13,15,67,80}……..else    {      for(i=0;i<11;i++)      {          if(a[i]>number) 

热点排行