程序設計基礎教材1_第1頁
程序設計基礎教材1_第2頁
程序設計基礎教材1_第3頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、程序設計基礎習題參考答案與部分解析第1章C語言概述一、填空a) C源程序的基本單位是函數(shù)。b) 一個C程序中至少應包括一個ma in函數(shù)。c) 在C語言中,輸出操作是有庫函數(shù)printf()函數(shù) 完成。二、單選題1、A2、C 3、B解析:第1題答案:A。因為一個C程序總是從main函數(shù)開 始執(zhí)行的,而不論 main函數(shù)在程序中的位置。且到 main函 數(shù)結(jié)束。第2題 答案:C。因為main函數(shù)沒有限制必須位于程 序的最前面。C程序書寫自由,一行內(nèi)可寫幾個語句。在對 一個C程序進行編譯的過程中,無法檢查注釋當中的拼寫 錯誤。不過C語言本身并沒有輸入輸出語句,輸入輸出是由函數(shù)完成的。第3題 答案:

2、B。因為一個C語言程序是由若干個函 數(shù)組成的。但至少包含一個 ma in函數(shù),且 main函數(shù)的位 置不限。三、編程題1、編寫一個輸出“ Welcome to C!”信息的小程序。解:程序如下#include “stdio.h”main( )printf( “Welcome to C! ”) ;2、已知三角形的三邊長分別為3, 4, 5,試用海輪公式編程求其面積。海倫公式為:Sa =, 其中S= ( a+b+S)/2;解:程序如下#include “ math.h ”#include“ Stdio.h ”main( )int a , b , c ; /* a ,b,c 3 個整型變量表 示三角

3、形的 3條邊。 */float S ,S1;/* S1 作為面積變量, S 作為中間變量是都應該是實形 */a=3 ; b= 4; c=5;S= (a+b+c)/2.0;S1= Sqrt(S*(S-a)*(S-b)*(S-c); /* Sqrt 函數(shù)完成開平方根功能。 */第 2 章 程序設計基礎知識一、單選題1、C 2、A 3、C 4、A 5、C 6、C 7、D8、C9、D 10、A 11、D 12、A 13、C 14、C 15、B A16、 B 17 D解析:1. 答案:C。這里考察的是用戶標識符的定義。用戶標識符 由字母、數(shù)字、下劃線組成。且必須以字母或下劃線開頭, 區(qū)分大小寫,且不能與

4、 C 語言已有的 32 個關(guān)鍵字同名。由 于選擇不合法的用戶標識符, A 項的 A 、 P_0、 Do 都是 合法的用戶標識符; B 項的 _A 是合法的; D 項的 _123、 temp、INT 也都是合法的。只有 C 選項的標識符都是錯誤 的用戶標識符。2. 答案:A。這里考察的是整型常量的概念。 B項當中01a 不正確, C項當中的0668不是正確的八進制常量, D項當中的2e5是float 型常量。3. 答案:C。這里考察的是字符常量的定義。字符常量是用 單撇號括起來的單個字符或轉(zhuǎn)義字符。所以答案是 C。4. 答案: A 。字符變量只能包含一個字符。5. 答案:Co這里考察的是轉(zhuǎn)義字符

5、的正確表示。 C項的'74' 是錯誤的轉(zhuǎn)義字符,正確表示方法是 '074'。6. 答案:Co字符變量只能包含一個字符, 而C項的c=yes' 是錯誤的。7. 答案:D。這里考察的是輸入格式的控制。輸入格式要與scanf語句中字符串格式相對應。8. 答案:C。這里考察的是輸出格式和字符對應的 ASCII 碼值。A'勺ASCII碼值是65, ''字符的ASCII碼值是89。9. 答案:D。這里考察輸入格式和輸出結(jié)果形式。由于輸 入格式不正確,所以輸出的是不確定值。10. 答案:A。這里考察的是標識符的特點區(qū)分大小寫,變量 sum 和變

6、量 sUM 是兩個不同的變量, sum 并沒有參加運 算,所以它的值不邊仍然是 7。11. 答案: D。 %運算符要求兩邊的運算數(shù)必須是整型。12. 答案:A。這里考察的是復合賦值運算。a%=b+1;等價與 a=a%(b+1);由于a=10,b=4;所以運算后a的值是0。13. 答案:C。這里考察的是在變量定義類型是進行賦值操作。要求a,b,c都賦值為5,且為int類型。只有C正確。14. 答案:C。這里考察的是類型的自動轉(zhuǎn)換,只要有單精度類型或雙精度類型參加運算,結(jié)果都是double (雙精度)類型。15. 答案:B, A。這里考察的是邏輯表達式的運算過程。表達式 1&表達式 2 ,

7、若表達式 1 的值是 0 的話,結(jié)果就是 0,表達式 2 就不參加運算。 要注意: 賦值表達式的值是左邊賦 值變量的值。所以答案為 B , A。16. 答案:B。這里考察的是逗號表達式運算過程是從第1 個表達式開始運算, 然后依次運行到最后一個表達式。 逗號 表達式的值是最后表達式的值, 且注意逗號運算符優(yōu)先級低 于賦值運算符。所以表達式(a=2,b=5,b+,a+b )運算過程 a=2 > b=5 > b+ > a+b=8; 結(jié)果是 8。17. 答案:D。這里考察的是條件表達式的結(jié)合性是從右向 左。所以k<a?k:c<b?c:a; 等 價 于 k<a ?

8、k: ( c<b?c:a ) ; 先 運 算 c<b?c:a ; 的值是 1 ,然后計算 k<a ? k:1 ;的值是 1 。二、填空題1 、-32768 327672、字母 , 數(shù)字 , 下劃線3、分號(;)9、12、15、s 為面7、-2648、 7010、 111、 y%2= = 1x<z | | y<z13、 014、 (x>2&&x<3) | | x < -101三、編程題1、編寫程序,輸入一個長方形的二邊長,輸出其面積。 解:程序如下#include “stdio.h”main( )int a , b , s ; /*

9、 a , b 作為長方形的兩個邊長, 積。 */printf( “請輸入兩個邊長 n ”); scanf(“%d%d”, & a , & b) ; s = a * b ;printf( “The area : %d n “, s ) ;2、設置半徑為 r = 2.9 ,編程求圓周長和圓面積解:程序如下#include “stdio.h”#define PI 3.14main( )float r , L , S ;L = 2*PI*r ;S = PI * r *r ;printf( “L = %f , S = %f n “, L , S ) ;3、輸入一個華氏溫度,輸出相應的攝氏

10、溫度。二者的換算公式 是:c = 5/9(F -32),其中F表示華氏溫度,c表示攝氏溫度。 解:程序如下#include “stdio.h”main( )float c , F ;printf( “請輸入一個華氏溫度: n”);scanf(“%f ”, &F);c = (float) 5/9 *(F-32) ;printf( “F=%f , c=%f n ”, F , c) ;第 3 章 程序設計初步一、單選題1、C2、 C3、 B4、 B5、B解析:1.答案:C。這里考察的是if-else語句和表達式中有增量 和減 量的 執(zhí)行過程 。 if(m+>5)printf( “%dn

11、”, m) ; elseprintf( “%dn”,m+) ;先執(zhí)行m>5的值是0,然后執(zhí)行m=m+1;得到m=6;由于m>5 的值是0所以執(zhí)行else語句,應先輸出 m的值是6,然后m再 自增一個單位變成 7。2. 答案:C。這里考察的是if語句的嵌套。根據(jù)else子句 總是與之前最近的 if 語句配對來進行選擇滿足條件的答案。3. 答案:B。這里也考察的是if語句的嵌套。同理:if(xvy)if(y<0)z=0 ; else z+=1 ; 等價與 if(x<y) if(y<0)z=0 ; else z+=1 ; 因此答案是 B。4. 答案:B。這里考察的是if

12、語句的嵌套。根據(jù) else子句 總是與之前最近的 if 語句配對。5. 答案:B。由于 B 項:if(x=y) &&(x!=0) x+=y ; if 后的條件表達式?jīng)]有用圓括號括起來。正確的是: if(x=y) &&(x!=0) ) x+=y ;二、根據(jù)要求完成程序填空1、 z > yz > x y > x2、 ch >= A'&& ch<= 'Z 'ch=ch-323、x < 0x / 10 y!=2三、編程題1、 編寫一個程序,要求用戶從終端鍵入兩個整數(shù)數(shù)值。檢測這 兩個數(shù), 判定第

13、一個數(shù)是否能被第二數(shù)整除, 并在終端上顯示相 應的信息。解:程序如下#include “stdio.h”main( )int a , b ; /* a 為第一個數(shù) , b 為第二個數(shù) */printf( “Please input two numbers: n”) ;scanf(“%d%d”, &a ,&b) ;if( a%b = = 0 )printf( %d 能被 d 整除。n”,a , b);elseprintf( “%d 不能被 %d 整除。 n” , a , b) ;2、有 3個整數(shù) a , b , c , 由鍵盤輸入,輸出其中最大的數(shù)。 解:程序如下#include

14、 “stdio.h”main( )int a , b , c , max ;printf( “Please input three numbers : n”);scanf(“%d%d%d”, &a ,&b , &c) ;if(a>b) max = a ;else max = b ;if(max < c ) max = c ;printf( “The max is %d n”, max ) ;3、給出一百分制成績,要求輸出成績等級A 、B、C、D、E。其中90分以上為 A, 8089分為B,7079為C,6069為D,60分 以下為 E。解:程序如下#incl

15、ude “stdio.h”main( )float score ;int grade ;printf( “Please input a score :n”);scanf(“%f “,&score) ;grade=(int ) score /10 ; switch(grade) case 10:case9:printf( “n”) ; break ;case8:printf( “n”) ; break ;case7:printf( “n”) ; break ;case6:printf( “n”) ; break ;default:printf( “gradeis En”) ;4、新世紀百

16、貨進行打折促銷活動, 消費金額(P)越高,折扣(d)越大,標準如下:消費金額折扣P < 1000100< P < 2005200< P < 50010500< P <100015P> 100020編程實現(xiàn)從鍵盤輸入消費金額,輸出折扣率和實付金額( f )。要 求分別用 if 語句和 switch 語句實現(xiàn)。解:(1) 用 if 語句編程實現(xiàn)如下#includestdio.hmain( ) float P , d , f;printf( “輸入消費金額: n ” );scanf( “ %f” ,&P);if( P<100 ) d=0

17、;if( P> =100 && P<200 ) d=0.05 ;if( P> =200 && P<500 ) d=0.10 ;if( P >=500 && P<1000) d=0.15 ;if( P > =1000 ) d=0.20 ;f = P * (1-d) ;printf( “折扣是f,則實付金額為%fn ” ,d ,f);(2) 用 switch 語句編程實現(xiàn)如下#include“stdio.h”main( )float P , d , f ;int c ;printf( “輸入消費金額: n ”

18、 );scanf(“%f” ,&P);c = (int)P/100 ;switch( c ) case 0 :d =0 ; break ;case 1 :d =0.05 ; break ;case 2 :case 3 :case 4 :d= 0.10 ; break ;case 5 :case 6 :case 7 :case 8 :case 9 :d= 0.15 ; break ;default :d= 0.20 ;f = P * (1-d) ;printf( “折扣是f,則實付金額為%fn ” ,d ,f);第 4 章 循環(huán)結(jié)構(gòu)程序設計一、單項選擇1、A2、D3、 C4、D5、 B6

19、、D7、B8、B二、按要求完成程序填空j%5= =02、i%3= =2 && i%5= =3 && i%7= =23、i < 10j%3 != 0三、編程題1、編程求 n 的階乘( n 由鍵盤輸入)。 解:程序如下#include “stdio.h”main( )int n , i ;long fac ;fac = 1 ;printf( “Input a number: ”); scanf(“%d”, &n) ;i = 1 ;while( i <= n ) fac = fac * i ;i+ ;printf( “%d! is %ld n ”,

20、 n , fac) ;2、計算 1! +2! +3! + +10!的值。 解:方法一main( )int i=1 , j;double fac ,sum=0 ;while( i<=10 ) j=1 ;Fac=1;while( j<=i ) fac = fac * j ;j+ ; sum = sum + fac ;i+ ;n” ,sum);printf( “ 1! +2! +3! + +10!方法二:#include“ stdio.h ”main( )int i , j ;double fac , sum=0 ;for(i=1;i<=10 ; i+)for(j=1,fac=1;

21、 j <=i ;j+) fac = fac * j ;sum = sum + fac ;n”,sum);printf( “ 1! +2! +3! + +10!方法三:#include “ stdio.h ”main( )int i ;double fac , sum ;sum=0 ;fac=1 ;for( i=1 ; i<10 ; i+ )fac = fac * i ;sum = sum + fac ;3、求 Sn = a + aa + aaa + + aaa a(n 個 a) 的值 ,其中 a 是一個數(shù)字。例如: 3+33+333+3333(此時 n=4),n 由鍵盤輸入。 解:

22、程序如下#include“ stdio.h ”main( )int a , n , i ;long Sn , t ;Sn = 0 ;printf( “Please input a:n” );scanf( “ %d”,&a);printf( “Please input n:n” );scanf( “ %d”,&n) ;t=a ;for(i=1;i<= n ;i+) Sn = Sn +t ;t= t*10 +a;printf( “Sn=%ldn ”,Sn);4、打印出所有的“水花仙數(shù)” ,所謂“水花仙數(shù)”是指一個 3 位 數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如, 153 是一

23、個水花仙 數(shù)。解:程序如下#include “stdio.h”main( )int t , a , b , c , n ; /* 變量 n 為統(tǒng)計水花仙數(shù)的個數(shù) */ n=0 ;for(t=100 ; t<1000 ; t+) a = t /100 ;b = ( t -a*100)/10 ;c = t%10 ;if( a*a*a + b*b*b +c*c*c = = t ) n+ ;if( n%6 = = 0 )printf( “n”) ;printf( “%5d”, t ) ;6、每個蘋果 0.8元 ,第一天買 2 個蘋果,第二天開始,每天買 前一個的 2 倍,直至購買的蘋果個數(shù)達到不

24、超過 100 的最大值。 編寫程序求每天平均花多少錢?解: 程序如下#include “stdio.h”main( )int day , num , sum ;float money , every ;sum = 0 ;num = 2;for(day=1 ; num<100 ; ) sum = sum + num ;day+ ;num = num *2 ;money = sum * 0.8 ;every = money/day ;printf( “every = %f n ”, every ) ;7、變成完成用一元人民幣換成一分、二分、五分的所有兌換方 案,即輸出所有滿足搭配要求的 1

25、分幣個數(shù), 2 分幣個數(shù), 5 分 幣個數(shù)。解:程序如下:#i ncludeStdio.h”mai n()int one ,two , five ;for(on e=0 ; on e<=100 ; on e+)for(two=0 ; two<=50 ; two+)for(five=0 ; five<=20 ; five+)if( o ne + two*2 + five *5 = =100)printf(“ one=%d , two=%d , five=%dn ” ,one , two ,five);第5章模塊化程序設計-函數(shù)一、單選題D10、1、B2、B 3、A4、A5、6、

26、 D7、 B 8、 B9、 BA二、編程題1、已知三角形的三邊長,編一實現(xiàn)求三角形面積的功能函 數(shù)。說明:用海倫公式來求面積,但要注意輸入的三邊長要 符合構(gòu)成三角形的條件。海倫公式為:Sa = s.(s a).(s b).(s c)(其中:S=(a+b+C)/2)解:程序如下#include “stdio.h”#include “math.h”float Area( int a , int b , int c) float s , area ;s = (float)( a+ b+ c)/2 ;if( (a+b>c)&&(a-b)<c)area=sqrt(s*(s-a

27、)*(s-b)*(s-c); elsearea=0;return area ;main( )int a , b , c ;float area ;float Area(int , int , int );printf( “請輸入三角形的三邊長 n”); scanf(“%d%d%d”, &a , &b, &c); area = Area( a , b , c) ;if(area!=0) printf( “area=%fn”, area);elesprintf( “error!n ”);2、寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否 素數(shù)的信息。解:程序如下#in

28、clude “stdio.h”int prime( int n )int t , a=1 ;for(t =2 ; t <= n/2 ; t+)if( n%t = =0)a= 0 ; break ;return a ;main( )int n ;printf( “input a number:n”) ; scanf(“%d”, &n ) ;if(prime(n)=1)printf( “%d is primen”, n );elesprintf( “%d is not primen ”, n) ;3、編寫函數(shù),求 1! +2! +3! +K!的和 解:程序如下#include“ stdio.h ”double SUM( int k) int i , j ;double fac , sum ;sum=0 ;for( i=1 ; i <=k ; i+)for(j=1 ,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論