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循環,其變量定義與變量修改都在語句頭部分,形式比較簡單。兩者可以相互轉化。


1.15 編寫程序,包含第14頁“再探編譯”中討論的常見錯誤。熟悉編譯器生成的錯誤信息。

答:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章