C++代码编译报错求助:floor未声明与语法错误解析
编译错误解析与代码修正
错误1:'floor' 未在此作用域中声明
- 原因:
floor是C++标准库的数学函数,定义在<cmath>头文件里,你的代码没包含这个头文件;而且这里用floor完全多余——所有变量都是int类型,整数除法本身就会自动向下取整,没必要额外调用floor。 - 解决办法:要么添加
#include <cmath>,要么直接删掉所有floor()调用(更推荐后者)。
错误2:'%=' 标记前缺少初始化器
- 原因:你已经声明过
int s了,这里再写int s %= ...属于重复声明变量,语法完全错误。%=是赋值运算符,只能用于已声明的变量,不能在前面加类型声明。 - 解决办法:去掉前面的
int,直接写成s %= seconds_per_hours;,下面那行s %= seconds_per_minutes;同理。
修正后的完整代码
#include <iostream> using namespace std; int main() { int total_of_seconds; cout << "please enter the total of seconds\n"; cin >> total_of_seconds ; int seconds_per_day = 24 * 60 * 60 ; int seconds_per_hours = 60 * 60 ; int seconds_per_minutes = 60 ; int number_of_days = total_of_seconds / seconds_per_day ; int s = total_of_seconds % seconds_per_day ; int number_of_hours = s / seconds_per_hours ; s %= seconds_per_hours; int number_of_minutes = s / seconds_per_minutes ; s %= seconds_per_minutes; int number_of_seconds = s; cout << number_of_days << ":" << number_of_hours << ":" << number_of_minutes << ":" << number_of_seconds << endl ; return 0; }
额外修正了代码里的小问题:把拼写错误的inter改成enter,字符串换行改用\n(原写法会触发编译警告),调整缩进让代码更易读。
内容的提问来源于stack exchange,提问作者Mahammad Qasm
相关产品推荐
相关产品推荐

