【发布时间】:2018-01-12 19:03:50
【问题描述】:
我需要用 C 语言编写一个程序,输出用户输入的间隔中具有不同数字的所有数字。这是我想出的。
#include<stdio.h>
int main(){
int n, m, k = 0, p, flag, last, temp;
do{
printf("Enter m and n (m < n):\n"); scanf("%d %d", &m, &n);
if (m < n) {
break;
}
else printf("\Error- m > n! Try again.\n\n");
} while (k == 0);
printf("Numbers are:\n");
for (k = m; k <= n; k++) {
p = k;
flag = 0;
if (p < 10) {
flag = 1;
}
last = (p / 10) % 10 ;
while (p > 0) {
temp = p % 10;
p = p / 10;
if (temp == last ){
flag = 1;
}
last = temp;
}
if (flag != 1) {
printf("%d ", k);
}
}
getch();
return 0;
}
示例输出:
Enter m and n (m < n):
100 130
Numbers are:
101 102 103 104 105 106 107 108 109 120 121 123 124 125 126 127 128 129 130
所以在这种情况下的问题是它输出 101 和 121。它不应该因为它们有两个相同的数字。我该如何解决?
【问题讨论】:
-
很明显,
temp和last您只是将每个数字与之前的数字进行比较。您必须将每个数字与 all 其他数字进行比较。有很多方法可以做到这一点。 -
...比如一个有 10 个元素的状态数组。