当前位置:C++技术网 > 精选软件 > C++ Primer Plus 6th 2.7 编程练习题 第1题 第一个C++程序结构详解

C++ Primer Plus 6th 2.7 编程练习题 第1题 第一个C++程序结构详解

更新时间:2019-02-15 11:25:36浏览次数:1+次

C++ Primer Plus编程练习题2.7第一题 第一个C++程序结构详解


题目:
1. 编写一个C++程序,它显示您的姓名和地址。

答案:书上无答案。

C++技术网辅导详解解答:
    完整代码如下:

#include <iostream>
using namespace std;
int main()
{
    char name[50] = { 0 };
    char addr[50] = { 0 };
    cout << "请输入您的名字:" << endl;
    cin >> name;
    cout << "请输入您的地址:" << endl;
    cin >> addr;
    cout << name << ",您好。您的地址是:" << addr << endl;
    return 0;
}

    这一题是非常简单的,不过对于初学者来说是关键的第一步。
    题目是要显示姓名和地址,最简单的方式就是和Hello World一样,直接输出。不过如果真是这样,那就太没有意思了(用cout直接输出双引号括起来的字符串即可)。我们至少也是要输入一下姓名和地址,然后再显示出来。    这就是上面看到的代码。下面对这份代码做一个分析:
    因为这是第一个练习题的分析,所以这里我说的详细点,后续类似的就只针对问题本身来分析了。
    这一段程序分为几个部分:
1.头文件包含
   头文件里面定义了我们需要的工具,我们只需要标准的输入输出函数,所以包含标准输入输出头文件iostream即可。因为是C++的系统级内置文件,所以我们使用<>来定位头文件,这样编译器会先从系统目录找这个头文件。如果要包含自己定义的头文件,一般会和main函数所在文件一个文件夹下,我们就可以用双引号来定位头文件。对于标准头文件来说,用<>或双引号""都可以定位到头文件,只是一个效率问题,因为系统头文件在系统目录里,用<>来定位首先就在系统目录找,而用""来定位则现在当前项目的目录里找,找不到再去系统目录找。因为系统头文件明明就在系统目录,用<>就可以一步到位,所以会更快些。
    包含头文件的代码是:

#include <iostream> #先从系统目录找头文件iostream


#include "iostream" #先从当前目录找,找不到然后再去系统目录找

2.命名空间使用

    标准命名空间定义了我们本程序需要使用的cout、cin、和 endl。如果不使用命名空间,那么这三个名称就没有被定义,就不能直接用。使用命名空间语句为:
using namespace std;#引入标准命名空间std的所有名字,包含cout、cin、和 endl。
    当然,还可以仅引入部分名字,而不需要引入标准命名空间的所有名字。代码如下:

using std::cout;
using std::cin;
using std::endl;

    如果上面两种都不想引入,那么还可以直接使用命名空间名字,而不需要提前引入,完整代码如下:

#include <iostream>
int main()
{
    char name[50] = { 0 };
    char addr[50] = { 0 };
    std::cout << "请输入您的名字:" << std::endl;
    std::cin >> name;
    std::cout << "请输入您的地址:" << std::endl;
    std::cin >> addr;
    std::cout << name << ",您好。您的地址是:" << addr << std::endl;
    return 0;
}

   在每一个名字前面都要加上std::,表示这个名字是标准命名空间的。这样是对的,只不过如果用的地方多了,就有点麻烦了。

3.主函数定义
    主函数为main,定义的形式是固定的,我们必须写好。主函数返回的值的类型我们无法改变,这是编译器预先约定好的,是C++运行时的基础支持环境决定的。至于主函数的名称一定要是main吗?不一定,也可以是其他的名称,你可以改。如何修改,请看C++技术网的C++零基础入门教程的文章,有详细介绍。
4.局部变量定义
    我们要输入名字和地址,就一定要有地方存名字和地址。因为名字和地址是字符串,所以要用字符数组来存。当然,你也可以用string类型来存。不过第一个程序,还是用基础类型,cin和cout对基础类型支持最好,使用非常方便。如果要用string你需要熟悉string有哪些函数可以使用,否则不能直接用cin和cout的。
    名字和地址一般不会很长,所以我们分别用一个50字节的字符数组存储就可以了。然后初始化为空数组。不初始化不代表数组是全0的空数组哦,可能是垃圾数据,不一定是全0,可能会看到乱码。
    定义并初始化局部变量的代码为:

char name[50] = { 0 };

5.输入提示

   输入提示就是在屏幕上打印一些提示语,使用cout就可以搞定。如果要换行,可以使用'\n'换行字符或endl。你也可以用C语言函数printf来打印。提示代码如下:

cout << "请输入您的名字:" << endl;

6.数据输入

    而输入名字和地址,我们需要使用cin来输入数据。如果你想使用C语言的scanf函数也行,只不过cin用起来比scanf简单的太多了。代码如下:

cin>>name;
cin>>addr;

7.结果输出

    结果输出,也只是打印一下。只不过要打印一下变量的内容,而不只是常量字符串内容。而cout轻轻松松就搞定了。cout直接可以输出字符数组的内容。你当然也可以用C语言的printf格式化输出。输出字符串需要使用%s格式化符号哦。输出的代码如下:

cout << name << ",您好。您的地址是:" << addr << endl;

8.程序结束

    结束程序要返回一个int类型的数据。主函数是系统调用的,自然返回的数据也是给系统的。准确来说是给C++运行时环境的。它根据返回值来判断程序的运行程序,返回0表示正常结束,而其他数值一般表示非正常结束。      
    题目没有简单的,只有做简单的回答。就好比,为什么有日出日落,在很久以前,大家都觉得这是常识,不知道是傻子,没有什么好解释的。经过数百年的探索,才知道地球自转,才发现要解释这个问题其实并不简单哦。那么现在再问你,为什么有日出日落呢?你会说,这还不简单啊,因为地球自转啊,你是不是傻。是吗?那地球为什么要自转呢?。。。是不是和数百年前一样的感觉呢?是不是觉得问的好傻?