C语言程序求改错 将一个数插入到一个数组中

#include "stdio.h"
void sub1(int a[10])
{
int i,j,k;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{k=a[j];
a[j]=a[j+1];
a[j+1]=k;}
}
void sub2(int b[],int k)
{
int i;
for(i=9;i>=0;i--)
{if(k<b[i])
{b[i+1]=b[i];b[i]=k;}
else {b[i+1]=k;break;}}
}
void main()
{
int i,a[10],n;
printf("please input ten numbers: \n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sub1(a);
printf("please input a number: \n");
scanf("%d",&n);
sub2(a,n);
for(i=0;i<11;i++)
printf("%d ",a[i]);
}
sub1是对10个数升序排序,sun2是将一个数插入到数组中仍按升序排序,但我的程序输出最后一个永远是10

求帮忙改错

第1个回答  推荐于2017-12-16
1、你的a[10]数组只定义了10个。。亲。。你输出的时候,输出了11个。。第11个是非法的呢。。没有分配的空间的。。。

2、你得自己学会调试呢。。比如你执行完sub1()的时候,你输出下。。如果正确,那么肯定就在sub2()出错啦。。本回答被提问者采纳
第2个回答  2015-01-23
1、数组a只有10个元素,怎么还能插入一个元素呢,那数组不都越界了吗?

a[10]改成a[11]就可以了

在c语言中,将一个数插入一个数组中的程序怎么写?
有一个已排好序(从大到小)的数组有5个元素,从键盘输入一个数,要求按原排序的规律将它插入到数组中1.#include<stdio.h>void main({int i,x,j; int {1,5,10,15,20}; scanf("%d",&x);for(i=0;i<5;i++) if(x=j;i--)a[i+1]=a[i]; \/*将位置j以后的数据都向后移一位...

C语言求助,把一个数插入到一个已排好序的数组中
1、可以用下面代码把数插入一个排好序的数组,数组进行迭代取值。2、下面是数组排序的代码,这里是按大小排序的,每次取值和输入的数比较,比输入的数小,就往后移动移位,直到移出输入数该放的位置,反之也是。3、或者用下图的代码实现,有一个已排好序的数组,现在插入一个数字。4、按原来已排好的...

C程序编写,将一个数插入到一个已经有序的数组里,要求保持有序
int i, j, t, k;\/\/定义循环变量 const int n = 10;\/\/定义数组元素个数 int a[n], b[n + 1];\/\/定义两个数组 printf("您喜欢的有序数组:\\n");\/\/输入数组序列文字提 for (i = 0; i < n; i++){ scanf("%d", &a[i]);\/\/循环输入数组元素 } printf("请输入想插入的数字...

C语言怎样将一个数插入一个数组
看数组大小,如果刚好,则要开辟空间,如果数组本身就足够,从插入位置移动数组,从后往前移,最后插入这个数值。

C语言编程:有一个已排好序的数组,现输入一个数插入到数组中,要求插入该...
main(){ int a[100],n=10,i,j,x;\/*输入10个数*\/ for (i=0;i<n;i++) scanf("%d", &a[i]);\/*输入1个数*\/ scanf("%d",&x);\/*找到需要插入的位置j*\/ for (i=0;i<n;i++) if (a[i]<x) j=i+1;\/*把j之后的数据后移*\/ for (i=n;i>j;i--) a[i]=a[i-...

C语言,如何将数字添加到一个已有的字符数组中?
数组要实时添加数字进去有点麻烦,如果是空数组就一个for循环按顺序输入就行了。如果是想把一个数字插入某个位置,那用一个变量temp记录插入的位置,先在原来的数组temp位置开始的数全部先后移一位,然后再a = waiting[temp];(a是你想插入的数字) 本回答由电脑网络分类达人 崔良飞推荐 举报| 答案纠错 | 评论 0...

c语言中如何实现输入一个整数,并将它存入一个数组
类似这样 int i[5],j;for(j=0;j<5;j++){ scanf("%d", i+j);}

C语言如何把一个整数按大小顺序插入已排好序的数组中?
main(){int i,j,p,n,s,a[11]={127,6,3,28,68,87,105,54,162,18};for(i=0;i<10;i++){for(j=i+1;j<10;j++) if(a[i]<=a[j]) p=a[i],a[i]=a[j],a[j]=p;}printf("输入参与排序的数字:");scanf("%d",&n);a[10]=n;for(i=0;i<11;i++)...

C语言问题:把一个整数按大小顺序插入已排好序的数组中。
a[p]=s;\/\/这三步交换a[i]和a[p],也就是把当前的最大值放到a[i]} printf("%d ",a[i]);}\/\/十次比较后,按最大到最小依次拍好了顺序,这个叫冒泡排序 printf("\\ninput number:\\n");scanf("%d",&n);\/\/输入要插入的数n for(i=0;i<10;i++)\/\/十次循环 if (n>a[i])\/\/...

c语言 数值插入:用户输入一个数字,把这个数字插入数组中大小合适的位...
;for(i=0;i<10;i++)printf("%d, ",a[i]);\/\/插入前的情况 printf("\\n");scanf("%d",&a[10]);sort(a,11);for(i=0;i<11;i++)printf("%d, ",a[i]);\/\/插入后的情况 printf("\\n");return 0;} c编程高手团队正在招新,有意者速速行动,一起学习,一起努力!!

相似回答