zoukankan      html  css  js  c++  java
  • zzuli oj 1122 小明同学的调查作业

    题目描述: 
    小明的老师布置了一份调查作业,小明想在学校中随机找N个同学一起做一项问卷调查,聪明的小明为了实验的客观性,
    他先随机写下了N个1到1000之间的整数(0<N≤1000),不同的数对应着不同的学生的学号。但他写下的数字难免会
    有重复数字,小明希望能把其余重复的数去掉,然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你
    协助明明完成“去重”与“排序”的工作。
    输入
    输入有2行,第1行为1个正整数,表示整数的个数:N.
    第2行有N个用空格隔开的正整数,表示小明写下的N个整数。
    输出
    输出也是2行,第1行为1个正整数M,表示不相同的整数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的
    不相同的整数。
    解题思路:
    编写三个函数,一个去重,一个排序。
    代码实现:
    #include<stdio.h>
    void qc(int a[],int N)
    {
     int i,t=0;
     for(i=0;i<N;i++)
     {
       if(a[i]==a[i+1])
       {
            a[i]=0;
            t++;
       }
     }
     printf("%d
    ",N-t);
     for(i=0;i<N;i++)
     {
      if(a[i]==0) continue;
      else printf("%d ",a[i]);
     }
     printf("
    ");
    }
    void px(int a[],int n)
    {
     int i,j,t=0;
     for(i=0;i<n-1;i++)
     {
       for(j=0;j<n-1;j++)
      {
       if(a[j]>a[j+1])
       {
         t=a[j];a[j]=a[j+1];a[j+1]=t;
       }
      }
     }
    }
    int main()
    {
     int i,N;
     int a[1020];
     scanf("%d",&N);
     for(i=0;i<N;i++)
     scanf("%d",&a[i]);
     px(a,N);
     qc(a,N);
     return 0;
    }
    易错分析:
    1.本题难点在于去重,先找出重复元素为其标记,在下一次循环中将其跳过。想要去重就要先排序将两个相同元素紧挨。
    2.排序的两种方法千万不能记串,冒泡排序和选择排序要熟记。
  • 相关阅读:
    Multidimensional Arrays
    TortoiseGit
    Excel教程(14)
    Excel教程(13)
    Excel教程(12)
    Excel教程(11)
    lock
    reflect
    game
    html x
  • 原文地址:https://www.cnblogs.com/yuanqingwen/p/10395530.html
Copyright © 2011-2022 走看看