• # 030删除数组中的重复元素


    实际题目

    1.(20分) 删除数组中的重复元素 给定一维整型数组array(数组大小不超过100),如果数组中的某个元素与排在它之后的元素重复,则对其进行删除,直到数组中没有重复元素为止。保证剩余元素的相对次序保持不变,打印删除重复元素后的数组。首先输入数组大小,输入格式为"%d",然后依次输入数组中的元素,输入格式为“%d”,依次输出删除重复元素后的数组中的每个元素,输出格式为“%d ” 输入样例: 14 1 2 3 4 5 6 1 7 5 0 4 9 8 1 输出样例: 2 3 6 7 5 0 4 9 8 1

    个人答案

     1 #include<stdio.h>
     2 int main(){
     3     int array[100]={0};
     4     int num[100]={0};
     5   int i=0;
     6   int n;
     7   int sum=0;
     8   char y;
     9 // printf("请输入任意个数,按回车键结束,统计求和
    ");
    10     scanf("%d",&n);
    11     y=getchar(); 
    12    do
    13    {
    14     scanf("%d",&array[i]);
    15       
    16    //   printf("收到%d
    ",array[i]);
    17        num[array[i]]++;
    18         i++;
    19    }while(y=getchar()!='
    ');  
    20     int a=0;
    21        for(a;a<i;a++){
    22 //      printf("还有%d个  %d 
    ",num[array[a]],array[a]);
    23         if(num[array[a]]==1){
    24             printf("%d ",array[a]);
    25            }
    26         else{
    27             num[array[a]]--;
    28         }
    29        }
    30     return 0;
    31       
    32 }

    遇到问题

    接受一串以空格分界的数字

    1  do
    2    {
    3     scanf("%d",&array[i]);
    4     i++;
    5    }while(y=getchar()!='
    ');         //用于判断是否按了回车

    删除重复的数组元素

    1.我没有进行删除操作,而是重复的元素不进行输出

    2.使用一个数组num[100],记录数字出现的个数,当后面输出时,数字个数每次减一(告诉系统后面这个数还有几次),只有数字个数为一时(这个数最后一次出现)才输出,

     1 #include<stdio.h>
     2 int main(){
     3     int array[100]={0};
     4     int num[100]={0};
     5   int i=0;
     6   int n;
     7   int sum=0;
     8   char y;
     9 // printf("请输入任意个数,按回车键结束,统计求和
    ");
    10     scanf("%d",&n);
    11     y=getchar(); 
    12    do
    13    {
    14     scanf("%d",&array[i]);
    15       
    16    //   printf("收到%d
    ",array[i]);
    17        num[array[i]]++;
    18         i++;
    19    }while(y=getchar()!='
    ');  
    20     int a=0;
    21        for(a;a<i;a++){
    22 //      printf("还有%d个  %d 
    ",num[array[a]],array[a]);
    23         if(num[array[a]]==1){
    24             printf("%d ",array[a]);
    25            }
    26         else{
    27             num[array[a]]--;
    28         }
    29        }
    30     return 0;
    31       
    32 }

     

    参考链接地址

    C语言练习,看到一个题目:输入任意多个数字,数字间用空格隔开,然后将数字求和。

    苦于不会用链表来做一个动态数组,所以用了一个土办法,先定义一个“足够大”的数组,然后将用户输入的数字填入数组,同时用变量记录填入的个数,用于后面for循环的循环次数限制。最后用for循环求和。

    C语言代码如下:

    #include<stdio.h>
    
    int main()
    {
      int array[100];
      int i=0;
      int sum=0;
      char y;
      printf("请输入任意个数,按回车键结束,统计求和
    ");
       do
       {
        scanf("%d",&array[i]);
        i++;
       }while(y=getchar()!='
    ');         //用于判断是否按了回车
    
      for(int j=0;j<i;j++)
      {
           sum =sum+array[j];
      }
      printf("求和 = %d 
    ", sum); 
       return 0;
    }

    除此之外。在网上也看到别的方法:

    代码如下:

    #include <stdio.h>
    int main() {
        int num = 0,sum = 0;
        char ch;
        while((ch = getchar()) != '
    ') {
            if(ch >= '0' && ch <= '9') num = 10 * num + ch - '0';
            if(ch == ' ') {
                sum += num;
                num = 0;
            }
        }
        printf("sum = %d
    ",sum + num);
        return 0;
    }
  • 相关阅读:
    <转>反调试技巧总结原理和实现
    MFC CListCtrl 表格
    <转>汇编指令
    c++ builder 简单读、分析网页数据
    <转>CProcessData : A template class to ease up SendMessage calls across processes
    <转>Running console applications silently
    遍历电脑打印机、设置默认打印机、EnumPrinters ,SetDefaultPrinter,GetDefaultPrinter
    <转>运算符巧妙原理解析
    遍历 进程
    Enterprise Library5.0 Unity 试用.
  • 原文地址:https://www.cnblogs.com/hx97/p/10748936.html
Copyright © 2020-2023  润新知