c语言这个输入十个数字按小到大排序,再插入一个数字要求也是按顺序排列?
- 提问者网友:暗中人
- 2021-04-24 09:11
void main()
{
int a[10];
int i,j,t,m;
printf("请输入十个数字:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
printf("请插入一个数字");
scanf("%d",&m);
if(m>a[9]);
a[10]=m;
else
{
for(i=0;i<10;i++)
if(m<a[i])
{
for(j=9;j>=0;j++)
a[j+1]=a[j];
a[i]=m;
break;
}
}
printf("插入后的顺序为:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
}这个程序哪里有问题?
- 五星知识达人网友:迟山
- 2021-04-24 09:27
帮你改好了. 你看看.
#include<stdio.h>
void main()
{
int a[11]; //因为要增加一个数字. 所以长度应该+1;
int i,j,t,m;
printf("请输入十个数字:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
printf("请插入一个数字");
scanf("%d",&m);
if(m>a[9]) //多了个分号;
a[10]=m;
else
{
for(i=0;i<10;i++)
if(m<a[i])
{
for(j=9;j>=i;j--) //j应该是>=i. 并且是-- 不是++
{
a[j+1]=a[j];
}
a[i]=m;
break;
}
}
printf("插入后的顺序为:\n");
for(i=0;i<11;i++) //增加了一个数字,所以长度要+1
printf("%3d",a[i]);
}
运行时截图:
- 1楼网友:琴狂剑也妄
- 2021-04-24 11:57
- 2楼网友:狂恋
- 2021-04-24 10:36
本来就有十个数,再加紧一个不就11个了啊,所以数组长度应该是11噻
#include<stdio.h> void main() { int a[11]; int i,j,t,m; printf("请输入十个数字:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) {t=a[i]; a[i]=a[i+1]; a[i+1]=t; } for(i=0;i<10;i++) printf("%3d",a[i]); printf("\n"); printf("请插入一个数字"); scanf("%d",&m); if(m>a[9]); a[10]=m; else { for(i=0;i<10;i++) if(m<a[i]) { for(j=10;j>=0;j--) a[j]=a[j-1]; a[j]=m; break; } } printf("插入后的顺序为:\n"); for(i=0;i<11;i++) printf("%d",a[i]);