首先,我想说的是我已经解决了这个问题,但有些事情仍让我感到困扰。
以下是代码:
#include <stdio.h>
int flag = 1;
int controlNumber(int);
int main() {
int array[10] = { 233, 45, 777, 81, 999999, 36, 90, 88, 11, 61 };
int i;
int c;
for (i = 0; i < 10; i++) {
printf("%d >> ", array[i]);
c = controlNumber(array[i]);
if (c == 1) {
printf("all digits are equal\n");
} else {
printf("not all digits are equal\n");
}
}
return 0;
}
int controlNumber(int a) {
int q = a;
int r = a % 10;
int temp;
while (q != 0) {
temp = q % 10;
if (temp == r) {
q = q / 10;
} else {
flag = 0;
return flag;
}
}
return flag;
}
只有当全局变量flag
在函数controlNumber
内被声明为局部变量且值为1
时,此代码才能工作。我无法确定为什么情况会是这样,因为逻辑应该还是相同的。
另外,我仍然是一个初学者,所以对于任何缩进错误我先表示抱歉。