求助!!绝对值排序
题目:【问题描述】
输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。
【要求】
【数据输入】输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。
【数据输出】对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。
【样例输入】
3 3 -4 2
4 0 1 2 -3
0
【样例输出】
-4 3 2
-3 2 1 0
PS:排序没问题,主要是输入那里,如何把输入的东西装进数组中(按照样例那样,一行输入几个数字)。。求大神指点。。最后C和C++的方式都写一遍,多谢。
{:5_104:}没代码看。。只能凭空说了,用过for循环逐一赋值应该可以把要求实现。 ANDES 发表于 2015-4-2 15:19
没代码看。。只能凭空说了,用过for循环逐一赋值应该可以把要求实现。
while(cin >> n && n != 0){
for(i = 0; i < n; i++){
cin >> a;
}//n记录一行输入数字的个数,a数组接收要处理的数据
我百度到的 ,不过没有用呐。。 这不科学啊 发表于 2015-4-2 15:50
while(cin >> n && n != 0){
for(i = 0; i < n; i++){
cin >> a;
....是说你没把代码贴出来,不清楚你什么情况。 至于for循环赋值,定义一个数组A for(i=0;i<100;i++){ scanf("%d",&A)};类似于这样。 这个我来试下,=
:cry我闭着眼睛写了好几个小时,写得差不多了,一运行,直接当机 :cry
不打回车,无论是 scanf() 还是 getchar() 都没法输入;我好多个小时,基本上白写了 :cry:cry
看来输入部分,还得重写;这次的思路是,把 4 -3 5 6 0 当做一个字符串来处理,然后把几个数字分别提取出来;
后面写的,希望还可用。
思路:
定义一个结构,把除第一个数,以外的数都串起来,遇到输入 0,结构就结尾了。
然后输出,以第一个数值为回车条件,这样子就可以输出想要的排列了。
#include<stdio.h>
#include<malloc.h>
#include<math.h>
#define LEN sizeof(struct Nuu)
struct Nuu
{
int digit;
struct Nuu *next;
};
int main()
{
int i=0,k=0,n=0,a,c,*p,*q;
voidszpl(int *b,int *q,int k);
void print(struct Nuu *head,int *q,int k);
struct Nuu *head,*p1,*p2;
p=a;
q=c;
head=NULL;
scanf("%d",&a);
for(;;)
{
if (a==0) break;
else
{
c=a;
szpl(p,q,k);
if(head==NULL)
{
p1=(struct Nuu *) malloc(LEN);
head=p1;
for(i=0;i<c;i++)
{
p2=p1;
p2->digit=a;
p1=(struct Nuu *) malloc(LEN);
p2->next=p1;
}
p2->next=NULL;
}
else
{
for(i=0;i<c;i++)
{
p2->next=p1;
p2=p1;
p2->digit=a;
p1=(struct Nuu *) malloc(LEN);
}
p2->next=NULL;
}
}
n=0; k++;
scanf("%d",&a);
}
print(head,q,k);
printf("\n\n");
return 0;
}
voidszpl(int *b,int *q,int k)
{
int i,m,temp;
for(i=0;i<*(q+k);i++)
{
scanf("%d",&b);
}
for(i=0;i<*(q+k);i++)
{
for(m=i+1;m<*(q+k);m++)
{
if( abs(*(b+i)) < abs(*(b+m)))
{
temp=*(b+i);
*(b+i)=*(b+m);
*(b+m)=temp;
}
}
}
}
void print(struct Nuu *head,int *q,int k)
{
int i,m;
struct Nuu *p;
p=head;
for(i=0;i<k;i++)
{
for(m=0; m<*(q+i);m++)
{
printf("%d ",p->digit);
p=p->next;
}
printf("\n");
}
}
页:
[1]