鱼C论坛

 找回密码
 立即注册
查看: 2253|回复: 6

求助!!绝对值排序

[复制链接]
发表于 2015-4-2 14:12:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:


【问题描述】

输入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++的方式都写一遍,多谢。

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-4-2 15:19:43 | 显示全部楼层
没代码看。。只能凭空说了,用过for循环逐一赋值应该可以把要求实现。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-2 15:50:12 | 显示全部楼层
ANDES 发表于 2015-4-2 15:19
没代码看。。只能凭空说了,用过for循环逐一赋值应该可以把要求实现。

while(cin >> n && n != 0){
                for(i = 0; i < n; i++){
                        cin >> a[i];
                }//n记录一行输入数字的个数,a数组接收要处理的数据

我百度到的 ,不过没有用呐。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-2 16:41:40 | 显示全部楼层
这不科学啊 发表于 2015-4-2 15:50
while(cin >> n && n != 0){
                for(i = 0; i < n; i++){
                        cin >> a;

....是说你没把代码贴出来,不清楚你什么情况。   至于for循环赋值,定义一个数组A[100] for(i=0;i<100;i++){ scanf("%d",&A[i])};类似于这样。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-4 11:36:30 | 显示全部楼层
这个我来试下,=
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-4 23:57:04 | 显示全部楼层

:cry我闭着眼睛写了好几个小时,写得差不多了,一运行,直接当机 :cry

不打回车,无论是 scanf() 还是 getchar() 都没法输入;我好多个小时,基本上白写了 :cry:cry

看来输入部分,还得重写;这次的思路是,把 4 -3 5 6 0 当做一个字符串来处理,然后把几个数字分别提取出来;

后面写的,希望还可用。
思路:
定义一个结构,把除第一个数,以外的数都串起来,遇到输入 0,结构就结尾了。

然后输出,以第一个数值为回车条件,这样子就可以输出想要的排列了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-5 13:23:08 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<malloc.h>
  3. #include<math.h>


  4. #define LEN sizeof(struct Nuu)

  5. struct Nuu
  6. {
  7.         int digit;
  8.         struct Nuu *next;
  9. };


  10. int main()
  11. {
  12.         int i=0,k=0,n=0,a[20],c[20],*p,*q;
  13.         void  szpl(int *b,int *q,int k);
  14.     void print(struct Nuu *head,int *q,int k);
  15.    
  16.         struct Nuu *head,*p1,*p2;
  17.        
  18.         p=a;
  19.         q=c;
  20.        
  21.         head=NULL;
  22.        
  23.         scanf("%d",&a[n]);
  24.        
  25.        
  26.     for(;;)
  27.         {               
  28.                
  29.                 if (a[0]==0) break;  
  30.                
  31.                 else
  32.                 {                       
  33.                         c[k]=a[0];
  34.                        
  35.                        
  36.                         szpl(p,q,k);
  37.                        
  38.                        
  39.                        
  40.                        
  41.                         if(head==NULL)
  42.                         {
  43.                                 p1=(struct Nuu *) malloc(LEN);                                
  44.                                 head=p1;
  45.                                 for(i=0;i<c[k];i++)
  46.                                 {         
  47.                                         p2=p1;
  48.                                         p2->digit=a[i];       
  49.                                         p1=(struct Nuu *) malloc(LEN);                                                                
  50.                                         p2->next=p1;
  51.                                        
  52.                                 }                       
  53.                                 p2->next=NULL;
  54.                                
  55.                         }
  56.                         else
  57.                         {

  58.                                
  59.                                 for(i=0;i<c[k];i++)
  60.                                 {
  61.                     p2->next=p1;
  62.                     p2=p1;
  63.                                         p2->digit=a[i];
  64.                                         p1=(struct Nuu *) malloc(LEN);
  65.                                                         
  66.                                                                                                                        
  67.                                 }
  68.                                 p2->next=NULL;
  69.                         }
  70.                        
  71.                 }
  72.                
  73.                
  74.                 n=0;        k++;
  75.                
  76.                 scanf("%d",&a[n]);
  77.                
  78.         }
  79.         print(head,q,k);
  80.         printf("\n\n");
  81.        
  82.        
  83.         return 0;
  84. }





  85. void  szpl(int *b,int *q,int k)
  86. {
  87.         int i,m,temp;
  88.        
  89.         for(i=0;i<*(q+k);i++)
  90.         {               
  91.                 scanf("%d",&b[i]);       
  92.         }
  93.        
  94.        
  95.        
  96.         for(i=0;i<*(q+k);i++)
  97.         {
  98.                 for(m=i+1;m<*(q+k);m++)
  99.                 {
  100.                         if( abs(*(b+i)) < abs(*(b+m)))
  101.                         {
  102.                                 temp=*(b+i);
  103.                                 *(b+i)=*(b+m);
  104.                                 *(b+m)=temp;
  105.                                
  106.                         }
  107.                        
  108.                 }
  109.         }
  110.        
  111.        
  112. }




  113. void print(struct Nuu *head,int *q,int k)
  114. {
  115.         int i,m;
  116.         struct Nuu *p;
  117.         p=head;
  118.        
  119.         for(i=0;i<k;i++)
  120.         {
  121.                 for(m=0; m<*(q+i);m++)
  122.                 {
  123.                         printf("%d ",p->digit);
  124.                         p=p->next;                       
  125.                 }
  126.                 printf("\n");
  127.                
  128.         }
  129.            
  130. }











复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-13 13:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表