我有一个功能,如果你插入一个数字,它会计算出来。只有在程序开始时调用函数意味着它与clock()有关,它才会这样做。我将clock()添加到其余的变量中,但函数不计算。特别是在if语句中。
码
#include <stdio.h>
#include <string>
#include <iostream>
#include <stdlib.h>
#include <windows.h>
#include "math.h"
#include <time.h>
#include <ctime>
#include <cstdlib>
#include <mmsystem.h>
void countbysec(int Seconds);
using namespace std;
int main(){
int secondsinput;
cout<<"Type how many seconds to cout \n";
cin>>secondsinput;
countbysec(secondsinput);
return 0;
}
void countbysec(int Seconds){
clock_t Timer;
Timer = clock() + Seconds * CLOCKS_PER_SEC ;
clock_t counttime = clock() + (Timer / Seconds);
clock_t secondcount = 0;
while(clock() <= Timer){
if(clock() == counttime){
counttime = counttime + CLOCKS_PER_SEC;
secondcount = secondcount + 1;
cout<<secondcount<<endl;
}
}
}
答案 0 :(得分:1)
您没有使用此行调用该函数:
void countbysec(int Seconds);
你正在声明这个功能。编译器需要先查看函数的声明,然后再调用它,否则你会看到:
error: use of undeclared identifier 'countbysec'
它需要能够在您拨打电话时输入检查并生成呼叫代码。
您可以通过将代码块从main()
下方移动到文件中的上方来一步声明和定义函数。这是正常的C / C ++行为。
答案 1 :(得分:0)
首先,clock
不适合做你想要的样子。它返回过程使用了多少CPU时间的近似值。近似应该有一些警钟响起。接下来,时间CPU时间与挂号时间不同,所以谁可以说当程序运行到10秒时经过了多少时间。
所以
if(clock() == counttime){
时间必须完全counttime
才能进行计数递增。把它拉下来的几率并不太好。你可能会射过它。如果你这样做,什么都不算数。我推荐
if(clock() >= counttime){
接下来,你不太可能获得最后一秒,因为
while(clock() <= Timer)
可能先行并退出循环。
如果您想计算秒数,请查看something like std::this_thread::sleep_until
。
设置唤醒时间=当前时间+ 1秒,然后