原题链接:[编程入门]数组插入处理
解题思路:这是常规思路,类似按身高排队一样,已经排好的队,你想插进去,找到比你矮的和比你高的前后两个人,之后的人往后退一步就行了。
首先是输入只含有9个元素的数组a[10],用for循环依次输入。接着输入插入的数字x,将x与数组元素比较,当a[i]<=x<=a[i+1]时,记录x应该插入的位置t=i+1。但是插入x之前要把元素往后移位,从后往前直到位置t,最后把x赋值给a[t],输出排好的a[10]。
注意事项:注意移位从后往前,不然从前往后会使数据丢失。找插入位置时注意break退出遍历循环,不然肯定是最后面。
参考代码:
#include <stdio.h>
int main()
{
int a[10];
int i=0;
int t;
for(i=0;i<9;i++)
{
scanf("%d",&a[i]);
}
a[9]=0;
int x;
scanf("%d",&x);
for (i=0;i<10;i++)
{
if(x>=a[i] && x<=a[i+1])
{
t=i+1;
break;
}
}
// printf("%d\n",t);
for (i=9;i>t;i--)
{
a[i]=a[i-1];
}
a[t]=x;
for (i=0;i<10;i++)
{
printf("%d\n",a[i]);
}
return 0;
}0.0分
101 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include <stdio.h> int main() { int a[10]; int i=0; int t; for(i=0;i<9;i++) { scanf("%d",&a[i]); } a[9]=0; int x; scanf("%d",&x); if(x<=a[0]) t=0; else if(x>=a[8]) t=9; else { for (i=0;i<9;i++) { if(x>=a[i] && x<=a[i+1]) { t=i+1; break; } } } for (i=9;i>t;i--) { a[i]=a[i-1]; } a[t]=x; for (i=0;i<10;i++) { printf("%d\n",a[i]); } return 0; }@杨欢 #include <stdio.h> #include <stdlib.h> int main(void) { int a[10]; int i=0; int t; for(i=0;i<9;i++) { scanf("%d",&a[i]); } a[9]=0; int x; scanf("%d",&x); for(i=0;i<10;i++) { if(x>=a[i]&&x<=a[i+1]) { t=i+1; break; } } if(x<a[0]) { for(i=9;i>0;i--) { a[i]=a[i-1]; } a[0]=x; }else if(x>a[8]) { a[9]=x; } else { for(i=9;i>t;i--) { a[i]=a[i-1]; } a[t]=x;} for(i=0;i<10;i++) { printf("%d ",a[i]); } }#include<stdio.h> int main(void) { int a[10],i,j,n; for(i=0;i<9;i++) scanf("%d",&a[i]); scanf("%d",&n); for(i=0;i<9;i++) { if(a[i]>n&&n>=a[i-1]) j=i; } for(i=8;i>=j;i--) a[i+1]=a[i]; a[j]=n; for(i=0;i<10;i++) printf("%d ",a[i]); return 0; }#include<stdio.h> #include<math.h> int main() { int a[10],b; int i,j; for(i=0;i<9;i++){ scanf("%d",a+i); } scanf("%d",&b); if(b<=a[0]){ for(i=9;i>=1;i--){ a[i]=a[i-1]; } a[0]=b; } else if(a[0]<b&&b<a[8]){ for(i=0;i<=7;i++){ if(a[i]<=b&&b<=a[i+1]){ for(j=8;j>=i+1;j--){ a[j+1]=a[j]; } a[i+1]=b;break; } } } else { a[8]=b; } for(i=0;i<=9;i++){ printf("%d\n",a[i]); } }@uq_20099990464 #include<stdio.h> int main( ) { int a[10],i; for(i=0;i<9;i++) { scanf("%d",&a[i]); //先定义10个数组元素 输入前九个 后一个赋为 0; } a[9]=0; int x;//n大于数组第x个元素 int n; scanf("%d",&n); for(i=0;i<9;i++) { if(x>=a[i]&&x<=a[i+1]) //查询n应该赋予的位置 int cnt=i+1; } for(i=9;i>t;i--) { a[i]=a[i-1]; 大于n的元素位置向先往后挪一位 } a[t]=x; //然后对把n赋给应该插入的位置 for(i=0;i<10;i++) printf("%d",&a[i]); return 0; }#include<stdio.h> int main() { int a[12], b; scanf("%d %d %d %d %d %d %d %d %d", &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7], &a[8], &a[9]); scanf("%d", &b); for (int i = 1;i <= 9;i++) { printf("%d\n", a[i]);//当未满足插入条件时依次输出值 if (b >= a[i] && b < a[i + 1])//当满足插入的条件时 { printf("%d\n", b);//输出插入的值 for (int j = i + 1;j <= 9;j++)//从i+1开始,将插入位置后面的数据输出 { printf("%d\n", a[j]); } return 0;//结束 } } return 0; }