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]);//输出数组中的数据。
}
}
但是第二部不对,各位高手帮忙看看?感激不尽! 展开
以下是我的程序:
#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]);//输出数组中的数据。
}
}
但是第二部不对,各位高手帮忙看看?感激不尽! 展开
3个回答
展开全部
你的第一步做的是从小到大排列 我修改了你的第二步
#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]);//输出数组中的数据。
}
#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]);//输出数组中的数据。
}
追问
谢谢!感激不尽。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你确定是从大到小排列吗?我怎么感觉你的程序是从小到大排列的啊。
#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<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");
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
}
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;
}
}
追问
还是不行呀!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |