【问题标题】:Function call a for loop函数调用一个 for 循环
【发布时间】:2020-03-13 12:28:11
【问题描述】:

我正在尝试调用 for 循环并打印 AngleValue 和 SinValue,但无论我做什么我都无法让它工作。我需要的只是将循环中的这 2 个打印到主函数中。

int trigof(int x, double y, double AngleValue, double SinValue);
int main(void)
{

    printf("%35s","***************************\n");
    printf("%35s","****TABLE OF SIN VALUES****\n");
    printf("%35s","***************************\n");
    printf("%17s", "ANGLE(DEG)");
    printf("%18s","SIN(ANGLE)\n");

        printf("Press any key to exit");
        getchar();
        return 0;
    }//endprogram

int trigof(int x, double y, double AngleValue, double SinValue)
{

for (x = 0; x < 18; x++)
    {
        y = AngleValue * PI / 180;
        SinValue = sin(y);
        printf("%13.1f", AngleValue);
        printf("%18.4f\n", SinValue);
        AngleValue = AngleValue + 20.0;


    }
    return AngleValue;
    return SinValue;
}

【问题讨论】:

  • 什么不起作用?你的预期结果是什么?你的实际结果是什么?您是如何尝试调试的?
  • 在 C 中,您不能在另一个函数的主体内定义一个函数。它们都必须单独定义。 main 是一个函数,您试图在 main 中定义 trigof。可以拨打main;您只是无法在 main 中定义它。
  • 我不明白你的问题。
  • trigOf 函数不会在主函数的任何地方调用。这就是为什么什么都没有打印的原因。但代码中也存在 PI 和其他问题的缺失值。

标签: c function call


【解决方案1】:

首先有很多错误。 你已经声明了函数,但你还没有在你的主函数中调用它。要在 main 中调用函数,请在 main 函数中使用此语句 trigof(0,0,45,0); 45 是角度值。其次,您不需要 x, y, signvalue 作为函数参数。您可以在 trigof 函数中本地声明它们。最后应该只有一个 return 语句只返回一个对象。

【讨论】:

    【解决方案2】:
    #define PI (4*atan(1))
    
    static void trigOf(void);
    
    int main(void) {
        printf("%35s","***************************\n");
        printf("%35s","****TABLE OF SIN VALUES****\n");
        printf("%35s","***************************\n");
        printf("%17s", "ANGLE(DEG)");
        printf("%18s","SIN(ANGLE)\n");
        trigOf();
        printf("Press any key to exit");
        getchar();
        return 0;
    }//endprogram
    
    static void trigof() {
        int x;
        double y=0.0,AngleValue=0.0,SinValue=0.0;
        for (x = 0; x < 18; x++) {
            y = AngleValue * PI / 180;
            SinValue = sin(y);
            printf("%13.1f", AngleValue);
            printf("%18.4f\n", SinValue);
            AngleValue = AngleValue + 20.0;
        }
    }
    

    【讨论】:

    • 最好把trigof()变成一个返回void的函数,因为它返回的值没有被使用(如果返回了一个值,它可能应该是一个double,不是int。虽然声明了函数,但它没有用原型声明。这并不理想——原型有助于检查。请注意,在C(相对于C++)中,int trigof(); 是非具有未指定(但固定)数量的参数的函数的原型声明。使用int trigof(void); 明确表示“无参数”。也将函数设为static,因为它不会在其他任何地方使用。
    • 我知道这是sn-p代码,但是3.14?????即使对于示例代码,数字也太少了。我经常使用#define PI (4*atan(1))(或者只在POSIX系统上使用M_PI)。
    【解决方案3】:

    对于初学者...

    您必须定义全局变量

        #define PI 3.14159265358979323846
    

    您的函数原型不正确,在这种情况下它需要无参数

        //this is wrong
        int trigof(int x, double y, double AngleValue, double SinValue);
        //this is right
        int trigof();
    

    你永远不会调用函数 trigof();因此,主要是没有结果

            printf("%35s","***************************\n");
            printf("%35s","****TABLE OF SIN VALUES****\n");
            printf("%35s","***************************\n");
            printf("%17s", "ANGLE(DEG)");
            printf("%18s","SIN(ANGLE)\n");
            //you should have function call here
            trigof();
    

    您只需要在函数中定义局部变量

    示例:

        int trigof()
        {
            //these are local variables
            int x;
            double y, AngleValue, SinValue;
    
                for (x = 0; x < 18; x++)
                    {
                        y = AngleValue * PI / 180;
                        SinValue = sin(y);
                        printf("%13.1f", AngleValue);
                        printf("%18.4f\n", SinValue);
                        AngleValue = AngleValue + 20.0;
                    }
            return AngleValue;
            return SinValue;
        }
    

    如果您希望输出类似于:

       ***************************                                                                                                     
       ****TABLE OF SIN VALUES****                                                                                                     
       ***************************                                                                                                     
       ANGLE(DEG)       SIN(ANGLE)                                                                                                     
          0.0            0.0000                                                                                                        
         20.0            0.3419                                                                                                        
         40.0            0.6425                                                                                                        
         60.0            0.8658                                                                                                        
         80.0            0.9847                                                                                                        
        100.0            0.9850                                                                                                        
        120.0            0.8666                                                                                                        
        140.0            0.6437                                                                                                        
        160.0            0.3434                                                                                                        
        180.0            0.0016                                                                                                        
        200.0           -0.3404                                                                                                        
        220.0           -0.6413                                                                                                        
        240.0           -0.8650                                                                                                        
        260.0           -0.9844                                                                                                        
        280.0           -0.9852                                                                                                        
        300.0           -0.8673                                                                                                        
        320.0           -0.6450                                                                                                        
        340.0           -0.3448  
    

    【讨论】:

      猜你喜欢
      • 2023-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 2014-07-25
      相关资源
      最近更新 更多