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頁“再探編譯”中討論的常見錯誤。熟悉編譯器生成的錯誤信息。
答: