C语言如何把一个整数按大小顺序插入已排好序的数组中?

 我来答
百度网友8f83ae5
推荐于2019-08-03 · TA获得超过263个赞
知道小有建树答主
回答量:144
采纳率:100%
帮助的人:139万
展开全部
#include <stdio.h>
void main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};//这个不用说了吧
for (i=0;i<10;i++)//十次循环
{
p=i;//到此p等于i等于0
q=a[i];//到此q等于a[0]=127
for (j=i+1;j<10;j++)//九次循环
if(q<a[j])//将q也就是a[i]和他后面的那些个元素比较,如果大于
{
p=j;//p赋值为较大的那个的下标
q=a[j];//q赋值为较大值
}
if (p!=i)//如果p!=i,注意初始时是等于的,不等于表示最大值不是a[0]是a[p]
{
s=a[i];
a[i]=a[p];
a[p]=s;//这三步交换a[i]和a[p],也就是把当前的最大值放到a[i]
}
printf("%d ",a[i]);
}//十次比较后,按最大到最小依次拍好了顺序,这个叫冒泡排序
printf("\ninput number:\n");
scanf("%d",&n);//输入要插入的数n
for(i=0;i<10;i++)//十次循环
if (n>a[i])//如果n大于a[i],表示可以插入到a[i]位置
{
for(s=9;s>=i;s--)
a[s+1]=a[s];//将a[i]后面小于n的都后移,这个比较难理解你好好想想
break;
}
a[i]=n;//插入
for(i=0;i<=10;i++)//依次输出
printf("%d ",a[i]);
printf("\n");
}

以上是我加的注释,你看看,咱们共同进步吧!
TableDI
2024-07-18 广告
当我们谈到Python与Excel的拆分时,通常指的是使用Python的库来读取Excel文件中的数据,然后根据某种逻辑(如按行、按列、按特定值等)将数据拆分成多个部分或输出到新的Excel文件中。上海悉息信息科技有限公司在处理这类任务时,... 点击进入详情页
本回答由TableDI提供
娜lucky哈哈
2018-05-29 · TA获得超过1.2万个赞
知道小有建树答主
回答量:602
采纳率:100%
帮助的人:16.3万
展开全部

第一种方法

main(){
int i,j,p,n,s,a[11]={127,6,3,28,68,87,105,54,162,18};
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++) 
if(a[i]<=a[j]) 
p=a[i],a[i]=a[j],a[j]=p;
}
printf("输入参与排序的数字:");
scanf("%d",&n);
a[10]=n;
for(i=0;i<11;i++)if(a[10]>a[i])
p=a[i],a[i]=a[10],a[10]=p;
for(i=0;i<11;i++)
printf("%d ",a[i]);
}
第二中种方法
main(){ 
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18}; 
for(i=0;i<10;i++) 
{
p=i;q=a[i]; 
for(j=i+1;j<10;j++) 
if(q<a[j])
{p=j;q=a[j];} 
if(p!=i) 
{ s=a[i]; 
a[i]=a[p]; 
a[p]=s; 

printf("%d ",a[i]); 

printf("\ninput number:\n"); 
scanf("%d",&n); 
for(i=0;i<10;i++) 
if(n>a[i]) 
{
for(s=9;s>=i;s--) 
a[s+1]=a[s]; 
break;
}
a[i]=n; 
for(i=0;i<=10;i++) 
printf("%d ",a[i]); 
printf("\n");
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
和屋昂黄
2018-03-18 · TA获得超过1.1万个赞
知道小有建树答主
回答量:54
采纳率:100%
帮助的人:7351
展开全部

/*整体思路是先将输入的十个数从小到大排列好,然后再将单独输入的数与数组比较大小并将其插入数组中,这部分是关键。需要注意的是我们在刚开始时将数组长度定义为11,就是为后面插入一个数预留的空位*/

#include <stdio.h>

void main()

{

int a[11];                  /*数组长度为11*/

int n=10,i,j,k,t;

int x,count;

printf("请输入十个整数:\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

for(i=0;i<9;i++)            /*用选择法将输入的十个数排列好*/

{

k=i;

for(j=i+1;j<10;j++)

if(a[j]<a[k])

k=j;

if(k!=i)

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

for(i=0;i<10;i++)             /*输出排列好的十个数*/

printf("%d ",a[i]);

printf("\n");

printf("请输入任意一个整数:\n");

scanf("%d",&x);

for(i=0;i<10;i++)           /*将输入的数x与数组元素比较大小*/ {

if(x<a[i])

{

for(j=10;j>i;j--)

a[j]=a[j-1];

a[i]=x;

break;

}

}

for(i=0;i<11;i++)           /*输出最后结果*/

printf("%d ",a[i]);

printf("\n");

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8f83ae5
2018-02-02 · TA获得超过263个赞
知道小有建树答主
回答量:144
采纳率:100%
帮助的人:139万
展开全部
#include <stdio.h>
void main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};//这个不用说了吧
for (i=0;i<10;i++)//十次循环
{
p=i;//到此p等于i等于0
q=a[i];//到此q等于a[0]=127
for (j=i+1;j<10;j++)//九次循环
if(q<a[j])//将q也就是a[i]和他后面的那些个元素比较,如果大于
{
p=j;//p赋值为较大的那个的下标
q=a[j];//q赋值为较大值
}
if (p!=i)//如果p!=i,注意初始时是等于的,不等于表示最大值不是a[0]是a[p]
{
s=a[i];
a[i]=a[p];
a[p]=s;//这三步交换a[i]和a[p],也就是把当前的最大值放到a[i]
}
printf("%d ",a[i]);
}//十次比较后,按最大到最小依次拍好了顺序,这个叫冒泡排序
printf("\ninput number:\n");
scanf("%d",&n);//输入要插入的数n
for(i=0;i<10;i++)//十次循环
if (n>a[i])//如果n大于a[i],表示可以插入到a[i]位置
{
for(s=9;s>=i;s--)
a[s+1]=a[s];//将a[i]后面小于n的都后移,这个比较难理解你好好想想
break;
}
a[i]=n;//插入
for(i=0;i<=10;i++)//依次输出
printf("%d ",a[i]);
printf("\n");
}

以上是我加的注释,你看看,咱们共同进步吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式