<<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