实际题目
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; }