Openjudge-计算概论(A)-奇数单增序列

描述:

给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。

输入共2行:
第1行为 N;
第2行为 N 个正整数,其间用空格间隔。输出增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。

样例输入

10
1 3 2 6 5 4 9 8 7 10

样例输出

1,3,5,7,9
思路:这题的解题方法很多,我用的是其中之一的,先把数组排序(快排),再把单数挑出来,存入另一个数组(至于为什么,别问那么多),
先输出第一个,再循环从第二个开始输出,每输出一个之前记得输出一个逗号!
不过这个代码没能通过,快过年了嘛,Openjudge的服务器好像放假了,老是出错,期待春节回来修复吧......
我的代码如下:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int fun(const void *a,const void *b)
 4 {
 5    return *(int*)a-*(int*)b;
 6 }
 7 int main()
 8 {
 9     int n,i,a[200],b[200];
10     int j=0;
11     scanf("%d",&n);
12     for(i=0;i<n;i++)
13     {
14         scanf("%d",&a[i]);
15     }
16     qsort(a,n,sizeof(int),fun);
17     for(i=0;i<n;i++)
18     {
19         if(a[i]%2==1) 
20         {
21             b[j]=a[i];
22             j++;
23         }        
24     }
25     printf("%d",b[0]);
26     for(i=1;i<j;i++)
27     {
28             printf(",%d",b[i]);
29     }
30     printf("\n");
31     return 0;
32 }

这是我老师的代码(http://www.cnblogs.com/huashanqingzhu/p/3474573.html)这个是可以通过的,不造那个服务器怎么搞的:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,a[500],i,j,t,flag;
 5     scanf("%d",&n);
 6     for(i=0;i<n;i++)
 7     {
 8         scanf("%d",&a[i]);
 9     }
10     for(i=1;i<n;i++)
11     {
12         flag=1;
13         for(j=0;j<n-i;j++) 
14         {
15             if(a[j]>a[j+1]) 
16             {
17                 flag=0;
18                 t=a[j]; 
19                 a[j]=a[j+1]; 
20                 a[j+1]=t; 
21             }
22         }
23         if(flag)  break;  //if(flag==1)  break;
24     }
25     flag=1;
26     for(i=0;i<n;i++)
27     {
28         if(a[i]&1)
29         {
30             if(flag)
31             {
32                 printf("%d",a[i]);
33                 flag=0;
34             }
35             else printf(",%d",a[i]);
36         }
37         
38     }
39     printf("\n");
40     return 0;
41 }

 

 
posted @ 2015-02-18 18:58  Memoryヾノ战心  阅读(1718)  评论(0编辑  收藏  举报