c++ primer第一章习题

以下程序全在vs.net 2003编译,运行通过
习题1.3  编一个程序,在标准输出上打印"Hello,World"
答:
#include <iostream>
int main()
{
    std::cout<<"Hello,World"<<std::endl;
    return 0;
}
习题1.4 我们的程序利用内置的加法操作符"+"来产生两个数的和.编写程序,使用乘法操作符"*"产生两个数的积
#include<iostream>
int main()
{
    int v1,v2;
    std::cin>>v1>>v2;
    std::cout<<"The product of "<<v1<<" and "<<v2<<" is "<<v1*v2<<std::endl;
    return 0;
}
习题1.5 我们的程序使用了一条较长的输出语句.重写程序,使用单独的语句打印每一个操作数.
答:
#include<iostream>
int main()
{
    int v1,v2;
    std::cin>>v1;
    std::cin>>v2;
    std::cout<<"The sum of ";
    std::cout<<v1;
    std::cout<<" and ";
    std::cout<<v2;
    std::cout<<" is ";
    std::cout<<v1+v2;
    std::cout<<std::endl;
    return 0;
}
习题1.6 解释下面的程序段:
std::cout<<"The sum of "<<v1;
               <<" and "<<v2;
               <<" is "<<v1+v2;
                <<std::endl;
这段代码合法吗?如果合法,为什么?如果不合法,又为什么?
答:
不合法,因为;结束了语句;后面的不能写入到输出流
习题1.9  下列循环做什么?sum的最终值是多少?
                 int sum=0;
                for(int i=-100;i<=100;++i)
                sum+=i;
答:
从-100+到100,结果为0
习题1.10 用for循环编程,求从50到100的所有自然数的和.然后用while循环重写该程序
答:

int main()
{
    int sum=0;
    for(int i=50;i<=100;++i)
    {
        sum+=i;
    }
    return 0;
}

int main()
{
    int sum=0,i=50;
    while(i<=100)
    {
        sum+=i;
        ++i;
    }
    return 0;
}
习题1.11 用while循环编程,输出10到0递减的自然数.然后用for循环重写该程序
答:
#include<iostream>
int main()
{
    for(int i=10;i>=0;--i)
    {
        std::cout<<i<<std::endl;
    }
    return 0;
}

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

习题1.12对比前面两个习题中所写的循环.两种形式有何优缺点.
答:
for语句包含了索引变量初始化,循环执行条件,每次循环执行的操作在一起了,阅读起来更清晰
while语句只有循环执行的条件.如果代码比较多阅读时还要找条件涉及的变量,每次循环执行的操作
习题1.15用两个相等的值作为输入编译并运行本节中的程序.将实际输出在与你在上一习题中所做的预测相比较,结实实际结果和你预测的结果间的不相符之处.
答:

#include<iostream>
int main()
{
    std::cout<<"Enter two numbers:"<<std::endl;
    int v1,v2;
    std::cin >> v1 >> v2;
    int lower,upper;
    if(v1 <= v2)
    {
        lower = v1;
        upper = v2;
    }
    else
    {
        lower = v2;
        upper = v1; 
    }

    int sum = 0;
    for(int val=lower;val<=upper;++val)
    {
        sum += val;
    }
    std::cout<< "Sum of " << lower << " to " << upper<<" inclusive is " << sum <<std::endl;
    return 0;
}

如果v1和v2 相等,比如都是6,则判断后lower等于upper,到了for语句时就不会执行循环体,最后sum为6;
习题1.16编写程序,输出用户输入的两个数中的较大者
答:
#include<iostream>
int main()
{
    int v1,v2;
    std::cin>>v1>>v2;
    std::cout<<"The bigger is "<<(v1>v2?v1:v2)<<std::endl;
    return 0;
}
习题1.17 编写程序,要求用户输入一组数.输出信息说明其中有多少个负数.
答:
#include<iostream>
int main()
{
    int v,i=0;
    while(std::cin>>v)//遇到无效输入(比如输入一个不是整数的值)或者文件结束符时条件失败(windows文件结束符为control-z)
    {
        if(v<0) ++i;
    }
    std::cout<<i<<std::endl;
    return 0;
}
习题1.18编写程序,提示用户输入两个数并将这两个数范围内的每个数写到标准输出
答:

#include<iostream>
int main()
{
    int v1,v2;
    std::cin>>v1>>v2;
    int min=v1<v2?v1:v2;
    int max=v1>v2?v1:v2;
    while(min<=max)
    {
        std::cout<<min<<" ";
        ++min;
    }
    std::cout<<std::endl;
   return 0;
}
习题1.19 如果上题给定数1000和2000,程序将产生什么结果?修改程序,使每一行输出不超过10个数
答:


程序输出1000-2000的所有整数,排列不够整齐
#include<iostream>
int main()
{
    int v1,v2;
    std::cin>>v1>>v2;
    int min=v1<v2?v1:v2;
    int max=v1>v2?v1:v2;
    while(min<=max)
    {
        std::cout<<min<<" ";
        if(min%10==0) std::cout<<std::endl;
        ++min;
    }
    std::cout<<std::endl;
   return 0;
}
习题1.20 编写程序,求用户指定范围内的数的和,省略设置上界和下界的if测试.假定输入数是7和3,按照这个顺序,预测程序运行结.然后按照给定的数是7 和3运行程序,看结果是否与你预测的相符.如果不相符,反复研究关于for和while循环的讨论直到弄清楚其中的原因.
答:

#include<iostream>
int main()
{
    int v1,v2,sum=0;
    std::cin>>v1>>v2;
    while(v1<v2)
    {
        sum+=v1;
        ++v1;
    }
    while(v2<=v1)
    {
        sum+=v2;
        ++v2;
    }
    std::cout<<"The sum from v1 to v2 is "<<sum<<std::endl;
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值