Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类型转换问题:作为整数而不是浮点/类型返回_C++_Casting_User Defined Functions_Typecasting Operator - Fatal编程技术网

C++ 类型转换问题:作为整数而不是浮点/类型返回

C++ 类型转换问题:作为整数而不是浮点/类型返回,c++,casting,user-defined-functions,typecasting-operator,C++,Casting,User Defined Functions,Typecasting Operator,我试图将average返回给main,main计算了每个数组的平均元素数。Sum是整数,numTweets是整数。我尝试将这些类型转换为双精度或浮点类型,但它仍然返回一个整数值。真实平均值为167.5,但返回168。我附上了main中函数调用的照片和函数头/定义 功能原型: double histogram (int length [], int numTweets); average = histogram (length, numTweets); printf ("Average leng

我试图将average返回给main,main计算了每个数组的平均元素数。Sum是整数,numTweets是整数。我尝试将这些类型转换为双精度或浮点类型,但它仍然返回一个整数值。真实平均值为167.5,但返回168。我附上了main中函数调用的照片和函数头/定义

功能原型:

double histogram (int length [], int numTweets);
average = histogram (length, numTweets);
printf ("Average length of all tweets = %.f\n", average);
double histogram (int length[], int numTweets) {
    int i, j;
    int sum = 0;
    double average = 0.0;
    for (i = 0; i < numTweets; i++) {
        printf("Tweet %d:", i + 1);
        for (j = i; j < length[i]; j++) {
            printf("*");
        }
        sum = sum + length[i];
        printf("\n");
    }
    average = (float)sum / (float)numTweets;
    return average;
}
调用函数:

double histogram (int length [], int numTweets);
average = histogram (length, numTweets);
printf ("Average length of all tweets = %.f\n", average);
double histogram (int length[], int numTweets) {
    int i, j;
    int sum = 0;
    double average = 0.0;
    for (i = 0; i < numTweets; i++) {
        printf("Tweet %d:", i + 1);
        for (j = i; j < length[i]; j++) {
            printf("*");
        }
        sum = sum + length[i];
        printf("\n");
    }
    average = (float)sum / (float)numTweets;
    return average;
}
函数标题/定义:

double histogram (int length [], int numTweets);
average = histogram (length, numTweets);
printf ("Average length of all tweets = %.f\n", average);
double histogram (int length[], int numTweets) {
    int i, j;
    int sum = 0;
    double average = 0.0;
    for (i = 0; i < numTweets; i++) {
        printf("Tweet %d:", i + 1);
        for (j = i; j < length[i]; j++) {
            printf("*");
        }
        sum = sum + length[i];
        printf("\n");
    }
    average = (float)sum / (float)numTweets;
    return average;
}
双直方图(int-length[],int-numTweets){
int i,j;
整数和=0;
双平均=0.0;
对于(i=0;i
我已经有一段时间没有使用
printf
,但是
%.f
似乎将is视为
%.0f
如果您在
后面指定一个数字,或者不指定任何内容,只使用
%f
,那么这应该可以解决您的问题。函数正在返回正确的值

发件人:(粗体是我)

(可选)。后跟指定转换精度的整数或*,或两者都不后跟。在使用*的情况下,精度由int类型的附加参数指定。如果此参数的值为负值,则忽略它如果既不使用数字也不使用*,则精度为零。有关精度的确切影响,请参见下表


我已经有一段时间没有使用
printf
,但是
%.f
似乎将is视为
%.0f
如果在
后面指定一个数字,或者不指定任何内容,只使用
%f
,那么这应该可以解决您的问题。函数正在返回正确的值

发件人:(粗体是我)

(可选)。后跟指定转换精度的整数或*,或两者都不后跟。在使用*的情况下,精度由int类型的附加参数指定。如果此参数的值为负值,则忽略它如果既不使用数字也不使用*,则精度为零。有关精度的确切影响,请参见下表


调用
直方图
中的
平均值
是什么?不相关,但是为什么要在
j==i开始内部循环呢?此处显示的其余代码看起来正确。在调用main中的函数后,average在main中声明为双数据类型请在您的问题中添加一个或我应该添加的抱歉。有一个printf语句。我已经更新了它。调用
直方图
中的
平均值
是什么?不相关,但为什么要在
j==I
处启动内部循环?此处显示的其余代码看起来正确。在调用main中的函数后,average在main中声明为双数据类型请在您的问题中添加一个或我应该添加的抱歉。有一个printf语句。我已经更新了它。所以这是一个作业,主要是由讲师给出的,我要完成功能体的。我不应该在main中更改任何内容,因此无法更改printf语句。既然您认为printf声明是问题所在,您是否建议我联系讲师?我建议询问讲师,是的。这可能是他/她故意这么做的,或者只是一个简单的打字错误。也可能是他们的编译器对待它的方式不同,尽管我试过3个编译器,它们的工作原理都是一样的,所以很可能是输入错误。好的,谢谢,我会问的。他们希望平均值以双精度返回,小数点后2位,但考虑到您指出的打印语句,这似乎不太可能发生。我添加了一个参考<如果
后面没有任何内容,则code>printf
应默认为
0
精度,因此这是一项作业,其中主要内容由讲师给出,我将完成功能体的操作。我不应该在main中更改任何内容,因此无法更改printf语句。既然您认为printf声明是问题所在,您是否建议我联系讲师?我建议询问讲师,是的。这可能是他/她故意这么做的,或者只是一个简单的打字错误。也可能是他们的编译器对待它的方式不同,尽管我试过3个编译器,它们的工作原理都是一样的,所以很可能是输入错误。好的,谢谢,我会问的。他们希望平均值以双精度返回,小数点后2位,但考虑到您指出的打印语句,这似乎不太可能发生。我添加了一个参考<如果
后面没有任何内容,则code>printf
应默认为
0
精度