C語言練習(xí)試題[帶詳解答案解析](共22頁)_第1頁
C語言練習(xí)試題[帶詳解答案解析](共22頁)_第2頁
C語言練習(xí)試題[帶詳解答案解析](共22頁)_第3頁
C語言練習(xí)試題[帶詳解答案解析](共22頁)_第4頁
C語言練習(xí)試題[帶詳解答案解析](共22頁)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 .WORD.格式. 一單項選擇題1( A )是構(gòu)成C語言程序的基本單位。A、函數(shù) B、過程 C、子程序 D、子例程2C語言程序從 C 開始執(zhí)行。 A) 程序中第一條可執(zhí)行語句 B) 程序中第一個函數(shù)C) 程序中的main函數(shù) D) 包含文件中的第一個函數(shù)3、以下說法中正確的是( C )。 A、C語言程序總是從第一個定義的函數(shù)開始執(zhí)行 B、在C語言程序中,要調(diào)用的函數(shù)必須在main( )函數(shù)中定義 C、C語言程序總是從main( )函數(shù)開始執(zhí)行 D、C語言程序中的main( )函數(shù)必須放在程序的開始部分4.下列關(guān)于C語言的說法錯誤的是( B ) 。A) C程序的工作過程是編輯、編譯、連接、運(yùn)行

2、 B) C語言不區(qū)分大小寫。C) C程序的三種基本結(jié)構(gòu)是順序、選擇、循環(huán) D) C程序從main函數(shù)開始執(zhí)行5.下列正確的標(biāo)識符是(C)。A.-a1 B.ai C.a2_i D.int t58題為相同類型題考點:標(biāo)識符的命名規(guī)則(1) 只能由字母、數(shù)字、下劃線構(gòu)成(2) 數(shù)字不能作為標(biāo)識符的開頭(3) 關(guān)鍵字不能作為標(biāo)識符選項A中的“-” ,選項B中“”與“”不滿足(1);選項D中的int為關(guān)鍵字,不滿足(3)6下列C語言用戶標(biāo)識符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union選項A中的標(biāo)識符以數(shù)字開頭不滿足(2);選項C,E均為為關(guān)鍵字,不滿足(3);選

3、項D中的“-”不滿足(1);7下列四組選項中,正確的C語言標(biāo)識符是( C )。A) %x B) a+b C) a123 D) 123選項A中的“%” ,選項B中“+”不滿足(1);選項D中的標(biāo)識符以數(shù)字開頭不滿足(2)8、下列四組字符串中都可以用作C語言程序中的標(biāo)識符的是( A )。 A、print _3d db8 aBc B、Iam one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My-book line# His.age 選項B中的“”,”$” ,選項D中“”,”#”,”.”,”-”不滿足(1);選項C中的while為關(guān)鍵字,不滿足(3

4、)9.C語言中的簡單數(shù)據(jù)類型包括(D )。 A、整型、實型、邏輯型 B、整型、實型、邏輯型、字符型 C、整型、字符型、邏輯型 D、整型、實型、字符型10.在C語言程序中,表達(dá)式5%2的結(jié)果是 C 。 A)2.5 B)2 C)1 D)3詳見教材P5253.%為求余運(yùn)算符,該運(yùn)算符只能對整型數(shù)據(jù)進(jìn)行運(yùn)算。且符號與被模數(shù)相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;/為求商運(yùn)算符,該運(yùn)算符能夠?qū)φ汀⒆址?、浮點等類型的數(shù)據(jù)進(jìn)行運(yùn)算,5/2=211如果int a=3,b=4;則條件表達(dá)式ab? a:b的值是_A_。A) 3 B) 4 C) 0 D) 1詳見教材P9

5、7.表達(dá)式1?表達(dá)式2:表達(dá)式3先計算表達(dá)式1,若表達(dá)式1成立, 則選擇計算表達(dá)式2,并表達(dá)式2的值作為整個大表達(dá)式的值;若表達(dá)式1不成立,則選擇計算表達(dá)式3,并將表達(dá)式3的值作為整個大表達(dá)式的值此題中的ab相當(dāng)于表達(dá)式1,a相當(dāng)于表達(dá)式2,b相當(dāng)于表達(dá)式3.a為3,b為4。ab表達(dá)式1成立,因此計算表達(dá)式2,并將表達(dá)式2的值即a中的值,并作為整個表達(dá)式的值,因此整個表達(dá)式的值為312若int x=2,y=3,z=4 則表達(dá)式xage D) (*p).age33.設(shè)有如下定義:struck sk int a;float b;data;int *p;若要使P指向data中的a域,正確的賦值語句是

6、 C A) p=&a;B) p=data.a;C) p=&data.a;D)*p=data.a;34.設(shè)有以下說明語句: typedef struct stu int a; float b; stutype; 則下面敘述中錯誤的是( D )。 A、struct是結(jié)構(gòu)類型的關(guān)鍵字 B、struct stu是用戶定義的結(jié)構(gòu)類型 C、a和b都是結(jié)構(gòu)成員名D、stutype是用戶定義的結(jié)構(gòu)體變量名41. 在C語言中,以 D 作為字符串結(jié)束標(biāo)志A)n B) C) 0 D)0 42.下列數(shù)據(jù)中屬于“字符串常量”的是(A )。A.“a” B.ABC C.abc0 D.a若干個字符構(gòu)成字符串在C語言中,用單引

7、號標(biāo)識字符;用雙引號標(biāo)識字符串選項B,C,分別用和標(biāo)識字符串選項D,標(biāo)識字符。43.已知char x=hello, y=h,e,a,b,e;, 則關(guān)于兩個數(shù)組長度的正確描述是 B .A)相同 B)x大于y C)x小于y D)以上答案都不對C語言中,字符串后面需要一個結(jié)束標(biāo)志位0,通常系統(tǒng)會自動添加。對一維數(shù)組初始化時可采用字符串的形式(例如本題數(shù)組x),也可采用字符集合的形式(例如本題數(shù)組y)。在以字符串形式初始化時,數(shù)組x不盡要存儲字符串中的字符,還要存儲字符串后的結(jié)束標(biāo)志位,因此數(shù)組x的長度為6;在以字符集合形式初始化時,數(shù)組y,僅存儲集合中的元素,因此數(shù)組y長度為54編程計算13599的

8、值main() int i, sum = 0;i=1;while ( i100 )sum = sum + i; I=i+2 ; printf(sum=%dn, sum);5從鍵盤輸入一個字符,判斷它是否是英文字母。#include void main()char c; printf(input a character:); c=getchar();if(c= A &c=a &c= z) printf(Yesn); else printf(No);6. 下面程序的功能是在a數(shù)組中查找與x值相同的元素所在位置,請?zhí)羁铡?#include void main() int a10,i,x; print

9、f(“input 10 integers:”); for(i=0;i10;i+) scanf(“%d”,&ai); printf(“input the number you want to find x:”);scanf(“%d”, &x ); for(i=0;i10;i+)if( x=ai )break; if( i10 ) printf(“the pos of x is:%dn”,i); else printf(“can not find x!n”); 7程序讀入20個整數(shù),統(tǒng)計非負(fù)數(shù)個數(shù),并計算非負(fù)數(shù)之和。 #include main( ) int i, a20, s, count; s

10、=count=0; for(i=0; i20; i+) scanf(“%d”, &ai ); for(i=0; i20; i+) if( ai0 ) continue ; s+=ai ; count+; printf(“s=%dt count=%dn”, s, count”); 8. 輸入一個正整數(shù)n (1n10),再輸入n個整數(shù),用選擇法將它們從小到大排序后輸出。 #include int main(void) int i, index, k, n, temp; /* 定義1個數(shù)組a,它有10個整型元素*/ printf(“Enter n: ); printf(“Enter %d integ

11、ers: , n); for(i = 0; i n; i+) scanf(%d, &ai); for(k = 0; k n-1; k+) /* 對n個數(shù)排序 */ index = k; for( ) if( ) index = i; printf(After sorted: ); for(i = 0; i n; i+) /* 輸出n個數(shù)組元素的值 */ return 0; 一、 程序改錯一、 下面每個程序的劃線處有語法或邏輯錯誤,請找出并改正,使其得到符合題意的執(zhí)行結(jié)果。求1234nmain() long int sum; / /若定義變量的語句有錯誤,常見考點有兩個:(1)變量的類型,(2)

12、在定義用于存放運(yùn)算結(jié)果的變量時,一定要賦初值。一般賦值0或者循環(huán)初值。int n,i=1;scanf(%d,n); /若scanf語句有錯誤,常見考點有兩個:(1)格式聲明符號要與后面欲賦值的變量的類型一致,此題%d與n的類型int一致(詳見p69-78);(2)變量的前面要有地址符號&printf(“n”);while(in) / 循環(huán)條件用于控制循環(huán)的次數(shù),若以in 為循環(huán)條件,則意味著i的終值為n-1, 由于且i初值為1,因此一共能夠循環(huán)n-1次。比要求少了1次,因此應(yīng)改為i=n 或者in+1 sum=sum*i; / 若不為sum賦初值,則此處無法計算sum*i。i+;printf(s

13、um=%d,sum); /若printf語句有錯誤,常見考點有1個:格式聲明符號要與后面欲輸出的變量的類型一致,此題%d與sum的類型long int不一致,應(yīng)改為%ld(詳見p69-78);sum應(yīng)初始化 即加入sum=1 第四行改為:scanf(“%d”,&n);第六行改為:while(i=n)或者 while(in+1)第十行改為:printf(sum=%ld,sum); 2求一個數(shù)組中最大值及其下標(biāo)。main( ) int max,j,m; int a5; for(j=1;j=5;j+) / j=1為循環(huán)變量j賦初值為1,同時用j作為數(shù)字元素的邏輯地址下標(biāo)。因此輸出的時候只能從a1開始

14、輸出,無法輸出a0.因此應(yīng)將j賦初值0,相應(yīng)的循環(huán)條件改為j5或者j=4用于控制循環(huán)執(zhí)行5次 scanf(“%d”,a); /若scanf語句有錯誤,常見考點有兩個:(1)格式聲明符號要與后面欲賦值的變量的類型一致,此題%d與a的類型int一致(詳見p69-78);(2)變量的前面要有地址符號& max=a0; for(j=1;j=5;j+) /修改思路與上一個for語句同 if(ma 下標(biāo)存 在了m里 第四行改為:for(j=0;j5;j+)第五行改為:scanf(“%d”,&aj);第七行改為:for(j=1;j5;j+)第八行改為:if(maxaj)第十三行改為:printf(“下標(biāo):%

15、dn最大值:%d”, m,max) 3用一個函數(shù)求兩個數(shù)之和。sum(x,y) /函數(shù)定義的一般形式p173-174 float z;z=x+y;return; /return語句后面可以返回0、常量、變量和表達(dá)式的值。main() float a,b;int c; / /若定義變量的語句有錯誤,常見考點有兩個:(1)變量的類型,(2)在定義用于存放運(yùn)算結(jié)果的變量時,一定要賦初值。一般賦值0或者循環(huán)初值。scanf(%f,%f,&a,&b);c=sum(a,b);printf(nSum is %f,sum); 第一行改為:float sum(float x, float y ); 第四行改為:

16、return(z);或者return z; 第八行:float c; 第十一行:printf(nSum is %f,c);4 程序讀入20個整數(shù),統(tǒng)計非負(fù)數(shù)個數(shù),并計算非負(fù)數(shù)之和.#include “stdio.h”main() int i, s , count ,n=20;int an; /數(shù)組定義的一般形式,詳見p143, 其中的常量表達(dá)式不能為變量 s=count=1; for( i=1, i20, i- -) / for語句的格式,三個表達(dá)式之間用分號,且分號不可省略 scanf(“%d”, ai ); /若scanf語句有錯誤,常見考點有兩個:(1)格式聲明符號要與后面欲賦值的變量的

17、類型一致,此題%d與n的類型int一致(詳見p69-78);(2)變量的前面要有地址符號& for(i=0;i20;i+) if(ai0) break; / break與continue的區(qū)別 p128. 在改錯題中若錯誤出現(xiàn)在break語句,則通常是將break換為continue;反之,若錯誤出現(xiàn)在continue,通常是將其換為break s +=ai;count+; printf(“s=%f count=%fn”, s, count); /若printf語句有錯誤,常見考點有1個:格式聲明符號要與后面欲輸出的變量的類型一致答案:int a20s=count=0;for(i=0;i20;

18、i-)scanf(“%d”,&ai);continue;printf(“s=%d count=%dn”,s,count);5. 從鍵盤輸入整數(shù)x的值,并輸出y的值. main() float x,y; scanf(“%d”,&x); y=3.5+x; printf(“y=%d”); 正確的: int x; float y; printf(“y=%f”,y); 6 編程計算下面分段函數(shù), 輸入x, 輸出ymain() int x,y; printf(“n Input x:n”); scanf(“%d”, x); / 錯誤同上題scanfif(x=0|x=0&x=10第三處改為:y=2*x-1;第

19、四處改為:y=3*x-1;第五處改為:printf(“y=%d”,y);7. 求100300間能被3整除的數(shù)的和。 main() int n;long sum; / /若定義變量的語句有錯誤,常見考點有兩個:(1)變量的類型,(2)在定義用于存放運(yùn)算結(jié)果的變量時,一定要賦初值, 一般賦值0或者循環(huán)初值。 for(n=100,n=300,n+) / for語句的格式,三個表達(dá)式之間用分號,且分號不可省略 if(n%3=0) / = 是賦值符號,用于將右邊的值賦給左邊的變量;= 是關(guān)系符號,用來判斷兩個值是否相等 。改錯中if后面表達(dá)式中的賦值符號是常見的考點。 sum=sum*n; printf

20、(“%ld ”,sum); 第一處改為:long sum=0;第二處改為:for(n=100;n=300;n+)第三處改為:if(n%3=0)第四處改為:sum=sum+n;8. 求表達(dá)式的值#include #include int fun(int x, int y);main()int a,b; float f;scanf(“%d,%d”,a,b); /與改錯第1題中的scanf錯誤相同if(ab0) / C語言中乘號不能省略,且用*表示乘法運(yùn)算fun(a,b); / 調(diào)用帶有返回值的函數(shù),應(yīng)將函數(shù)的返回值保存在變量里printf(The result is:%dn, &f) /與第6題中

21、printf錯誤相同 else printf(“error!”);fun(x, y) / 定義函數(shù)的一般形式p173-174 float result; result = sqrt(a+b); return; /return語句后面可以返回0、常量、變量和表達(dá)式的值。第一處改為:if(a*b0)第二處改為:f= fun(a,b); 第三處改為:printf(The result is:%dn,f);第四處改為:float fun(int x, int y)第五處改為:f= fun(a,b); 第六處改為:result = sqrt(a*b);第七處改為:return result;二、 編程題

22、 1.輸入2個整數(shù),求兩數(shù)的平方和并輸出。 #include int main(void) intt a ,b,s; printf(please input a,b:n); scanf(%d%d”,&a,&b); s=a*a+b*b;printf(the result is %dn,s);return 0; 2. 輸入一個圓半徑r,當(dāng)r0時,計算并輸出圓的面積和周長,否則,輸出提示信息。#include #define PI 3.14 int main(void) double r ,area , girth; printf(please input r:n); scanf(%lf,&r);

23、if (r=0) area =PI*r*r; girth =2*PI*r ; printf(the area is %.2fn, area);printf(the girth is %.2fn, girth);else printf(Input error!n); return 0; 3、已知函數(shù)y=f(x),編程實現(xiàn)輸入一個x值,輸出y值。 2x+1 (x0) #include void main() int x,y;scanf(“%d”,&x);if(x0) y=2*x-1;else y=0;printf(“%d”,y);4.從鍵盤上輸入一個百分制成績score,按下列原則輸出其等級:sc

24、ore90,等級為A;80score90,等級為B;70score80,等級為C;60score70,等級為D;score60,等級為E。 #include void main()int data; char grade; printf(Please enter the score:);scanf(%d”, &data); switch(data/10) case 10: case 9 : grade=A; break; case 8: grade=B; break;case 7: grade=C; break; case 6: grade=D; break; default: grade=E

25、; printf(the grade is %c”,grade);5. 編一程序每個月根據(jù)每個月上網(wǎng)時間計算上網(wǎng)費(fèi)用,計算方法如下: 要求當(dāng)輸入每月上網(wǎng)小時數(shù),顯示該月總的上網(wǎng)費(fèi)用(6分)#include void main() int hour; float fee; printf(“please input hour:n”); scanf(“%d”,&hour); if(hour=10&hour=50) fee=3*hour; else fee=hour*2.5; printf(“The total fee is %f”,fee);6. 從鍵盤輸入10個整數(shù),統(tǒng)計其中正數(shù)、負(fù)數(shù)和零的個數(shù),

26、并在屏幕上輸出。#include void main( ) int a, i,p=0,n=0,z=0; printf(please input number); for(i=0;i0) p+;else if (a0) n+;else z+; printf(正數(shù):%5d, 負(fù)數(shù):%5d,零:%5dn,p,n,z);7、編程序?qū)崿F(xiàn)求1-10之間的所有數(shù)的乘積并輸出。#include void main( ) int i;long sum=1; for(i=1; i=10; i=i+1) sum=sum*i; printf(“the sum of odd is :%ld”,sum);8. 從鍵盤上輸

27、入10個數(shù),求其平均值。#include void main() int a,i,sum=0; float ave; for(i=0;i10;i+) scanf(%d,&a); sum+=a; ave=(float)sum/10;printf(ave = %fn, ave); 9、編程序?qū)崿F(xiàn)求1-1000之間的所有奇數(shù)的和并輸出。 #include void main( ) int i, sum=0; for(i=1; i1000; i=i+2) sum=sum+i; printf(“the sum of odd is :%d”,sum);10.有一個分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,

28、13/8,編程求這個序列的前20項之和。#include void main() int i,t,n=20; float a=2,b=1,s=0;for(i=1;i=n;i+)s=s+a/b;t=a;a=a+b;b=t; printf(sum=%6.2f,s);11從鍵盤輸入兩個數(shù),求出其最大值(要求使用函數(shù)完成求最大值,并在主函數(shù)中調(diào)用該函數(shù)) #include float max(float x,float y);void main() float a,b,m;scanf(%f,%f,&a,&b);m=max(a,b);printf(Max is %fn,m);float max(floa

29、t x,float y)if (x=y) return x;elsereturn y;12. 編寫程序,其中自定義一函數(shù),用來判斷一個整數(shù)是否為素數(shù),主函數(shù)輸入一個數(shù),輸出是否為素數(shù)。#include #include int IsPrimeNumber(int number)int i;if (number = 1)return 0;for (i=2; isqrt(number); i+)if (number % i) = 0)return 0; return 1; void main() int n; printf(“Please input n:”); scanf(“%d”,&n); i

30、f(IsPrimeNumber(n) printf(“n%d is a Prime Number”,n); else printf(“n%d is not a Prime Number”,n);14. 用數(shù)組實現(xiàn)以下功能:輸入5個學(xué)生成績,而后求出這些成績的平均值并顯示出來。 #include void main() int a5, s=0;int i;for(i=0;i5;i+)scanf(“%d”,&ai);for(i=0;i5;i+)s=s+ai;printf(“result=%f”,s/5.0);15、輸入一個正整數(shù)n(n=6),再輸入nn的矩陣,求其主對角線元素之和及副對角線元素之和

31、并輸出。#include int main(void) int i,j,n,sum1=0,sum2=0;int a66;printf(Enter n(n=6):);scanf(%d,&n); printf(Enter data:n); for(i=0;in;i+)for(j=0;jn;j+) scanf(%d,&aij); if(i=j) sum1+=aij; if(i+j=n-1) sum2+=aij; printf(sum1=%d,sum2=%d,sum1,sum2); return 0;16、從鍵盤輸入30名學(xué)生的成績數(shù)據(jù),求其中的最高分、最低分和平均分。(提示:用數(shù)組存放成績數(shù)據(jù)) #

32、include #define M 30 void main ( ) float scoreM, max , min, aver; int i ; printf(“please input score: n”); for(i=0; iM ; i+) scanf(“%f”, &scorei); max=score0; min=score0; aver=score0; for(i=1; iM; i+) if (max scorei) min=scorei; aver+=scorei; printf(“max=%f, min=%f,aver=%f”, max, min, aver/M);17.將一個有5個元素的數(shù)組中的值(整數(shù))按逆序重新存放。例: 原來順

溫馨提示

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

評論

0/150

提交評論