- 譚浩強《C程序設計》(第4版)筆記和課后習題詳解
- 圣才電子書
- 1999字
- 2021-06-03 18:31:46
1.2 課后習題詳解
1什么是程序?什么是程序設計?
答:程序是一組計算機能識別和執行的指令。
程序設計是給出解決特定問題程序的過程,是軟件構造活動中的重要組成部分。程序設計往往以某種程序設計語言為工具,給出這種語言下的程序。程序設計過程應當包括分析、設計、編碼、測試、排錯等不同階段。
2為什么需要計算機語言?高級語言的特點?
答:人和計算機交流信息,要解決語言問題。因此,需要創造一種計算機和人都能識別的語言,這就產生了計算機語言。
高級語言的特點:
(1)功能強,且不依賴于具體機器,用它寫出的程序對任何型號的計算機都適用(或只須作很少的修改)。
(2)計算機也是不能直接識別高級語言程序的,也要進行“翻譯”。用一種稱為編譯程序的軟件把用高級語言寫的程序(稱為源程序,source program)轉換為機器指令的程序(稱為目標程序,object program),然后讓計算機執行機器指令程序,最后得到結果。高級語言的一個語句往往對應多條機器指令。
3正確理解以下名詞及其含義:
(1)源程序 目標程序 可執行程序
(2)程序編輯 程序編譯 程序連接
(3)程序 程序模塊 程序文件
(4)函數 主函數 被調用函數 庫函數
(5)程序調試 程序測試
答:(1)①源程序是指未經編譯的,按照一定的程序設計語言規范書寫的,人類可讀的文本文件。通常由高級語言編寫。源程序可以是以書籍或者磁帶或者其他載體的形式出現,但最為常用的格式是文本文件,這種典型格式的目的是為了編譯出計算機可執行的程序。②目標程序,又稱為“目的程序”,為源程序經編譯可直接被計算機運行的機器碼集合,在計算機文件上以.obj作擴展名,由語言處理程序(匯編程序,編譯程序,解釋程序)將源程序處理(匯編,編譯,解釋)成與之等價的由機器碼構成的,計算機能夠直接運行的程序,該程序稱作目標程序。③可執行程序(executable program,EXE File)是指一種可在操作系統存儲空間中浮動定位的可執行程序。在MS-DOS和MS-WINDOWS下,此類文件擴展名為.exe。
(2)①程序編輯是指將完成一件工作所需要的步驟,也就是算法,用計算機所能識別的語言,按照一定的程序結構翻譯出來,并可被計算機執行的編寫代碼的全過程。②程序編譯是指用戶使用編譯程序對其個人編制的源程序進行編譯的過程。③程序連接是指把所有編譯后得到的目標模塊連接裝配起來,再與函數庫相連接成一個整體的過程。
(3)①程序是為完成某項活動所規定的方法。②程序模塊即可由匯編程序、編譯程序、裝入程序或翻譯程序作為一個整體來處理的一級獨立的、可識別的程序指令。③程序文件是用來描述程序的文件,其存儲的是程序,包括源程序和可執行程序。
(4)①函數是指完成一定功能的一段代碼;②主函數是指main函數,main函數是C程序里必不可少的,程序從這里開始運行。③被調用函數是指某一個地方調用到的函數,C程序就是通過函數調用方式來運行的,庫函數就是預先編制好的一些函數,完成特定的功能,比如隨編譯器一起提供的庫函數:數學運算的、有關輸出的、文件操作的等等。④庫函數一般是指編譯器提供的可在C源程序中調用的函數??煞譃閮深?,一類是C語言標準規定的庫函數,一類是編譯器特定的庫函數。
(5)①程序調試,是將編制的程序投入實際運行前,用手工或編譯程序等方法進行測試,修正語法錯誤和邏輯錯誤的過程。這是保證計算機信息系統正確性的必不可少的步驟。②程序測試(program testing)是指對一個完成了全部或部分功能、模塊的計算機程序在正式使用前的檢測,以確保該程序能按預定的方式正確地運行。
4自學本書附錄A,熟悉上機運行C程序的方法,上機運行本章3個例題。
答:略。
5請參照本章例題,編寫一個C程序,輸出以下信息:
****************************
Very good!
****************************
答:程序如下:
#include<stdio.h>
int main()
{
printf("****************************\n\n");
printf("Very good!\n\n");
printf("****************************\n");
return 0;
}
6編寫一個C程序,輸入a,b,c三個值,輸出其中最大者。
答:
#include<stdio.h>
int main()
{
int a,b,c,max;
printf("please input a,b,c:\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf("The lagest number is:%d\n",max);
return 0;
}
運行結果:
please input a,b,c:
23,45,39
The lagest number is:45
7上機運行以下程序,注意注釋的方法。分析運行結果,掌握注釋的用法。
(1)
#include<stdio.h>
int main()
{
printf("How do you do!\n"); //這是行注釋,注釋范圍從//起至換行符止
return 0;
}
(2)把第4行改為
printf("How do you do!\n"); /*這是塊注釋*/
(3)把第4行改為以下兩行
printf("How do you do!\n"); /*這是塊注釋,如在本行內寫不完,可以在下一行繼續寫。這部分內容均不產生目標代碼*/
(4)把第4行改為
//printf("How do you do!\n");
(5)把第4行改為
printf("http://How do you do!\n"); //在輸出的字符串中加入//
(6)用塊注釋符把幾行語句都作為注釋
/*printf("How do you do!\n");
return 0;*/
答:請讀者上機運行程序,注意觀察結果。結果如下:
(1)輸出:How do you do!
//之后是注釋,這部分內容不參加編譯,不影響運行結果。
(2)輸出:How do you do!
/*與*/之間是注釋,這部分內容不參加編譯,不影響運行結果。
(3)輸出:How do you do!
程序運行結果表明:從上一行的/*到下一行的*/之間是注釋,塊注釋不受一行范圍的限制,可以跨行。這部分內容不參加編譯,不影響運行結果。
(4)程序運行時無輸出,因為//之后都作為注釋,因此在程序編譯時不包括printf函數,故無輸出。
(5)輸出://How do you do!
在雙撇號之間的//不作為注釋標記,因此把它按字符原樣輸出。
(6)無輸出。因為把所有語句都作為注釋,不參加編譯,程序相當于:
#include<stdio.h>
int main()