机械祭天法力无边:C++primer学习(第一章及课后习题)

 

练习1.1: 查阅你使用的编译器的文档,确定它所使用的文件命名约定,编译并运行第2页的main程序。

命令为:

C:\Users\dell>cl /EHsc SMA.cpp

 我的电脑运行结果如下:

 

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

解答:

Windows 7操作系统并不处理或报告程序返回的错误标识,直观上,返回-1的程序与返回0的程序在执行效果上并无不同。但环境变量ERRORLEVEL记录了上一个程序的返回值。因此,在控制台窗口执行修改后的程序,接着执行echo %ERRORLEVEL%,会输出-1。在Linux系统中,执行echo $?有类似效果。

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

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

注1:书本中是使用std::cout,

std是一个命名空间(namespace),‘::’是作用域运算符,cout是std空间中的一个函数名。使用cout时,必须有使用std命名空间的说明,有两种说明方式。

方式一:每次使用时对cout说明:
std::cout << "Input two numbers:";

方式二:在主函数前说明一下,后面就可以直接使用cout:
using namespace std;
cout << "Input two numbers:";

注2:关于endl;

调试的时候用cout输出的时候尽量每个语句后面都加上endl保证一直刷新到设备里,否则可能导致输出还停留在缓冲区中导致判断错误。

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

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

练习 1.5:我们将所有输出操作放在一条很长的语句中。重写程序, 将每个运算对象的打印操作放在一条独立的语句巾。

这题我无法理解题目。。

练习 1.6:解释下面程序片段是否合法。

    std::cout<<"the sum of"<<v1;
    <<"and"<<v2;
    <<"is"<<v1*v2<<std::endl;

如果程序是合法的,它输出是什么?如果程序不合法,原因何在?应该如何修正?

解答:

这段代码不合法。
前两行的末尾有分号,表示语句结束,第2、3两行为两条新的语句。而这两条语句在“<<”之前缺少了输出流,应在“<<”之前加上“std::cout”,即得到正确的程序。

练习 1.9:编写程序,使用while 循环将50 到100 的整数相加。

#include<iostream>
using namespace std;
int main()
{
	int sum = 0, val = 50;
	while (val < 101)
	{
		sum += val;
		++val;
	}
	cout << "Sum of 50 to 100 inclusive is" << sum << endl;
	return 0;
}

练习 1.10:除了++运算符将运算对象的值增加1 之外,还有一个递减运算符(—)实现将值减少1 。编写程序,使用递减运算符在循环中按递减顺序打印出10 到0 之间的整数。

#include<iostream>
using namespace std;
int main()
{
	int sum = 0, val = 10;
	while (val > =0)
	{
		sum += val;
		--val;
	}
	cout << "Sum of 10 to 0 inclusive is" << sum << endl;
	return 0;
}

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

#include<iostream>
using namespace std;
int main()
{
	int N1 = 0, N2=0;
	cout << "Please enter the numbers" << endl;
	cin >> N1 >> N2;
	if (N1 > N2)
	{
		while (N1 >= N2)
		{
			cout << N1 << " ";
			--N1;
		}

	}
	else
	{
		while (N1 <= N2)
		{
			cout << N1 << " ";
			++N1;
		}
	}
	return 0;
}

练习1.14: 对比for循环和while循环,两者的优缺点各是什么?

答:在循环次数已知的情况下,for循环的形式显得更为简洁。而循环次数无法预知时,使用while循环更合适。用特定条件控制循环是否执行,循环体中执行的语句可能导致循环判断条件发生变化。

练习1.15:编写程序,包含第14页“再探编译”中讨论的常见错误。熟悉编译器生成的错误信息。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

师父祭天法力无边

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值