C语言数组问题

定义一个数组,从键盘接收10个数,对其进行从大到小排序,输出排序之后的结果。然后输入一个数,要求按已排好的顺序规律将它插入到数组中,并且输出数组中的数据。以下是我的程序:... 定义一个数组,从键盘接收10个数,对其进行从大到小排序,输出排序之后的结果。然后输入一个数,要求按已排好的顺序规律将它插入到数组中,并且输出数组中的数据。
以下是我的程序:
#include<stdio.h>
int main()
{
int i,j,a[12],m,t;
for(i=1;i<=10;i++)
{ printf("a[%d]=",i);
scanf("%d",&a[i]);} //从键盘接收10个数。
for(j=1;j<10;j++)
for(i=1;i<11-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}//对其进行从大到小排序。
printf("排序以后的结果为:\n");
for(i=1;i<=10;i++)
printf("%4d",a[i]);
printf("\n"); //输出排序之后的结果。
printf("请输入一个数:\n");
scanf("%d",&m); //输入一个数。
if(m>=a[10])a[11]=m;
else*/
for(i=1;i<=10;i++){
if(m>a[i])
{a[i+1]=m;
t=a[i+1];
for(j=i+1;j<=11;j++)
{a[j+1]=t;t=a[j+2];}
break;} //要求按已排好的顺序规律将它插入到数组中.
printf("新数组为:\n");
for(i=1;i<=11;i++)
printf("%d",a[i]);//输出数组中的数据。
}
}
但是第二部不对,各位高手帮忙看看?感激不尽!
展开
 我来答
ju...2@163.com
2011-05-28 · TA获得超过969个赞
知道小有建树答主
回答量:295
采纳率:0%
帮助的人:199万
展开全部
你的第一步做的是从小到大排列 我修改了你的第二步

#include<stdio.h>
int main()
{
int i,j,a[12],m,t;
for(i=1;i<=10;i++)
{ printf("a[%d]=",i);
scanf("%d",&a[i]);} //从键盘接收10个数。
for(j=1;j<10;j++)
for(i=1;i<11-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}//对其进行从大到小排序。
printf("排序以后的结果为:\n");
for(i=1;i<=10;i++)
printf("%4d",a[i]);
printf("\n"); //输出排序之后的结果。
printf("请输入一个数:\n");
scanf("%d",&m); //输入一个数。

//找到m的位置
for(i=1;i<=10;i++){
if(m>a[i])
continue;
else break;
}
//已找到m的位置为a[i],将从i开始的都往后移一位,最后将m赋给
for(j=10;j>=i;j--)a[j+1]=a[j];
a[i]=m;

printf("新数组为:\n");
for(i=1;i<=11;i++)
printf("%4d",a[i]);//输出数组中的数据。
}
追问
谢谢!感激不尽。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lyhdez1
推荐于2016-02-01 · TA获得超过1942个赞
知道小有建树答主
回答量:687
采纳率:100%
帮助的人:832万
展开全部
你确定是从大到小排列吗?我怎么感觉你的程序是从小到大排列的啊。
#include<stdio.h>
void main()
{
int i,j,a[12],m,t;
for(i=1;i<=10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
} //从键盘接收10个数。
for(j=1;j<10;j++)
for(i=1;i<11-j;i++)
if(a[i]<a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}//对其进行从大到小排序。
printf("排序以后的结果为:\n");
for(i=1;i<=10;i++)
printf("%4d",a[i]);
printf("\n"); //输出排序之后的结果。
printf("请输入一个数:\n");
scanf("%d",&m); //输入一个数。
if(m<=a[10])
a[11]=m;
else
for(i=1;i<=10;i++){
if(m>a[i])
{
t=a[i];
a[i]=m;
for(j=i+1;j<=11;j++)
{
a[j]=t;
if(j!=11)
t=a[j+1];
}
break;
}
} //要求按已排好的顺序规律将它插入到数组中.
printf("新数组为:\n");
for(i=1;i<=11;i++)
printf("%4d ",a[i]);//输出数组中的数据。
printf("\n");
}
更多追问追答
追问
还是不行呀!
追答
#include
void main()
{
int i,j,a[12],m,t,n;
for(i=1;ia[i])
{
t=a[i];
a[i]=m;
for(j=i+1;j<=11;j++)
{
n=a[j];
a[j]=t;
t=n;
}
break;
}
} //要求按已排好的顺序规律将它插入到数组中.
printf("新数组为:\n");
for(i=1;i<=11;i++)
printf("%4d ",a[i]);//输出数组中的数据。
printf("\n");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jxw_0017
2011-05-28 · TA获得超过107个赞
知道小有建树答主
回答量:411
采纳率:0%
帮助的人:188万
展开全部
for(i=1;i<=10;i++){
if(m>a[i])
{a[i+1]=m;
t=a[i+1];
for(j=i+1;j<=11;j++)
{a[j+1]=t;t=a[j+2];}
break;} //要求按已排好的顺序规律将它插入到数组中.
}
这段改为:
for(i = 1; i<10 ;i++)
{
if(a[i] < m)
{
for(j= 11; j > i+1 ; j--)
{
a[j] = a[j-1];
}
a[i+1] = m;
break;
}
}
追问
还是不行呀!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式