您的位置:首页 > 编程语言 > C语言/C++

<<C++ Primer中文版(第五版)>>练习

2016-05-10 23:33 459 查看

IDE:VS2012

练习1.3:

#include<iostream>
using std::cout;
using std::endl;
int main()
{
cout<<"hello world"<<endl;
return 0;
}


练习1.4:

#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int i_Var1,i_Var2;

cout<<"请输入两个数字"<<endl;

cin>>i_Var1>>i_Var2;

cout<<i_Var1<<"和"<<i_Var2
<<"的积为"<<i_Var1*i_Var2<<endl;

return 0;
}


练习1.5:

//承接练习1.4的代码
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int i_Var1,i_Var2;

cout<<"请输入两个数字"<<endl;

cin>>i_Var1>>i_Var2;

cout<<i_Var1;
cout<<"和";
cout<<i_Var2;
cout<<"的积为";
cout<<i_Var1*i_Var2;
cout<<endl;

return 0;
}


练习1.6:

这个代码片段是有错误的,当

std::<<"The sum of "<<v1;


句子后面出现逗号的时候,编译器就会认为这一行已经结束了,所以第二句

<<"and"<<v2;


和第三句

<<"is"<<v1+v2<<endl;


的第一个输出运算符(<<)的左边就会要求一个ostream对象(例如std::cout),而这两句都没有,所以编译器会报错

练习1.7:

只有第三句是不合法的,对于

std::cout<</*"*/"*/;


第一个 ” 会被注释掉,其等价于:

std::cout<<"*/;


很明显,这是不合法的,双引号没有匹配的右侧双引号,编译不通过

练习1.9

#include<iostream>
using std::cout;
using std::endl;
int main()
{
int i_VarCircle = 50;
int i_Sum = 0;
while(i_VarCircle <= 100)
{
i_Sum += i_VarCircle;
++i_VarCircle;
}

cout<<i_Sum<<endl;

return 0;
}


练习1.10

//递减输出10到0之间的整数
#include<iostream>
using std::cout;
using std::endl;
int main()
{
int i_VarCircle = 10;
while(i_VarCircle >= 0)
{
cout<<i_VarCircle<<endl;
--i_VarCircle;
}

return 0;
}


练习1.11

//输出两个整数之间的整数
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int i_Lower;
int i_Higher;

cout<<"请输入两个整数,第一个小于第二个"<<endl;
cin>>i_Lower>>i_Higher;

while(i_Lower <= i_Higher)
{
cout<<i_Lower<<endl;
++i_Lower;
}
return 0;
}


练习1.12

代码片段

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


这段代码主要的功能是实现-100到100的整数相加,sum最终的值是0.

练习1.13

//用for循环重复1.41节的练习
#include<iostream>
using std::cin;
using std::cout;
using std::endl;

a251
int main()
{
int sum = 0;
int val = 1;
for(;val <= 10; ++val)
sum += val;
cout<<"Sum of 1 to 10 inclusive is "
<<sum
<<endl;
return 0;
}


练习1.14

关于for循环和while循环的优缺点(仅限于C++/C),从效率上来讲,它们几乎是一致的,汇编代码也证明了这一点。

因为for语句将循环的条件以及循环变量的修改放在一起,会显得比较直观易解,也正是因为如此,所以for循环比较适用于循环次数固定的场景中。

而while语句形式则比较灵活,常常应用于无法预知循环次数的场景,例如C语言中计算字符串的长度。

最后套用前人的一句话,“两者从表达能力上是等价的”。

练习1.16

//从cin当中读取一组数并输出
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int i_val;
int sum = 0;

while(cin>>i_val)
{
sum += i_val;
}
cout<<sum<<endl;
return 0;
}


练习1.17

#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int currVal = 0, val =0;
if(cin>>currVal)
{
int cnt = 1;
while(cin>>val)
{
if(val == currVal)
{
++cnt;
}
else
{
cout<<currVal<<" occurs  "
<<cnt<<" times"<<endl;
currVal = val;
cnt = 1;
}

}
//打印最后一个值的个数
cout<<currVal<<"  occurs  "
<<cnt<<"  times"<<endl;

}
return 0;
}
对于该程序来讲,假如输入的值都是相等的,那么将会输出
该值 occurs  该值个数  times
例如输入42 42 42 42 42 ,将会输出
42 occurs 5 times
假如输入的值没有重复值,将会打印:每个值 occurs 1 times
例如输入1 2 3 ,将会打印
1 occurs 1 times
2 occurs 1 times
3 occurs 1 times
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++-VS2012