解题思路:这是常规思路,类似按身高排队一样,已经排好的队,你想插进去,找到比你矮的和比你高的前后两个人,之后的人往后退一步就行了。
首先是输入只含有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分
146 人评分
#include<stdio.h> int main() { int a[9],b,c; for(b=0;b<9;b++) { scanf("%d ",&a[b]);} scanf("%d",&c); for(b=0;b<9;b++){ if(b==0&&c<a[b]){ printf("%d\n",c); while(b<9) {printf("%d\n",a[b]); b++;} break;} else if(b==8&&c>a[b]) {printf("%d\n",c);printf("%d\n",a[b]);break;} else{ if(c<a[b]) {printf("%d\n",c); while(b<9){ printf("%d\n",a[b]); b++;} break;} printf("%d\n",a[b]);}} }
答主没有考虑到插入的数比所有的数都大的情况
jxnbhckmshckabckmsbfkdnfjzghsbfkdudn 2022-02-11 23:24:05 |
一开始定义的时候,直接把t定义为0,就考虑到了,比所有元素都小的情况;在写一个else if分支就可以解决比所有元素都大的情况了。
jxnbhckmshckabckmsbfkdnfjzghsbfkdudn 2022-02-11 23:25:09 |
我错了,没有赋值的t,默认为0。你是对的。
Joker 2022-10-27 19:34:45 |
@uq_33512450683 新建原数组长度+1的数组,找到位置插入后将后面所有位置后挪一位更简洁
#include<stdio.h> int main() { int a[10],i,j,t,min; //printf("请输入9个正序排列的整数\n"); for(i=0;i<9;i++) { scanf("%d",&a[i]); } //printf("请输入1个整数\n"); for(i=9;i<10;i++) { scanf("%d",&a[i]); } for(i=0;i<10;i++) { min=a[i]; for(j=i+1;j<10;j++) { if(a[j]<min) { t=min; min=a[j]; a[j]=t; } } printf("%d\n",min); } return 0; }
吴昵称 2022-02-03 14:54:47 |
大神,我的这个为啥不对#include <stdio.h> int main() { int a[10], i = 0; for (i = 0; i < 9; i++) { scanf("%d", &a[i]); } int n; scanf("%d", &n); while (n > a[i]) i++; for (int j = 0; j < i; j++) { printf("%d ", a[j]); } printf("%d ", n); for (int j = i; j < 9; j++) { printf("%d ", a[j]); } printf(""); }
我写的,改了几次,现在好了 #include <stdio.h> int main() { int a[10], i, b, k, j; for (i = 0; i < 9; i++) scanf("%d", &a[i]); scanf("%d", &b); for (i = 0; i < 9; i++) if (b > a[i] && b < a[i + 1]) { k = i + 1; break; } for (j = 9; i < j; j--) a[j] = a[j - 1]; a[k] = b; for (i = 0; i < 10; i++) printf("%d\n", a[i]); return 0; }
怎么说呢,(题目也没说清楚),如果插入的数比所有数都大,即插入到a[10](或者插入的数比所有数都小,即应插入到a[0]),则这串代码不可以,没有包括所有可能。 #include<stdio.h> int main() { int a[10],n,i,t,j=0; for(i=0;i<9;i++) { scanf("%d",&a[i]); } scanf("%d",&n); if(n<a[0]) { j=0; }else { for(i=0;i<9;i++) { if(n>a[i]&&n<a[i+1]) { break; } } j=i+1; } if(j==10) j=9; for(i=9;i>j;i--) { a[i]=a[i-1]; } a[j]=n; for(i=0;i<10;i++) { printf("%d\n",a[i]); } }(代码较长,因为是初学,勿喷,谢谢)
#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; }
Eionky 2022-02-21 17:04:57 |
如果要插入的值比已经排好的值都大或者都小,就不会输出任何内容
#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;
P1001 (C语言代码)浏览:801 |
文科生的悲哀 (C语言代码)浏览:1401 |
1024题解浏览:809 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:593 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:771 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:538 |
A+B for Input-Output Practice (I) (C语言代码)浏览:574 |
简单的a+b (C语言代码)浏览:641 |
发工资咯 (C语言代码)浏览:792 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:445 |