输出结果为0。基本单利问题

问题描述 投票:0回答:1

我一直在尝试用C++做一些基本的函数调用和函数,并且在单利计算中得到错误的输出为0。需要帮助。

using namespace std;

int SI(int principle, int rate, int time){
    int result = (principle * rate * time) / 100;
    cout<<result;
   
}
int main() {
    //Write your code here
    int principle, rate, time, simple_interest;
    cin>> principle>> rate>> time;
    simple_interest=SI(principle,rate,time);
    return 0;
}
type here

未找到期望值

c++ c++11
1个回答
0
投票

你有两个问题,一是小问题,一是大问题。

小问题会给你错误的结果,这是因为表达式

(principle * rate * time) / 100
中的所有值都是整数,并且结果是整数,然后你将其存储在整数变量中。如果您想要小数,则需要使用浮点值和变量:

double result = (principle * rate * time) / 100.0;

唯一的变化是将结果存储在浮点变量中,并将整数

100
更改为
double
100.0


那么对于主要问题,这将导致未定义的行为...您声明函数返回一个值,但您从不这样做。

要从函数返回值,您需要使用显式

return
语句。

您似乎还犯了一个在初学者中相当常见的错误,即您将输出

std::cout
与实际返回的值混淆了。

声明

cout<<result;

会将

result
的值写入标准输出流,但不会返回任何内容。

我建议你不要在函数中输出结果,只返回结果,然后在

main
函数中进行输出。


把它们放在一起,你的代码可能是这样的:

#include <iostream>

double calculate_interest(int principle, int rate, int time)
{
    return (principle * rate * time) / 100.0;
}

int main()
{
    int principle;
    int rate;
    int time;

    std::cout << "Input principle: ";
    std::cin >> principle;

    std::cout << "Input rate: ";
    std::cin >> rate;

    std::cout << "Input time: ";
    std::cin >> time;

    std::cout << "The interest is "
              << calculate_interest(principle, rate, time) << "%\n";
}

根据您的要求,变量

principle
rate
time
或许也应该是
double
类型。

© www.soinside.com 2019 - 2024. All rights reserved.