C++primer第一章习题

练习1.1:查阅你使用的编译器的文档,确定它所使用的文件名约定。编译并运行第2页的main程序。

C++primer第一章习题_第1张图片

练习1.2:改写程序,让它返回-1.返回值-1通常被当做程序错误的标识。重新编译运行你的程序,观察你的系统如何处理main返回的错误标识。

C++primer第一章习题_第2张图片


练习1.3:编写程序,在标准输出上打印Hello, World。

#include

int main()
{
    std::cout << "Hello, World" << std::endl;
    return 0;
}

练习1.4: 我们的程序使用加法运算符+来将两个数相加。编写程序使用乘法运算符*,来打印两个数的乘积。

#include

int main()
{
    int n1,n2;
    std::cout << "请输入两个数以完成相加和相乘:" << std::endl;
    std::cin >> n1 >> n2;
    std::cout << "The result of " << n1 << " + " << n2
              << " is " << n1 + n2 << std::endl;
    std::cout << n1 << " * " << n2 << " is " << n1 * n2 << std::endl;

    return 0;
}

练习1.5 同1.4。


练习1.6:解释下列程序片段是否合法?如何修改?

不合法。在第二、三行的第一个<<输出运算符前面加上“std::cout” 即可。


练习1.7:编译一个包含不正确的嵌套注释的程序,观察编译器返回的错误信息。

给出非法字符的错误信息。


练习1.8:指出下列哪些输出语句是非法的。

std::cout << "/*"; //合法
std::cout << "*/"; //合法
std::cout << /* "*/" */; //非法
std::cout << /* "*/" /* "/*" */; //合法

练习1.9: 编写程序,使用while循环将50到100的整数相加。

#include

int main()
{
    int i = 50,sum = 0;
    while( i != 101 )
    {
        sum += i;
        ++i;
    }
    std::cout << "The sum is " << sum << std::endl;

    return 0;
}

输出的结果为:The sum is 3825。


练习1.10:除了++运算符将运算对象的值增加1之外,还有一个递减运算符实现将值减少1。编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间的整数。

#include

int main()
{
    int i = 10;
    while( i >= 0 )
    {
        std::cout << i << " ";
        --i;
    }
    std::cout << std::endl;
    return 0;
}

练习1.11:编写程序,提示用户输入两个整数,打印出这两个整数所指定范围内的所有整数。

#include

int main()
{
    int start,last;
    /*打印不包含范围的last*/
    std::cout << "请输入两个整数,程序将打印这两个整数之间的所有数:" << std::endl;
    std::cin >> start >> last;
    if( start > last )
    {
        int tmp = start;
        start = last;
        last = tmp;
    }
    while( start != last + 1 )
    {
        std::cout << start << " ";
        ++start;
    }

    return 0;
}

练习1.12:下面的for循环完成了什么功能?sum的终值是多少?

int sum = 0;

for( int i = -100; i < = 100; ++i )

      sum += i;


该循环将-100(含)到100(含)之间的所有数相加,sum的终值是0;


练习1.13 :使用for循环重做1.4.1节中所有的练习。

这里就省略了。。。


练习1.14:对比for循环和while循环,两种形式的优缺点是什么?

答:在循环次数已知的情况下,for循环形式更简洁。

而循环次数无法预知时,用while循环实现更适合。


练习1.15:编写程序,包含第14页的“再探编译”中讨论的常见错误。熟悉编译器生成的错误信息。

略。


练习1.16:编写程序,从cin读取一组数,输出其和。

#include

int main()
{
    int val;
    int sum = 0;
    std::cout << "请输入一组数,以求它们的和(输入非数字结束):" << std::endl;
    while( std::cin >> val )
    {
        sum += val;
    }
    std::cout << "The sum is " << sum << std::endl;

    return 0;
}



练习1.17:如果输入的所有值都是相等的,本节的程序会输出什么?如果没有重复值,输出又会是怎样的?


程序我又自己打了一次:

#include

/*统计输入流中每个值连续出现出现了多少次*/
int main()
{
    //curVal是正在统计的数,我们将要读入的数存入val
    int curVal = 0, val = 0;
    if( std::cin >> curVal ) //读取第一个数,确保有数处理
    {
        int cnt = 1;

        while( std::cin >> val )   //直到读到一个非法输入
        {
            if( val == curVal )
                ++cnt;
            else
            {
                std::cout << curVal << " occurs "
                          << cnt << " times " << std::endl;
                curVal = val;
                cnt = 1;
            }

        }
        std::cout << curVal << " occurs "
                          << cnt << " times " << std::endl;
    }

    return 0;
}

所有值相等和没有重复值程序都正常运行,都能统计每个值出现的次数。


练习1.18: 同上。


练习1.19:同练习1.10 。


练习1.20 - 1.25 :

省略。







你可能感兴趣的:(C++primer习题)