实际题目

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("请输入任意个数,按回车键结束,统计求和\n");
10     scanf("%d",&n);
11     y=getchar(); 
12    do
13    {
14     scanf("%d",&array[i]);
15       
16    //   printf("收到%d\n",array[i]);
17        num[array[i]]++;
18         i++;
19    }while(y=getchar()!='\n');  
20     int a=0;
21        for(a;a<i;a++){
22 //      printf("还有%d个  %d \n",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()!='\n');         //用于判断是否按了回车

 

删除重复的数组元素

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("请输入任意个数,按回车键结束,统计求和\n");
10     scanf("%d",&n);
11     y=getchar(); 
12    do
13    {
14     scanf("%d",&array[i]);
15       
16    //   printf("收到%d\n",array[i]);
17        num[array[i]]++;
18         i++;
19    }while(y=getchar()!='\n');  
20     int a=0;
21        for(a;a<i;a++){
22 //      printf("还有%d个  %d \n",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("请输入任意个数,按回车键结束,统计求和\n"); do { scanf("%d",&array[i]); i++; }while(y=getchar()!='\n'); //用于判断是否按了回车 for(int j=0;j<i;j++) { sum =sum+array[j]; } printf("求和 = %d \n", sum); return 0; }

 

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

代码如下:

 

#include <stdio.h> int main() { int num = 0,sum = 0; char ch; while((ch = getchar()) != '\n') { if(ch >= '0' && ch <= '9') num = 10 * num + ch - '0'; if(ch == ' ') { sum += num; num = 0; } } printf("sum = %d\n",sum + num); return 0; }