C语言一个小菜的有关问题
C语言一个小菜的问题
程序达到了目的,但是最后会弹出 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
//题目:题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 #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)