对于往数组中插入数字,我们可能最先想到的是直接往数组中存入数字,但是这个方法有点过于的简单粗暴,而且会很麻烦,最直接的麻烦处是关于对数字输入的地方,可能会输入数组[i+1]处,但是我们并不知道i等于多少,至少不能一个个的数。
那么我们可以去定义一个变量,将输入的数字存入这个变量中
int num;
scanf_s("%d", &num);
在将数组中的数字与这个num进行判定,并要从数组最末端进行判定,如果最末端的数字大于num则,将最末端的数字所处的位置向后移1位,以此类推。当数组中的某一个数字不大于num,那么num所处的位置就是这个数字的后一位,并对该变量进行插入,如下
a[i + 1] = num;//让a[i+1]赋值为num
那么整个程序便是以下所示
int main()
{
int i,n=15, num;//定义一个变量num,将输入的数字存入,定义变量n也方便当后面数字的输入数组对总数增加1,同时方便输出
int a[20] = { 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29 };
printf("请输入1—29之间的偶数:\n");
scanf_s("%d", &num);
for (i = n-1; i >=0; i--) {//从后面进行判断可以将大于num的数组进行向后移位
if (a[i] > num) {
a[i + 1] = a[i];//若a[i]大于num则向后进行移位,以便为num的插入空出一个位置
}
else break;//若a[i]未大于num那么num可能位于该a[i]的后一位,便可以跳出循环;
}
a[i + 1] = num;//让a[i+1]赋值为num
n = n + 1;//总数加一
for (i = 0; i < n; i++) {
printf("%4d", a[i]);//输出
}
}