c语言题:输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Description输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。Input输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个...
Description
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
Output
对于每组输入数据,输出交换后的数列,每组输出占一行。
Sample Input
4 2 1 3 4
5 5 4 3 2 1
0
Sample Output
1 2 3 4
1 4 3 2 5然后这是我写的,自己觉得挺对的,答案也一样呀,可是评测系统不接受,是不是哪里错了,请指点。 #include<stdio.h>
int main()
{
int n,i,j,k,x[100],min,p,t;
while(scanf("%d",&n)!=EOF&&n!=0)
{
for(i=0;i<n;i++)
scanf("%d",&x[i]);
for(j=0;j<n;j++)
{
min=x[0];
if(min>x[j])
{
min=x[j];
k=j;
}
}
t=x[0];
x[0]=x[k];
x[k]=t;
for(p=0;p<n;p++)
printf("%d ",x[p]);
}
} 展开
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
Output
对于每组输入数据,输出交换后的数列,每组输出占一行。
Sample Input
4 2 1 3 4
5 5 4 3 2 1
0
Sample Output
1 2 3 4
1 4 3 2 5然后这是我写的,自己觉得挺对的,答案也一样呀,可是评测系统不接受,是不是哪里错了,请指点。 #include<stdio.h>
int main()
{
int n,i,j,k,x[100],min,p,t;
while(scanf("%d",&n)!=EOF&&n!=0)
{
for(i=0;i<n;i++)
scanf("%d",&x[i]);
for(j=0;j<n;j++)
{
min=x[0];
if(min>x[j])
{
min=x[j];
k=j;
}
}
t=x[0];
x[0]=x[k];
x[k]=t;
for(p=0;p<n;p++)
printf("%d ",x[p]);
}
} 展开
4个回答
展开全部
楼主你好
原题是要先输入所有的数组元素 然后输出:
Input:
4 2 1 3 4
5 5 4 3 2 1
0
Output:
1 2 3 4
1 4 3 2 5
而你的程序是输入一个数组的元素后 就输出对应的交换信息:
4 2 1 3 4
1 2 3 4
5 5 4 3 2 1
1 4 3 2 5
所以是不正确的
我修改了以下:(用一个数组n[N]记下输入数组x[N][100]元素的个数)
#include<stdio.h>
#define N 20
int main()
{
int n[N],i,j,x[N][100],min,k,t,p,m;
j=-1;
printf("Input:\n");
while(scanf("%d",&n[++j])!=EOF&&n[j]!=0)
{
for(i=0;i<n[j];i++)
scanf("%d",&x[j][i]);
}
m=j;
printf("Output:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n[i];j++)
{
min=x[i][0];
if(min>x[i][j])
{
min=x[i][j];
k=j;
}
}
t=x[i][0];
x[i][0]=x[i][k];
x[i][k]=t;
for(p=0;p<n[i];p++)
printf("%d ",x[i][p]);
printf("\n");
}
return 0;
}
运行结果为:
Input:
4 2 1 3 4
5 5 4 3 2 1
0
Output:
1 2 3 4
1 4 3 2 5
希望能帮助你哈
原题是要先输入所有的数组元素 然后输出:
Input:
4 2 1 3 4
5 5 4 3 2 1
0
Output:
1 2 3 4
1 4 3 2 5
而你的程序是输入一个数组的元素后 就输出对应的交换信息:
4 2 1 3 4
1 2 3 4
5 5 4 3 2 1
1 4 3 2 5
所以是不正确的
我修改了以下:(用一个数组n[N]记下输入数组x[N][100]元素的个数)
#include<stdio.h>
#define N 20
int main()
{
int n[N],i,j,x[N][100],min,k,t,p,m;
j=-1;
printf("Input:\n");
while(scanf("%d",&n[++j])!=EOF&&n[j]!=0)
{
for(i=0;i<n[j];i++)
scanf("%d",&x[j][i]);
}
m=j;
printf("Output:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n[i];j++)
{
min=x[i][0];
if(min>x[i][j])
{
min=x[i][j];
k=j;
}
}
t=x[i][0];
x[i][0]=x[i][k];
x[i][k]=t;
for(p=0;p<n[i];p++)
printf("%d ",x[i][p]);
printf("\n");
}
return 0;
}
运行结果为:
Input:
4 2 1 3 4
5 5 4 3 2 1
0
Output:
1 2 3 4
1 4 3 2 5
希望能帮助你哈
展开全部
请问用的什么评测系统?逻辑上是没问题,可能是你没有返回值的过,while结束后 加个return 1 。1只是个返回值,是几都无所谓,0也可以。因为你main函数式 int型的,说明你的函数是带返回值的函数,如果没有返回值,在编译的时候会有警告,可能评测系统比较严格,不允许有警告。
最好写成这样: int main(void).......
最好写成这样: int main(void).......
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int main(void)
{
int n,i,j,k,x[100],min,p,t;
while(scanf("%d",&n)!=EOF&&n!=0)
{
for(i=0;i<n;i++)
scanf("%d",&x[i]);
min=x[0];
for(j=1;j<n;j++)
{
if(min>x[j])
{
min=x[j];
k=j;
}
}
t=x[0];
x[0]=x[k];
x[k]=t;
for(p=0;p<n;p++)
printf("%d ",x[p]);
}
}
int main(void)
{
int n,i,j,k,x[100],min,p,t;
while(scanf("%d",&n)!=EOF&&n!=0)
{
for(i=0;i<n;i++)
scanf("%d",&x[i]);
min=x[0];
for(j=1;j<n;j++)
{
if(min>x[j])
{
min=x[j];
k=j;
}
}
t=x[0];
x[0]=x[k];
x[k]=t;
for(p=0;p<n;p++)
printf("%d ",x[p]);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将它与最前面的数交换后输出这些数... - - 这句话什么意思 感觉不能理解啊 莫不是英文原题 你按照翻译之后做的吗..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询