繁体   English   中英

为什么我在 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++){

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM