今天考国二,有一道程序设计题,比如有个数组a[10]={1996,2007,2259,5486,6067,963,955,103,6809,5797}
统计数组里有相同的数字的数比如1996,955,5979……总共是6个,我想知道咋对比数组里的数字呢?我觉得得用if语句但是表达式要咋写呢?
这…… 用 if 语句恐怕是不太够吧。
还是需要多写几行的吧
1.要遍历每一个数
2.要获取当前数的长度
3.要对当前数一位一位进行比较
int main()
{
int a[10] = { 1996,2007,2259,5486,6067,963,955,103,6809,5797 };
int count = 0;
int length = 0;
for (int index = 0; index < 10; index++) {
//获取当前数的长度
for (int i = 1;; i++) {
if (a[index] / (int)pow(10,i) == 0) {
length = i;
break;
}
}
bool veryGood = false;
int tmp = 0;
//然后对当前数一位一位进行比较
for (int i = 1; i < length; i++) {
tmp = a[index] / 10;
for (int j = i; j < length; j++) {
if (a[index] % 10 == tmp % 10) {
veryGood = true;
break;
}
tmp /= 10;
}
//如果有相同数字就计数加1
if (veryGood) {
count++;
break;
}
a[index] /= 10;
}
}
printf("%d\n", count);
return 0;
}
第一种,2个for循环判断,第二种用2个数组,存储数字和出现频数,最后遍历频数数组
暴力求解:
把数组每个元素的各个位分别拆开,然后再对比各个位的数字就行了