初学者问题:书上例题编译不能通过?详细请进!

dipingxian 2005-09-01 09:56:47
环境:Dev-C++
代码:
//clock.h
class clock
{
private:
int hour,minute,second;
public:
void init();
void update();
void display();
};

//clock.cpp
#include <iostream>
#include <stdlib.h>
#include "clock.h"
using namespace std;

void clock::init()
{
hour = minute = second = 0;
}

void clock::update()
{
second++;
if(second == 60)
{
second = 0;
minute ++;
}
if(minute == 60)
{
minute = 0;
hour ++;
}
if(hour == 60)
{
hour = 0;
}
}

void clock::display()
{
cout<<"Now Time: "<<hour<<":"<<minute":"<<second<<endl; //错误1
}

int main(int argc, char *argv[])
{
clock clockA; //错误2
cout<<"CLOCK A:"<<endl; //....
clockA.init();
for(int i=0;i<10;i++)
{
clockA.update();
clockA.display();
}
system("PAUSE");
return 0;
}


错误:
1.clock.cpp syntax error before string constant
2.clock.cpp `clock' undeclared (first use this function)
...全文
129 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dipingxian 2005-09-05
  • 打赏
  • 举报
回复
谢谢大家!
问题解决:
错误一: 是拼写错误,在minute之后的那个“:”放置的位置错误
错误二: 在VC编译顺利通过,估计是我的IDE设置问题。

另外:
if(hour == 60) //这里应该是24吧?
{
hour = 0;
}

这个地方逻辑错误:应该是hour==24

C++的语法太灵活了 ,吓死人!
zhouhuahai 2005-09-02
  • 打赏
  • 举报
回复
楼主的设计不好,应该显式提供一个构造函数(在其中调用init函数).并且要检查各成员值.
否则有点像用了singleTon了!

#include<iostream>
using namespace std;
class clock
{
private:
int hour,minute,second;
public:

clock(int h = 0, int m = 0, int s =0)
{
init(h, m, s);
}

void init();
void update();
void display();
};
void clock::init(int h, int m, int s)
{
hour = h % 24; //之所以要取模是因为防止出现错误赋值.
minute = m & 60;
second = s % 60;
}

void clock::update()
{
second++;
if(second == 60)
{
second = 0;
minute ++;
}
if(minute == 60)
{
minute = 0;
hour ++;
}
if(hour == 24) //这里应该是24吧?
{
hour = 0;
}
}
void clock::display()
{
cout<<"Now Time: "<<hour<<":"<<minute<<":"<<second<<endl;
}

int main(int argc, char *argv[])
{
cout<<"CLOCK A:"<<endl;
clock clockA(12, 45, 16);

for(int i=0;i<10;i++)
{
clockA.update();
clockA.display();
}
system("PAUSE");
return 0;
}
zhousqy 2005-09-02
  • 打赏
  • 举报
回复
的确:
cout<<"Now Time: "<<hour<<":"<<minute<<":"<<second<<endl;
qfeng_zhao 2005-09-02
  • 打赏
  • 举报
回复
cout<<"Now Time: "<<hour<<":"<<minute":"<<second<<endl;
改为
cout<<"Now Time: "<<hour<<":"<<minute << ":"<<second<<endl;
snowbirdfly 2005-09-01
  • 打赏
  • 举报
回复
奇怪~
楼主在我的编译器上面调试通过~
结果为:
CLOCK A:
Now Time: 0:0:1
Now Time: 0:0:2
Now Time: 0:0:3
Now Time: 0:0:4
Now Time: 0:0:5
Now Time: 0:0:6
Now Time: 0:0:7
Now Time: 0:0:8
Now Time: 0:0:9
Now Time: 0:0:10
foochow 2005-09-01
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
class clock
{
private:
int hour,minute,second;
public:
void init();
void update();
void display();
};
void clock::init()
{
hour = minute = second = 0;
}

void clock::update()
{
second++;
if(second == 60)
{
second = 0;
minute ++;
}
if(minute == 60)
{
minute = 0;
hour ++;
}
if(hour == 60)
{
hour = 0;
}
}
void clock::display()
{
cout<<"Now Time: "<<hour<<":"<<minute<<":"<<second<<endl;
}

int main(int argc, char *argv[])
{
clock clockA;
cout<<"CLOCK A:"<<endl;
clockA.init();
for(int i=0;i<10;i++)
{
clockA.update();
clockA.display();
}
system("PAUSE");
return 0;
}

snowbirdfly 2005-09-01
  • 打赏
  • 举报
回复
我在VC和Dev C++调试都没有
2.clock.cpp `clock' undeclared (first use this function)
错误~
snowbirdfly 2005-09-01
  • 打赏
  • 举报
回复
下面
clock clockA; //错误2
没有错误啊~
调试可以啊~
snowbirdfly 2005-09-01
  • 打赏
  • 举报
回复
是啊~
cout<<"Now Time: "<<hour<<":"<<minute":"<<second<<endl; //错误1
error C2143: syntax error : missing ';' before 'string'
有问题~
改为
cout<<"Now Time: "<<hour<<":"<<minute<<":"<<second<<endl;
  • 打赏
  • 举报
回复
第二个可能是找不到头文件路径吧,不是很清楚。把头文件代码考到.cpp文件再试一下看
  • 打赏
  • 举报
回复
cout<<"Now Time: "<<hour<<":"<<minute":"<<second<<endl;
cout<<"Now Time: "<<hour<<":"<<minute<<":"<<second<<endl;
PPT课件针对下书: 书  名:C程序设计教程 作  者: 谭浩强 出版时间: 2007-07-01 出 版 社: 清华大学出版社 ISBN: 9787302151579 不是发行量最大的那本,是为层次没那么高的读者写的简版。 它以清华大学出版社出版的《C程序设计》(已发行900万册)一书的内容为基础,适当减少内容,压缩篇幅,突出重点,紧扣最基本的教学要求。经教育部评审,本书已正式列入教育部普通高等教育“十一五”国家级规划教材,向全国各高校推荐。 和《C程序设计》相比,《C程序设计教程》一书在以下几方面作了调整: (1) 取消原来的第2章(算法),把算法的思想分散到各章,结合具体程序进行介绍,这样可以使读者更早地直接进入程序设计,能提高读者的兴趣。 (2) 对于初学者暂时用得不多的部分内容(如“预处理命令”、“位运算”)不再保留。对“链表”只作简单的介绍而不深入展开。对输入输出格式着重介绍最常用的部分,不详细介绍其他复杂和少用的格式。对不同类型数据之间的赋值只介绍比较基本的内容。“常见错误和程序调试”的内容由教材移放到《C程序设计教程学习辅导》中。这样教材由原来的14章减到10章,篇幅也相应地减少了。 (3) 由于许多学校把C语言的教学安排在一年级,而学生还未学完高等数学,在本书中不包括有关高等数学知识的例题。 (4) 过去学习C语言的读者,大多数是学习过其他计算机语言的(如BASIC语言),有初步的程序设计知识,而现在大多数学校把C语言作为第一门计算机语言来学习,学生缺乏程序设计的基础知识。为降低学习难度,本书减少了难度较大的例题,对比较难懂的程序也作了比较详细的说明。 (5) 在章节编排上,作了适当的改变,在叙述概念和解释难点时,采取了更加通俗易懂的方法,使读者更易于理解。 (6) 采用Visual C++作为编译环境,使程序的编译和运行更加方便。 由于《C程序设计》的内容和写作风格已经为广大读者熟悉,在教学的实践中取得了很好的效果,因此本书保持了《C程序设计》的基本内容和写作风格,可以认为本书是《C程序设计》的简明教程。在学习本书的过程中,如需要进一步深入,可以参考《C程序设计》一书。 本书最大的特点是:把复杂的问题简单化,而不把简单的问题复杂化。例题丰富,容易入门,分解难点,缩小台阶,循序渐进。即使没有教师讲授,学生也能通过自学掌握书中的基本内容。本书通俗易懂、深入浅出的特点在同类书中是非常突出的。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧