先排序
再插入一个数
再排序
数组大小你可以自己更改
#include
<stdio.h>
void
main()
{
int
i,j,m,temp,a[11]
for(i=0i<10i++)
scanf("%d",&a[i])
for(i=0i<10i++)
for(j=i+1j<10j++)
if(a[i]>a[j])
{
temp=a[i]
a[i]=a[j]
a[j]=temp
}
for(i=0i<10i++)
printf("%d
",a[i])
scanf("%d",&m)
for(i=0i<10i++)
if(a[i]>m)
{
temp=a[i]
a[i]=m
m=temp
}
a[10]=m
for(i=0i<11i++)
printf("%d
",a[i])
printf("\n")
}
程序2:如果题中已给排好序的数组
不必自己输入的话
#include
<stdio.h>
void
main()
{int
a[11]={1,4,6,9,13,16,19,28,40,100}
int
temp1,
temp2,number,end,i,j
printf("array
a:\n")
for
(i=0i<10i++)
printf("%5d",a[i])
printf("\n")
printf("insert
date:")
scanf("%d",&number)
end=a[9]
if(number>end)
a[10]=number
else
{for(i=0i<10i++)
{if(a[i]>number)
{temp1=a[i]
a[i]=number
for(j=i+1j<11j++)
{temp2=a[j]
a[j]=temp1
temp1=temp2
}
break
}
}
}
printf("now,array
a:\n")
for(i=0i<11i++)
printf("%d
",a[i])
}
C语言向有序数组中插入一个数使该数组仍保持有序
#include<stdio.h>
int main()
{int n,i,j,t,kprintf("您喜欢的数组长度:\n")
scanf("%d",&n)
int a[n],b[n+1]
printf("您喜欢的有序数组:\n")
for(i=0i<ni++)
{scanf("%d",&a[i])}
printf("请输入想插入的数字\n")
scanf("%d",&k)
for(i=0i<=ni++)
{if(i==n) b[i]=kelse b[i]=0}
for(i=0i<ni++)
{for(j=0j<nj++)
{b[j]=a[i++]}}
for(j=0j<nj++)
{for(i=0i<n-ji++)
{if(b[i]>b[i+1])
{t=b[i]b[i]=b[i+1]b[i+1]=t}}}
for(j=0j<n+1j++)
{printf("%d ",b[j])}}
C语言的数组有动态数组和静态数组两种。
1 静态数组。
对于静态数组,无法新增加数组成员数量。
所以一定要最初始定义足够大的数组,然后可以用一个整型变量维护数组中现有成员个数,再动态增加实际成员个数。
比如
int a[1000]int n = 0
while(scanf("%d",&a[n]) != EOF) n ++
这样的代码就可以实现增加数组成员数的类似效果。n为实际成员个数。
2 动态数组。
动态数组是可以随时改变数组成员个数的。不过为了确定当前数组个数,需要用两个整型变量来保存最大成员数,和已有成员数,这样就可以在不够的时候进行扩大。
int n = 0, size = 100 //n为当前元素个数,size为数组大小,初始为100.int *a = NULL//数组指针。
a = (int *)malloc(sizeof(int) * size) // 初始分配100个元素。
while(scanf("%d",&a[n]) != EOF)
{
n++
if(n >= size)//空间不足。
{
size+=100//增加100个元素空间。
a = (int *)realloc(sizeof(int)*size, a)//重新分配空间。
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)