【问题标题】:In this C program all intervals don't appear in the output在这个 C 程序中,所有间隔都不会出现在输出中
【发布时间】:2021-10-27 11:17:04
【问题描述】:

为什么不是所有区间都显示在输出中?

#include <stdio.h>
int checkprimenumbers(int i);
int main()
{
    // declar varabiels
    int n1,n2,a,Tayp;
    // input from user
    printf("Enter to integer values: ");
    scanf("%d\n%d",&n1,&n2);
    printf("Prime numbers between %d and %d are: ", n1, n2);
    // condition statment
    for (a= n1 + 1;a < n2; ++a )
    {
        Tayp = checkprimenumbers(a);
        if (Tayp == 1)
            printf("%d ", a)  ;
        
        return 0;
    }
}
// user-defined function
int checkprimenumbers(int i)
{
    int b , Type =1 ;
    for (b = 2 ; b <= i/2; ++b )
    {
        if( i%b == 0)
        {
            Type =0;
            break;
        }
    }
    return Type;
}

程序有效,但所有间隔均未显示 这是调试后的输出

输入整数值:12

30

12 到 30 之间的质数是:13

【问题讨论】:

    标签: c function for-loop user-defined-functions


    【解决方案1】:

    将类型初始值设置为 1

     int b,Type=1;
    

    你必须将return 0; 移动到 main 的结尾 } 括号之前。

    【讨论】:

      【解决方案2】:
      1. Typecheckprimenumbers 中未初始化。如果该数字恰好是素数,则您不会返回 1,而是返回它碰巧包含的任何垃圾值。在开始for 循环之前设置Type = 1

      2. main中,return 0;for循环内,所以程序会在检查第一个数字后退出。将return 0; 移动到for 循环的右大括号之后。

      【讨论】:

        猜你喜欢
        • 2017-12-30
        • 2014-01-24
        • 2015-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-10
        • 2013-10-07
        相关资源
        最近更新 更多