习题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;
}