解题思路:
首先是输入只含有9个元素的数组a[10],用for循环依次输入。接着输入插入的数字m,将m与数组元素比较。
1、当m<=a[0]时,记录t=0;
2、当m>=a[8]时,记录9;
3、当a[i]<=x<=a[i+1]时,记录x应该插入的位置t=i+1。
但是插入m之前要把元素往后移位,从后往前直到位置t,最后把m赋值给a[t],用for循环输出排好的a[10]。
注意事项:1、找插入位置时注意break退出遍历循环,不然就会出错误;
2、移位从后往前,不然从前往后会使数据丢失。
参考代码:
#include<stdio.h> int main() { int a[10],i,m,t; for(i=0;i<9;i++) { scanf("%d",&a[i]); } a[9]=0; scanf("%d",&m); if(m<=a[0]) t=0; if(m>=a[8]) t=9; for(i=0;i<9;i++) { if(m>=a[i]&&m<=a[i+1]) { t=i+1; break; } } for(i=9;i>t;i--) { a[i]=a[i-1]; } a[t]=m; for(i=0;i<10;i++) { printf("%d",a[i]); printf("\n"); } return 0; }
0.0分
70 人评分
#include<stdio.h> int main() { int i,n,pos; int arr[10]; for(i=0;i<=8;i++) { scanf("%d",&arr[i]); } // printf("请输入需要插入的数字"); scanf("%d",&n); for(i=0;i<=8;i++) { if(n>arr[i]&&n<arr[i+1]) { pos=i+1; break; } } for(i=8;i>=pos;i--) { arr[i+1]=arr[i]; } arr[pos]=n; printf("插入后的数组为\n"); for(i=0;i<10;i++) { printf("%d\n",arr[i]); } return 0; }这个为啥会错啊
我这个更加容易懂 #include<stdio.h> int main() { int a[10],b[10],i,c; for(i=0;i<9;i++) scanf("%d",&a[i]); scanf("%d",&c); for(i=0;i<9;i++) { if(a[i]<c) b[i]=a[i]; if(a[i]>=c) { b[i]=c; c=a[i]; } } b[i]=c; for(i=0;i<10;i++) printf("%d\n",b[i]); }
#include<stdio.h> int main() { int a[10],i; a[9]=0; for(i=0;i<9;i++) { scanf("%d",&a[i]); } int m,t; scanf("%d",&m); if(m<a[0]) { t=0; } if(m>a[8]) { t=9; } for(i=0;i<8;i++) { if(m>=a[i]&&m<=a[i+1]) { t=i+1; } } for(i=9;i>t-1;i--) { a[i]=a[i-1]; } a[t]=m; for(i=0;i<10;i++) { printf("%d\n",a[i]); } return 0; }
我这不是更简单,哪有那么复杂。 #include<stdio.h> int main(int argc,char *argv[]) { int a[9],b,i,c[9],s=0; for(i = 0;i<9;i++){ scanf("%d",&a[i]); } scanf("%d",&b); for(i = 0;i<9;i++){ if (b >a[i]){ s++; } } for(i=0;i<9;i++){ c[i] = a[i]; } a[s] = b; for(i = s+1;i<10;i++){ a[i] = c[i-1]; } for(i = 0;i<10;i++){ printf("%d\n",a[i]); } return 0; }
#include<stdio.h> int main() { int a[10],i,t,n; for(i=0;i<9;i++) {scanf("%d",&a[i]);} a[9]=0; scanf("%d",&n); for(i=0;i<10;i++) {if(a[i]>n) {t=i;break;} } if(i==9) a[9]=n; else {for(i=9;i>8-t;i--) a[i]=a[i-1]; a[t]=n; } for(i=0;i<10;i++) printf("%d\n",a[i]); return 0; } 哪位大佬帮我看看,有什么问题,0分
演绎者 2024-04-10 14:44:23 |
i==9这句你的i已经没有变量了就不对了,应该是t==9,后面的循环应该最后一位9开始到你的t位就结束 for (i = 9; i> t; i--) 你的输出才是正确的。
#include<stdio.h> int main() { int a[10]; for(int i=0;i<9;i++){ scanf("%d",&a[i]); } a[9]=0; int x; scanf("%d",&x); if(x<=a[0]){ for(int i=9;i>0;i--){ a[i]=a[i-1]; } a[0]=x; } else if(x>=a[8]){ a[9]=x; } else{ for(int i=0;i<8;i++){ if(x>=a[i]&&x<=a[i+1]){ for(int j=8;j>i;j--){ a[j+1]=a[j]; } a[i+1]=x; break;//很重要!!! } } } for(int i=0;i<10;i++){ printf("%d\n",a[i
#include<stdio.h> int main() { int i,j,temp; int arr[10]={1,7,8,17,23,24,59,62,101}; scanf("%d",&arr[9]); for(i=0;i<9;i++) { for(j=0;j<9-i;j++) { if(arr[j]>arr[j+1]) { temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp;} } } for(i=0;i<10;i++) {printf("%d\n",arr[i]);} return 0; }
#include<stdio.h> int main() { int x[9]; int i,j; int a,t=0; for(i=0;i<9;i++) { scanf("%d",&x[i]); } scanf("%d",&a); for(j=0;j<9;j++) { if(a<x[j]) { t=x[j]; x[j]=a; a=t; } printf("%d\n",x[j]); } printf("%d\n",a); return 0; }
C语言考试练习题_保留字母 (C语言代码)浏览:637 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1019 |
C语言程序设计教程(第三版)课后习题8.3 (Java代码)浏览:1402 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:798 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:686 |
三角形 (C语言代码)浏览:965 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:727 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1968 |
计算质因子 (C语言代码)浏览:778 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:812 |