我正在为C类(xtra信用分配)介绍一个程序,并且无法弄清楚如何丢弃数组上的重复数字。该问题要求仅打印非重复项;所以我能够打印第一个数字,比较以下和打印如果不同,我丢弃下一个如果重复,但事情是我只知道如何比较它跟随一个数字,我想我可以在for循环中为循环做另一个循环,但我感到非常困惑,只是无法弄明白。我上周已经提交了我的代码,我一直在努力为自己解决这个问题,所以任何帮助/指导都会非常感激。
"编辑:问题在于:使用单下标数组来解决以下问题。读入20个数字,每个数字在10到100之间,包括10和100。读取每个数字时,只有当它不是已读取的数字的副本时才打印它。提供所有20个数字不同的最坏情况。使用尽可能小的数组来解决这个问题"
提前致谢,关于我如何撰写我的程序的任何建议也将受到赞赏,因为我是一个总的菜鸟,并试图成为一个尽可能少坏习惯的优秀程序员。
#include <stdio.h>
#include <stdlib.h>
#define AS 20
void findDuplicate (int af[], int fAS);
int main(){
int a[AS], i , j, k;
int last = 0;
printf("Enter %d numbers between 10 and 100:\n", AS);
for (i = 0; i < AS; i++){
scanf("%d",&a[i] );
if (a[i] >= 10 && a[i] <= 100 ){
continue;
} else {
printf("You must enter values between 10 - 100\n");
i = i -1;
}
}
findDuplicate(a, AS);
system ("pause");
return 0;
}
void findDuplicate (int af[], int fAS){
int c;
printf("You entered ");
for (c=0; c < fAS; c++){
if (af[c] != af[c+1]){
printf("%d ", af[c]);
}
continue;
}
printf("\n");
}
答案 0 :(得分:0)
首先应该定义一个可以保存任意数量变量的数组。 假设您正在比较10-100,这意味着91个可能的不同数字。
所以,定义大小为91的数组。然后在for循环中扫描91次,看看你是否有先前输入的变量。如果没有,则保存并显示,否则丢弃。