原题链接:[编程入门]数组插入处理
解题思路:这是常规思路,类似按身高排队一样,已经排好的队,你想插进去,找到比你矮的和比你高的前后两个人,之后的人往后退一步就行了。
首先是输入只含有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[8],c,b,mm; for( b=0;b<9;b++){ scanf("%d",&a[b]); } scanf("%d",&c); for(int b=0;b<9;b++){ if(c>a[b]) { printf("%d\n",a[b]); } if (c<a[b]) { printf("%d\n",c); break; } } for(int b=0;b<9;b++){ if (c<a[b]) { printf("%d\n",a[b]); } } return 0; }哪位大佬帮我看看我这样写为啥不对,有什么知识点掌握不对吗?谢谢啦 #include<stdio.h> int main() { int i,a[9],n,num,j; scanf("%d",&num); for(i=0;i<9;i++) { scanf("%d",&a[i]); } for(i=0;i<9;i++) { if(num>a[i]&&num<a[i+1]) { for(j=0;j<=i;j++) printf("%d ",a[j]); printf("%d ",num); for(j=i+1;j<n;j++) printf("%d ",a[j]); } } return 0; }#include <stdio.h> void show_arr(const int *pt); void sort(int *arr); void clau(int *pt, int n); int main(void) { int arr_length; int arr[9] = {1, 7, 8, 17, 23, 24, 59, 62, 101}; sort(arr); show_arr(arr); putchar('\n'); arr_length = sizeof(arr) / sizeof(int); printf("%5d", arr_length); clau(arr, arr_length); return 0; } void show_arr(const int *pt) { int i; for (i = 0; i < 10; i++) { printf("%5d", pt[i]); } } void clau(int *pt, int n) { int x; puts("Please enter a numbers:"); scanf("%d", &x); *(pt + 1) = x; sort(pt); show_arr(pt); } void sort(int *arr) { int i, j;#include<stdio.h> int main(){ int a[10]; int i; int n=sizeof(a)/sizeof(a[0]) ; for(int i=0;i<9;i++){ scanf("%d",&a[i]); } int x; scanf("%d",&x); for(;x>a[i]&&i!=n;i++) { printf("%d\n",a[i]); } printf("%d\n",x); for(;x<a[i];i++){ printf("%d\n",a[i]); } return 0; } 答案没问题啊,为什么总说我答案错误#include<stdio.h> int main() { int a[9],b[10],i,j,temp=0; printf("请输入9个整数:\n"); for(i=0;i<9;i++) scanf("%d",&a[i]); for(j=9;j>0;j--) { for(i=0;i<9;i++) { if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } } } for(i=0;i<9;i++) printf("%d ",a[i]); printf("\n"); printf("请输入要插入的整数:\n"); scanf("%d",&b[9]); for(i=0;i<9;i++) b[i]=a[i]; for(j=10;j>0;j--) { for(i=0;i<10;i++) { if(b[i]>b[i+1]) { temp=b[i]; b[i]=b[i+1]; b[i+1]=temp; } } } for(i=0;i<10;i++) printf("%d ",b[i]); return 0; }@迷失的小熊 a[9]=x;后面的 for (i=0;i<10;i++) { printf("%d ",a[i]); } return 0;是啥意思?