正文

钱能的《C++程序设计教程》序列六:chapter62005-08-03 17:37:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiangyu/3415.html

分享到:

声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处,

欢迎大家批评指正。

这一序列说明:
1.采用国内的教材:《C++程序设计教程》钱能主编 清华大学出版社 1999
2.在每一章练习解答前会有一个“疑难知识点”概述,这里只代表我自己的观点,也就是我自己现在还不能

达到非常熟练,或者我初学时感觉比较模糊的知识。
3. 有一些答案来自网络,里面答案的选题编辑:张朝阳,责任编辑:徐培忠、林庆嘉。在这里表示感谢。以

后这里的答案简称“网络版”
4.更多的学习和改进将在《The C++ programming language》答案序列中体现。

序列六:chapter6

一、疑难知识点:
1.弄懂extern和static存储类型:
(1)extern:修饰全局变量
             默认修饰函数,一般省略
(2)static:修饰局部变量
             修饰全局变量,这时变量只在其原文件内有效
             修饰函数,函数只在其原文件中有效,也就是改变了默认extern函数特性
(3)在文件作用域下,inline函数默认是static型(不是extern),const常量默认为static型,当然可以

加extern来改变这种默认类型。

2.掌握一个由多个文件构成的程序该如何编写,包括包含头文件。见习题6.3

3.注意各类局部作用域,特别是if——else,switch,for等。书上p107的for作用域的例子有错误。

二、课后习题
6.1来自网络版加上一点自己,主要是不想打程序
(1)
//file1.cpp
int x=1;
int func()
{
  //...
}

//file2.cpp
extern int x;
int func();
void g()
{
  x=func();
}

//file3.cpp
extern int x=2;   //error: extern int变量若有赋值,则成定义
int g();          //error: 函数声明与前面不一致
void main()
{
  x=g();
  //...
}
(2)
//file1.cpp
int x=5;
int y=8;
extern int z;

//file2.cpp
int x;            //error: int x;重复定义
extern double y;  //error: y同一名字不同类型定义
extern int z;     //error: z只有声明,却无定义。 若这时你没有使用这个声明就不会有问题

6.2比较容易的
答案:
25
6.3
我使用VC++6.0
我的做法是分别编写各个文件(包括头文件),然后打开含有主函数的文件,在工程菜单中选择添加工程,把其它文件都添加进来,最后还要把总的添加完的工程插入到一个工作区,否则下次还有重新添加。

6_3
#include<iostream>
#include"multi_table.h"
using namespace std;
void main()
{
    multi_table1();
    cout<<"\n\n\n";
    multi_table2();
    cout<<"\n\n\n";
    multi_table3();
    cout<<"\n";
}

6_3_1
#include<iostream>
#include"multi_table.h"
using namespace std;
extern int a;
void multi_table1()
{
    int i,j;
    for(i=0;i<=9;i++)
    {
        if(i==1)cout<<"----------------------------------------------------\n";
        for(j=0;j<=9;j++)
        {
            if(i==0&&j==0)cout<<"   *    ";
            else if(i==0&&j)cout<<j<<"    ";
            else if(j==0)cout<<"   "<<i<<"    ";
            else if(i*j<10)cout<<i*j<<"    ";
            else cout<<i*j<<"   ";
        }
        cout<<endl;

    }
}
由于字数限制,
6_3_2
6_3_3
省略

头文件:multi_table.h
void multi_table1();
void multi_table2();
void multi_table3();



阅读(3957) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册