# 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;
}
原文地址:https://www.cnblogs.com/hx97/p/10748936.html