
C语言——在排序好的数列中插入一个数,使数列保持从小到大的顺序。 50
小生是刚学C语言的菜鸟,望各位大虾指教~至今只学了IF条件和循环&数组,所以大家帮忙改的时候不要用其他深奥的语句哟#include<stdio.h>main(){inti...
小生是刚学C语言的菜鸟,望各位大虾指教~
至今只学了IF条件和循环&数组,所以大家帮忙改的时候不要用其他深奥的语句哟
#include<stdio.h>
main()
{int i,j,k,l,t;
int r[11];
printf("任意输入十个整数:");
for (i=0;i<10;i++)
scanf("%d",&r[i]);
for(l=0;l<10;l++)
{for(j=0;j<10;j++)
if(r[j]>r[j+1])
{t=r[j];
r[j]=r[j+1];
r[j+1]=t;}
}
for (k=0;k<10;k++)
printf("%d ",r[k]);
printf("\n");
printf("请输入要插入的数的位置:");
scanf("%d",&i);
for(j=i;j<11;j++)
r[j+1]=r[j];
printf("请输入要插入的数:");
scanf("%d",&r[i]);
for(k=i;k<11;k++)
{if(r[i]>r[i+1])
{t=r[i];
r[i]=r[i+1];
r[i+1]=t;}
}
for(l=i;l>0;l--)
if(r[i]<r[i-1])
{t=r[i];
r[i]=r[i-1];
r[i-1]=t;}
printf("排列好的数为:");
for (k=0;k<11;k++)
printf("%d ",r[k]);
}
分数还会追加哟,谢谢大虾们了 展开
至今只学了IF条件和循环&数组,所以大家帮忙改的时候不要用其他深奥的语句哟
#include<stdio.h>
main()
{int i,j,k,l,t;
int r[11];
printf("任意输入十个整数:");
for (i=0;i<10;i++)
scanf("%d",&r[i]);
for(l=0;l<10;l++)
{for(j=0;j<10;j++)
if(r[j]>r[j+1])
{t=r[j];
r[j]=r[j+1];
r[j+1]=t;}
}
for (k=0;k<10;k++)
printf("%d ",r[k]);
printf("\n");
printf("请输入要插入的数的位置:");
scanf("%d",&i);
for(j=i;j<11;j++)
r[j+1]=r[j];
printf("请输入要插入的数:");
scanf("%d",&r[i]);
for(k=i;k<11;k++)
{if(r[i]>r[i+1])
{t=r[i];
r[i]=r[i+1];
r[i+1]=t;}
}
for(l=i;l>0;l--)
if(r[i]<r[i-1])
{t=r[i];
r[i]=r[i-1];
r[i-1]=t;}
printf("排列好的数为:");
for (k=0;k<11;k++)
printf("%d ",r[k]);
}
分数还会追加哟,谢谢大虾们了 展开
2个回答
展开全部
你题中提到的数列如果是指数组,那么就不太好办了,因为我们只能声明一个超大的数组来预存以后将要插入的元素,为了不发生下标越界,我们的数组越大越好,但是毕竟是一种浪费,所以...还是用数组吧,不过小一点
#include<stdio.h>
static counts = 0;//数组中含有的有效元素的个数,一开始是0个啦
const int list_size = 100;//数组的大小
main()
{
int i,j,t,d;
int list[list_size];
printf("任意输入十个整数:");
for (i=0;i<10;++i)
scanf("%d",&list[i]);
counts = 10;//现在数组中有10个有效元素,不要访问无效的元素,否则后果不可知
for(i=0;i<counts;++i)
{
for(j=i+1;j<counts;++j)
if(list[j]>list[i]) //交换
{
t = list[j];
list[j] = list[i];
list[i] = t;
}
}
printf("\n");
for (i=0;i<counts;++i)
printf("%d ",list[i]);
printf("\n");
printf("请输入要插入的数:");
scanf("%d",&d);
for(i=0;i<counts;++i)
{
if(list[i]>d)
{
break;//找到了要插入的位置,下标 i 在接下来要用到,跳出循环
}
}
for(j=counts;j>i;--j)
{
list[j] = list[j-1];
}
list[i] = d;//
将元素插入到合适的位置
++counts;//有效元素加 1
printf("排列好的数为:");
for (i=0;i<counts;++i)
printf("%d ",list[i]);
}
}
#include<stdio.h>
static counts = 0;//数组中含有的有效元素的个数,一开始是0个啦
const int list_size = 100;//数组的大小
main()
{
int i,j,t,d;
int list[list_size];
printf("任意输入十个整数:");
for (i=0;i<10;++i)
scanf("%d",&list[i]);
counts = 10;//现在数组中有10个有效元素,不要访问无效的元素,否则后果不可知
for(i=0;i<counts;++i)
{
for(j=i+1;j<counts;++j)
if(list[j]>list[i]) //交换
{
t = list[j];
list[j] = list[i];
list[i] = t;
}
}
printf("\n");
for (i=0;i<counts;++i)
printf("%d ",list[i]);
printf("\n");
printf("请输入要插入的数:");
scanf("%d",&d);
for(i=0;i<counts;++i)
{
if(list[i]>d)
{
break;//找到了要插入的位置,下标 i 在接下来要用到,跳出循环
}
}
for(j=counts;j>i;--j)
{
list[j] = list[j-1];
}
list[i] = d;//
将元素插入到合适的位置
++counts;//有效元素加 1
printf("排列好的数为:");
for (i=0;i<counts;++i)
printf("%d ",list[i]);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询