解题思路:这是常规思路,类似按身高排队一样,已经排好的队,你想插进去,找到比你矮的和比你高的前后两个人,之后的人往后退一步就行了。
首先是输入只含有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分
151 人评分
#include<stdio.h> int main() { int a[9]; for(int x=0;x<9;++x) { scanf("%d",&a[x]); } int b[10]; for(int s=0;s<9;++s) { b[s]=a[s]; } scanf("%d",&b[9]); for(int j=1;j<10;++j) { for(int i=0;i<10-j;++i) { if(b[i]>b[i+1]) { int t=b[i]; b[i]=b[i+1]; b[i+1]=t; } } } for(int y=0;y<10;y++) { printf("%d\n",b[y]); } return 0; }
#include<stdio.h> int main() { int n; int array[10]; for(int i=0;i<9;i++) { scanf("%d",&array[i]); } scanf("%d",&n); for(int i=0;i<9;i++) { if(array[i]>n) { for(int j=9;j>i;j--) { array[j]=array[j-1]; } array[i]=array[i+1]; array[i]=n; break; } } for(int i=0;i<10;i++) { printf("%d\n",array[i]); } }
先给n找到合适的位置放入,依次遍历,把最大的值留给n,最后再把n放在数组末尾 #include<stdio.h> int main() { int a[10],i,n,tmp; for(i=0;i<9;i++){ scanf("%d",&a[i]); } //printf("\n"); scanf("%d",&n); for(i=0;i<9;i++){ if(n<a[i]){//n是小数,把a[i]换成n tmp=a[i];//把n放置进去了 a[i]=n; n=tmp; } }//n变为最大数 ,但n此时还在数组之外 a[9]=n;//第十个数字n赋值进去 for(i=0;i<10;i++){ printf("%d\n",a[i]); } return 0; }
#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; }
洛顾劢 2022-11-02 22:30:13 |
为什么后面只能是i--,我用i++就是错的,一直搞不明白
假如插入的那个数比原始数列的第一个数都要小,或者比第九个数都要大,这两种情况该怎么判断呢?
垃圾 2022-09-29 21:58:45 |
#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]); } }
垃圾 2022-09-29 21:58:58 |
这样可以吗
垃圾 2022-09-29 21:59:38 |
哈哈哈
垃圾 2022-09-29 22:03:17 |
为什么是乱码呀,我加了两个判断条件
#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; }
Joker 2022-10-27 19:04:52 |
a[i-1] ,当i=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]); } }
#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; }
wzc2022 2022-06-26 21:16:16 |
#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; }
Joker 2022-10-27 19:26:30 |
你这只是为了打印
WU-字符串比较 (C++代码)浏览:824 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:628 |
简单的a+b (C语言代码)浏览:457 |
Tom数 (C语言代码)浏览:517 |
C语言程序设计教程(第三版)课后习题12.3 (C语言代码)浏览:587 |
简单的a+b (C语言代码)浏览:444 |
众数问题 (C语言代码)浏览:717 |
C语言程序设计教程(第三版)课后习题10.1 (C++代码)浏览:529 |
1005答案错误为什么浏览:1988 |
C二级辅导-计负均正 (C语言代码)浏览:664 |