1.有一个非递减有序的数组,编程实现插入一个数,要求插入该数后数组仍然为非递减有序
编程思路,假设要插入的数为x,从数组的最后一个元素开始搜索x的插入位置,如果数组中的元素比x大,则后移一个位置,并继续往前搜素,直到找到一个小于或等于x的元素为止,x插入此元素的后面这个位置,该位置已经腾空,只需将x插入即可
#include <stdio.h>
#define maxsize 10 //定义符号常量,对几个数排序,maxsize的值就是几
int main()
{
int a[maxsize]={10,20,30,45,45,50}; //非递减有序数组
int size=6; //数组a的长度为6
int i,x; //定义变量
printf("请输入x的值"); //输出屏幕提示语
scanf("%d",&x); //输出x的值
i=size-1; //查找x的输入位置,从后往前查找,边查找边后移比x大的元素
while(i>=0&&a[i]>x){ //进入循环
a[i+1]=a[i];//当元素大于x时,后移
i--;
}
a[i+1]=x; //插入x的值
size++; //数组长度加1
for(i=0;i<size;i++) //输出数组
printf("%d",a[i]);
printf("\n"); //换行
return 0;
}
2.编程实现求如下5×5矩形周边元素的平方和并输出