C语言编程题目:数列有序!
答案:3 悬赏:20
解决时间 2021-04-17 16:09
- 提问者网友:他是我的あ男人
- 2021-04-17 13:12
题目描述
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序。
输入描述
输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。
输出描述
对于每个测试实例,输出插入新的元素后的数列。
输入样例
3 3
1 2 4
0 0
输出样例
1 2 3 4
以下是我编的,请问我应该在哪里插入可对这句话:“n和m同时为0标示输入数据的结束,本行不做处理”做出反应的代码???请高手指点!!!小女子感激不尽!!!另外,还有哪里能改正?
#include
int main()
{
int a[100];
int n,i,j,m,t1,t2,end;
scanf("%3d",&n);
scanf("%3d",&m);
for(i=0;i scanf("%3d",&a[i]);
//printf("%d",a[i]);
for(i=0;i{ if(a[i]>m)
{t1=a[i];
a[i]=m;
for(j=i+1;j {t2=a[j];
a[j]=t1;
t1=t2;
}
}
}
for(i=0;i<=n;i++)
printf("%3d",a[i]);
printf("\n");
return 0;
}
最佳答案
- 二级知识专家网友:单身小柠`猫♡
- 2021-04-17 14:20
您好!很高兴为您解答。
程序改进如下,改动的行已注释:
#include
int main()
{
int a[100];
int n,m,i,j,t1,t2;
do//使用do while循环
{
scanf("%3d",&n);
scanf("%3d",&m);
for(i=0;i
scanf("%3d",&a[i]);
for(i=0;i
{
if(a[i]>m)
{
t1=a[i];
a[i]=m;
for(j=i+1;j
{
t2=a[j];
a[j]=t1;
t1=t2;
}
}
}
for(i=0;i<=n;i++)
if(n!=0||m!=0) printf("%3d",a[i]);//此处加一个if语句,m、n非零才有输出
printf("\n");
}while(n!=0||m!=0);//判断,如n和m同时为0,标示输入数据的结束,此行不作处理
return 0;
}
望采纳~如您还有不解,欢迎追问~
全部回答
- 1楼网友:没感情的陌生人
- 2021-04-17 15:29
// s:~
#include <stdio.h>
int main()
{
int a[100], n, m, i;
while(1) {
scanf("%d%d", &n, &m);
if(n == 0 && m == 0)
break;
for(i = 0; i < n; ++i)
scanf("%d", a+i);
for(i = n-1; i >= 0 && a[i] > m; --i)
a[i+1] = a[i];
a[i+1] = m;
for(i = 0; i < n+1; ++i)
printf("%d ", a[i]);
putchar('\n');
}
return 0;
}
- 2楼网友:两不相欠
- 2021-04-17 15:10
#include
void main()
{
int a[100];
int n1 = 0;
int n2 = 0;
int m1 = 0;
int m2 = 0;
int i = 0;
int j = 0;
bool firstLine = true;
while(true)
{
scanf("%d %d", &n1, &m1);
if(firstLine)
{
n2 = n1;
m2 = m1;
}
firstLine = false;
for(i = 0; i < n1; i++)
{
scanf("%d", &a[i]);
}
if(n1 == 0 && m1 == 0)
break;
}
a[n2] = m2;
for(i = 0; i < n2 + 1; i++)
for(j = i; j < n2 + 1; j++)
if(a[i] > a[j])
{
a[i] = a[i] ^ a[j];
a[j] = a[i] ^ a[j];
a[i] = a[i] ^ a[j];
}
for(i = 0; i < n2 + 1; i++)
printf("%d ", a[i]);
printf("\n");
}
欢迎交流
我要举报
大家都在看
推荐资讯