C++ Primer 第一章 开始 1

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

答: 我是用的是vs2019的MSVC编译器CL.exe。 CL 接受具有遵循 FAT、HPFS 或 NTFS 命名约定的名称的文件。 任何文件名均可以包含完整或部分路径。 完整路径包括驱动器名和一个或多个目录名。 CL 接受文件名分隔由反斜杠 (\) 或正斜杠 (/)。 包含空格文件名必须用双引号字符引起来。 部分路径忽略 CL 假定为当前驱动器的驱动器名。 如果不指定路径,则 CL 假定该文件位于当前目录。 文件扩展名确定处理文件的方式。 已编译具有扩展名 .c、.cxx 或 .cpp 的 C 和 C++ 文件。 将其他文件(包括 .obj 文件、库 (.lib) 和模块定义 (.def) 文件)传递给链接器而无需处理。 https://blog.csdn.net/qq_31597573/article/details/51220486 CMD配置连接

1.2 改写程序,让它返回-1,观察现象 。

答: Windows10操作系统并不处理或者报告程序返回的错误标识。

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

#include <iostream>
int main()
{
	std::cout << "Hello, World !" << std::endl;
	return 0
}

1.6 编写程序,在标准输出上打印Hello, World。

#include <iostream>
#include <vector>

int main(int argc, char* argv[])
{
	int v1 = 0, v2 = 1;
	std::cout << "The sum of " << v1;
	<< "and" << v2;
	<< " is " << v1 + v2 << std::endl;

	return 0;
}
答: 上面的程序不是合法的,因为每条语句后的分数意味着该条语句已经结束,所以第二条语句的 “ << ” 是一个错误的表达式。修改如下:
#include <iostream>
#include <vector>

int main(int argc, char* argv[])
{
	int v1 = 0, v2 = 1;
	std::cout << "The sum of " << v1;
	std::cout << "and" << v2;
	std::cout << " is " << v1 + v2 << std::endl;

	return 0;
}

1.7 编译一个包含不正确的嵌套注释的程序,观察编译器返回的错误信息。

答:

#include <iostream>
#include <vector>

int main(int argc, char* argv[])
{
	/*
	下面是一个示例程序 /* */
	*/
	int v1 = 0, v2 = 1;
	std::cout << "The sum of " << v1;
	std::cout << "and" << v2;
	std::cout << " is " << v1 + v2 << std::endl;

	return 0;
}

编译结果
在这里插入图片描述


1.8 指出下列哪些输出语句是合法的。

答:
1, 2, 4是合法的, 3语句不合法,因为第3条语句的前两个注释符组成了一对,所以后面的语句错误,且cout后面的内容被注释掉,没有内容,也是不允许的。第4条语句的前两个与后两个注释符分别组成了两对,所以语法正确,输出“ /*”.

#include <iostream>
#include <vector>
void test1();
void test2();
void test3();
void test4();
int main(int argc, char* argv[])
{
	test1();
	test2();
	test3();
	test4();
	return 0;
}

void test1()
{
	std::cout << "/*" << std::endl;
}
void test2()
{
	std::cout << "*/" << std::endl;
}
void test3()
{
	std::cout << "*/" << std::endl;
}
void test4()
{
	std::cout << /* "*/" /* "/*" */ << std::endl;
}

在这里插入图片描述


1.9 使用while循环将50到100的数相加。

答:

#include <iostream>
int main()
{
	int i1 = 50, sum = 0;
	while (i1 <= 100)
	{
		sum += i1;
		++i1;
	}
	std::cout << sum << std::endl;
	return 0;
}

1.11 编写程序,提示用户输入两个整数,然后打印出两者之间的整数。

答:

#include <iostream>

int main()
{
	std::cout << "请输入两个整数: " << std::endl;
	int i1, i2;
	std::cin >> i1;
	std::cin >> i2;
	int min_value, max_value;
	if (i1 >= i2)
	{
		min_value = i2;
		max_value = i1;
	}
	else
	{
		min_value = i1;
		max_value = i2;
	}
	while (min_value <= max_value)
	{
		std::cout << min_value++ << std::endl;
	}
	return 0;
}

1.14 对比for循环和while循环,两种形式的优缺点是什么?。

答:while循环,在循环条件中检测变量,在循环体中改变变量,形式上没有for循环简洁,但是其比较适合循环次数不易知或者循环初始值不确定的情况。for循环,其变量定义与变量修改都在语句头部分,形式比较简单。两者可以相互转化。

扫描二维码关注公众号,回复: 10449243 查看本文章

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

答:

发布了38 篇原创文章 · 获赞 29 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/ruotianxia/article/details/103137720