为什么我在 C 中的 main 函数只打印第一个 for 循环?
Why does my main function in C only prints the first for loop?
我试图为每种类型的数字打印它自己的行,但是当我 运行 代码不起作用时,我已经单独检查了每个函数并且每个函数都运行良好。
我从用户那里得到了两个数字,我的目标是打印出两个数字之间的每个数字,包括它们。
void main(void){
int a, b;
printf("\n Hello, how are you? Please enter the two numbers: \n");
scanf("%d %d", &a,&b);
printf("\n isPrime numbers: \n");
for(a; a<=b; a++){
if(isPrime(a) == 1){
printf("%d, ", a);
}
}
printf("\n isStrong numbers: \n");
for(a; a<=b; a++){
if(isStrong(a) == 1){
printf("%d, ", a);
}
}
printf("\n isPalindrome numbers: \n");
for(a; a<=b; a++){
if(isPalindrome(a) == 1){
printf("%d, ", a);
}
}
printf("\n isArmostrong numbers: \n");
for(a; a<=b; a++){
if(isArmstrong(a) == 1){
printf("%d, ", a);
}
}
}
此代码仅打印出素数的第一个 for 循环。
Hello, how are you? Please enter the two numbers:
1 100
isPrime numbers:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97,
isStrong numbers:
isPalindrome numbers:
isArmostrong numbers:
在第一个 for 循环之后
for(a; a<=b; a++){
由于在循环中递增变量a,变量a变得大于变量b。因此,以下 for 循环中的条件计算结果为 false。
您可以在 for 循环中引入局部变量,例如
for( int i = a; i <= b; i++){
if(isPrime(i) == 1){
printf("%d, ", i);
}
}
注意根据C标准,不带参数的函数main应该声明为
int main( void )
您从未重置 a
。所以在第一个for循环中,a
会等于1,爬升到b
。但是在下一个循环中,a
仍然等于 100。尝试将用户输入存储在一个单独的变量中,并且每次都重新设置 a
。
您可以将 a 存储到某个临时变量中,然后用它初始化每个 for 循环。
int a, b, tmp;
scanf("%d %d", &a,&b);
tmp=a;
然后你可以像这样初始化每个for循环
for(a=tmp; a<=b; a++){
我试图为每种类型的数字打印它自己的行,但是当我 运行 代码不起作用时,我已经单独检查了每个函数并且每个函数都运行良好。
我从用户那里得到了两个数字,我的目标是打印出两个数字之间的每个数字,包括它们。
void main(void){
int a, b;
printf("\n Hello, how are you? Please enter the two numbers: \n");
scanf("%d %d", &a,&b);
printf("\n isPrime numbers: \n");
for(a; a<=b; a++){
if(isPrime(a) == 1){
printf("%d, ", a);
}
}
printf("\n isStrong numbers: \n");
for(a; a<=b; a++){
if(isStrong(a) == 1){
printf("%d, ", a);
}
}
printf("\n isPalindrome numbers: \n");
for(a; a<=b; a++){
if(isPalindrome(a) == 1){
printf("%d, ", a);
}
}
printf("\n isArmostrong numbers: \n");
for(a; a<=b; a++){
if(isArmstrong(a) == 1){
printf("%d, ", a);
}
}
}
此代码仅打印出素数的第一个 for 循环。
Hello, how are you? Please enter the two numbers:
1 100
isPrime numbers:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97,
isStrong numbers:
isPalindrome numbers:
isArmostrong numbers:
在第一个 for 循环之后
for(a; a<=b; a++){
由于在循环中递增变量a,变量a变得大于变量b。因此,以下 for 循环中的条件计算结果为 false。
您可以在 for 循环中引入局部变量,例如
for( int i = a; i <= b; i++){
if(isPrime(i) == 1){
printf("%d, ", i);
}
}
注意根据C标准,不带参数的函数main应该声明为
int main( void )
您从未重置 a
。所以在第一个for循环中,a
会等于1,爬升到b
。但是在下一个循环中,a
仍然等于 100。尝试将用户输入存储在一个单独的变量中,并且每次都重新设置 a
。
您可以将 a 存储到某个临时变量中,然后用它初始化每个 for 循环。
int a, b, tmp;
scanf("%d %d", &a,&b);
tmp=a;
然后你可以像这样初始化每个for循环
for(a=tmp; a<=b; a++){