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

C++primer第一章习题

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






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





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

#include<iostream>

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


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

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

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

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


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

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

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

/*统计输入流中每个值连续出现出现了多少次*/
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 :

省略。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: