C語言練習題、期末題、復試題_第1頁
C語言練習題、期末題、復試題_第2頁
C語言練習題、期末題、復試題_第3頁
C語言練習題、期末題、復試題_第4頁
C語言練習題、期末題、復試題_第5頁
免費預覽已結束,剩余33頁可下載查看

下載本文檔

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

文檔簡介

1、C語言技能試題1、設圓半徑r=1.5,圓柱高h=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。 用scanf輸入數據,輸出計算結果。輸出時要有文字說明,取小數點后兩位數字。2、編程序,用getchar函數讀放兩個字符給 cl、c2,然后分別用putchar函數和printf函數 輸出這兩個字符。3、有一個函數x x1J 2x 1 x10用scanf函數輸入x的值(分別為x10三種情況),求y值。4、給一個百分制成績, 要求輸出成績等級 A、B、C、D、E。90分以上為A, 8189 分為B, 7079 分為C, 6069 分為D, 60 分以下為E。5、給一個不多于5位的正整數,要求:

2、求出它是幾位數;分別打印出每一位數字;按逆序 打印出各位數字,例如原數為 321,應輸出123。6、輸入四個整數,要求按大小順序輸出。7、輸入兩個正整數,求其中最大公約數和最小公倍數。8、輸入一行字符,分別統計出其中的英文字母、空格、數字和其它字符的個數。9、猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下 的一半零一個。到第 10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少 桃子。10、用選擇法對10個整數排序。10個整數用scanf函數輸入。11、有15個數存放在一個數組中,

3、輸入一個數,要求用折半查找法找了該數是數組中第幾個元素的值。如果該數不在數組中,則輸出“無此數”。以15個數用賦初值的方法在程序中給出,要找的數用 scanf函數輸入。12、將兩個字符串連接起來,不要用 strcat函數。13、找出一個二維數組的“鞍點”,即該位置上的元素在該行上最大,在該列上最小。也可 能沒有鞍點。數組元素的值用賦初值方法在程序中指定。14、寫一個判素數的函數,在主函數輸入一個整數,輸出是否素數的信息。15、用一個函數來實現將一行字符串中最長的單詞輸出。此行字符串從主函數傳遞給該函數。16、用遞歸法將一個整數輪換成字符串。例如,輸入 483,應輸出字符串“ 483”。n的位數

4、 不確定,可以是任意的整數。17、求兩個整數的最大公約數和最小公倍數,用一個函數求最大公約數。用另一個函數根據求出的最大公約數求最小公倍數。(1)用全局變量的方法。將兩個整數的最大公約數、最小公倍數都設為全局變量。(2)不用全局變量,兩個整數在主函數中輸入,并傳送給函數1,求出的最大公約數返回主函數,然后再與兩個整數一起作為實參傳遞給函數2,以求出最小公倍數,返回到主函數輸出最大公約數和最小公倍數。18、寫一個函數,輸入一個十六進制數,輸出相應的十進制數。19、定義一個帶參數的宏, 使兩個參數的值互換。在主函數中輸入兩個數作為使用宏的實參, 輸出已交換后的兩個值。20、設計輸出實數的格式,包括

5、: (1) 一行輸出一個實數;(2) 一行內輸出兩上實數;(3)一行內輸出三個實數。實數用“”格式輸出。用一個文件包含以上用#3向3命令定義的格式。在自己的文件(自己命名)中用 #include命令交文件包含進 來。在程序中用 scanf函數讀入三個實數給 fl、f2、f3。然后用上面定義的三種格式分別輸 出(1) fl , f2; (2) fl , f2, f3。21、用條件編譯方法實現以下功能:輸入一行電報文字,可以任選兩種輸出,一為原文輸出;一為將字母變成其下一字母(如a變成b,z變成a。其它字符不變)。用#3巾ne命令來控制是否要譯成密 碼。例如:#define CHANG1則輸出密碼

6、。若#define CHANG0則不譯成密碼,按原碼輸出。 用條件編譯方法來處理。22、輸入三個整數,按由小到大的順序輸出,然后交程序改為:輸入三個字符串,按由小到 大順序輸出。(要求用指針處理)。素:廠1357911j 13 15 19 .23、得一個3X3的矩陣轉置,用一函數實現之。在主函數中用scanf函數輸入以下矩陣元將數組名作為函數實參。函數調用后在主函數中輸出已轉置的矩 陣。(要求用指針處理)24、用一個函數實現兩個字符串的比較,即自己寫一個strcmp函數:strcmp(s1,s2)如果s1=s2,則函數返回值為 0;如果s1ws2,返回它們二者第一個不同字符的ASCII碼差值(

7、如“ BOY與“BAD,第二個字母不同,O與A之差為79-65=14 );如果s1s2,則輸出正值;如 果s1s2則輸出負值。兩個字符串s1、s2由main函數輸入,strcmp函數的返回值也在 main 函數輸出。(要求用指針處理)25、用指向指針的指針的方法對n個整數排序并輸出。要求將排序單獨寫一個函數。N和各整數在主函數中輸入。最后在主函數中輸出。26、有5個學生,每個學生裝的數據包括學號、姓名、三門課的成績,從鍵盤輸入5個學生數據,要求打印出三門課總平均成績,以及最高分的學生的數據(包括學號、姓名、三門課 成績、平均分數)。要求用一個input函數輸入5個學生數據;用一個 averag

8、e函數求總平 均分;用max函數找出最高分學生數據;總平均分和最高分的學生的數據都在主函數中輸出。27、13個人圍成一個圈,從第 1個人開始順序報號1、2、3。凡報到“ 3”者退出圈子,找 出最后留在圈子中的人原來的序號。28、建立一個鏈表,每個結點包括:學號、姓名、性別、年齡。輸入一個年齡,如果鏈表中 的結點所包含的年齡等于此年齡,則將此結點刪去。29、有5個學生,每個學生有 3門課的成績,從鍵盤輸入以上數據(包括學生號、姓名、三 門課成績),計算出平均成績,將原有數據和計算出的平均分數存放在磁盤文件“stud”中。30、將上題“stud”文件中的學生數據,按平均分進行排序處理,將已排序的學

9、生數據存入一個新文件stu_sort 中。單項選擇題:1 . ( A )是構成C語言程序的基本單位。A、函數B、過程C、子程序D、子例程2 . C語言程序從C開始執行。A)程序中第一條可執行語句B)程序中第一個函數C)程序中的main函數 D)包含文件中的第一個函數3、以下說法中正確的是( C )。A、C語言程序總是從第一個定義的函數開始執行B、在C語言程序中,要調用的函數必須在main()函數中定義C、C語言程序總是從main()函數開始執行D、C語言程序中的 main()函數必須放在程序的開始部分 4.下列關于C語言的說法錯誤的是( B )A) C程序的工作過程是編輯、編譯、連接、運行 B

10、) C語言不區分大小寫。C) C程序的三種基本結構是順序、選擇、循環D) C程序從main函數開始執行5 .下列正確的標識符是(C )。A.-a1B.aiC.a2_iD.int t6 .下列C語言用戶標識符中合法的是( B )。A)3axB)x C)case D)-e2 E)union7 .下列四組選項中,正確的 C語言標識符是(C )。A) %xB)a+b C)a123D)1238、下列四組字符串中都可以用作C語言程序中的標識符的是( A )。A、print _3ddb8aBcC、str_1Cpp pow while9.C語言中的簡單數據類型包括(DA、整型、實型、邏輯型C、整型、字符型、邏

11、輯型B、Iam one_half start$it 3paiD、)B、整型、實型、邏輯型、字符型D、整型、實型、字符型10.在C語言程序中,表達式A)2.5B)25%2的結果是 CC)1D)311.如果int a=3,b=4 ;則條件表達式ab? a:b的值是 AA) 3B) 4C) 0 D) 112 .若 int x=2,y=3,z=4則表達式 xage D) (*p).age33 .設有如下定義:struck sk int a;float b;data;int *p;若要使P指向data中的a域,正確的賦值語句是 CA) p=&a;B) p=data.a; C) p=&data.a; D)

12、*p=data.a;34 .設有以下說明語句:typedef struct stu int a;float b; stutype;則下面敘述中錯誤的是(D )。A、struct是結構類型的關鍵字B、struct stu是用戶定義的結構類型C、a和b都是結構成員名D、stutype是用戶定義的結構體變量名35 . 語句int *p;說明了 C 。A)p是指向一維數組的指針B)p是指向函數的指針,該函數返回一 int型數據C)p是指向int型數據的指針D)p是函數名,該函數返回一指向int型數據的指針36 .下列不正確的定義是( A )。A. int *p=&i,i;B.int *p,i;C. i

13、nt i,*p=&i;D.int i,*p;37 .若有說明:int n=2,*p=&n,*q=p,則以下非法的賦值語句是:(D )A) p=qB) *p=*q C) n=*q D) p=n38 .有語句:int a10,;則 B是對指針變量p的正確定義和初始化。A)int p=*a; B)int *p=a; C)int p=&a; D)int *p=&a;39 .若有說明語句“int a5,*p=a; ,則對數組元素的正確引用是(C )。A.apB.paC.*(p+2)D.p+240 .有如下程序int a10=1,2,3,4,5,6,7,8,9,10,*P=a;則數值為9的表達式是 BA)

14、 *P+9B) *(P+8)C) *P+=9D) P+841 .在C語言中,以 D作為字符串結束標志A)nB) C) 0D)042 .下列數據中屬于“字符串常量”的是( A )。A. aB.ABCC. abc0 D. a43 .已知char x尸hello, y=h,e,a,b,e;,則關于兩個數組長度的正確描述是B .A)相同 B)x大于y C)x小于y D)以上答案都不對44 .下面各函數中能實現打開文件功能的是 AA) fopenB) fgetcC) fputc D) fclose45 .下列語句中,把變量 fp說明為一個文件型指針的是(A )。A) FILE *fp;B) FILE f

15、p;C) file *fp;D) file fp;46 .以讀寫方式打開一個已有的文本文件file1,并且FILE *fp ,下面fopen函數正確的調用方式是(B )。A.fp=fopen( file1 , r)B.fp=fopen( file1 , r+)C.fp=fopen( file1 , rb)D.fp=fopen( file1 , w)讀程序基本輸入輸出及流程控制1.#include main() int a=1,b=3,c=5;if (c=a+b)printf(yesn);elseprintf(non);運行結果為: no2.#include main() int a=12, b

16、= -34, c=56, min=0;min=a;if(minb)min=b;if(minc)min=c;printf(min=%d, min);運行結果為: min=-343.#include main() int x=2,y= -1,z=5;if(xy)if(y0)z=0;elsez=z+1;printf( “ %nd” ,z);運行結果為: 5 4.#include main() float a,b,c,t;a=3;b=7;c=1;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(%5.2f,%5.2f,%5.2f,

17、a,b,c);運行結果為: 1.00,2.00,5.#include main ( ) float c=3.0 , d=4.0;if ( cd ) c=5.0;elseif ( c=d ) c=6.0;else c=7.0;printf (“ %n.1” f ,c ) ;運行結果為:6.#include main() int m;scanf(%d, &m);if (m = 0) if (m%2 = 0) printf(%d is a positive evenn, m);else printf(%d is a positive oddn, m);else if (m % 2 = 0) prin

18、tf(%d is a negative evenn, m); else printf(%d is a negative oddn, m); 若鍵入 9 ,則運行結果為 :-9 is a negative odd7.#include main() int num=0 ;while(num=2) num+ ; printf(%dn,num) ; 運行結果為:1238.#include main( ) int sum=10,n=1;while(n3) sum=sum-n; n+; printf(“ %d,%d” ,n,sum);運行結果為: 3,79.#include main() int num,

19、c;scanf(%d,&num);do c=num%10; printf(%d,c); while(num/=10)0); printf(n);從鍵盤輸入 23 ,則運行結果為: 3210#include main() int s=0,a=5,n;scanf(%d,&n);do s+=1;a=a-2; while(a!=n);printf(%d , %dn,s,a);若輸入的值1 ,運行結果為: 2,111.#include stdio.hmain()char c;c=getchar();while(c!=?) putchar(c); c=getchar(); 如果從鍵盤輸入 abcde ?

20、fgh (回車)運行結果為: abcde12.#include main() char c;while(c=getchar()!= $) if( A =c&c=Z)putchar(c);else if( a =c&c= z ) putchar(c-32); 當輸入為 ab*AB%cd#CD$ 時,運行結果為: ABABCDCD13.#include main() int x, y =0;for(x=1;x=10) break;y=y+x;printf( “ %d %d” ,y,x);運行結果為: 10514.#includemain( ) char ch;ch=getchar( );switc

21、h(ch) case A: printf(“ %c”, A);case B: printf(“ %c”, B); break;default: printf(“n%”s, ” other ” ); 當從鍵盤輸入字母A 時,運行結果為: AB15.#include main( ) int a=1,b=0 ;scanf(“ %d” ,&a);switch(a) case 1: b=1 ; break ; case 2: b=2 ; break ; default : b=10 ; printf(%d , b) ;若鍵盤輸入5 ,運行結果為:1016.#include main()_ char gr

22、ade= C;switch(grade) case A: printf(“ 9n0” );case B: printf(“ 8n”0 );case C: printf(“ 7n0” );case D: printf(“ 6n0” ); break;case E: printf(“n”6);0default : printf(“ errno” r! );運行結果為:70-8060-7017.#include main() int y=9;for(;y0;y- -)if(y%3=0) printf(%d”,- -y);continue;運行結果為:85218.#include main() int

23、 i,sum=0; i=1;do sum=sum+i; i+; while(i=10);printf(“ %d” ,sum);運行結果為: 5519.#include #define N 4main() int i;int x1=1,x2=2;printf(n);for(i=1;i=N;i+) printf(%4d%4d,x1,x2);if(i%2=0)printf(n);x1=x1+x2;x2=x2+x1;運行結果為:1235813 213420#include main( ) int x, y;for(x=30, y=0; x=10, y10; x-, y+) x/=2, y+=2;pri

24、ntf(“ x=%d,y=%dn” ,x,y);運行結果為:x=0,y=1221.#include #define N 4 main( ) int i,j;for(i=1;i=N;i+) for(j=1;ji;j+) printf( );printf(*);printf(n);運行結果為:*數組1.#include main() int i, a10;for(i=9;i=0;i-)ai=10-i;printf( “ %d%d%d ” ,a2,a5,a8);運行結果為:8522.#include main() int i,a6;for (i=0; i=0 ; i-)printf(%3d,ai);

25、運行結果為:5 4 3 2 1 03.#include main( ) int i,k,a10,p3;k=5 ;for(i=0 ; i10 ; i+) ai=i ;for(i=0 ; i3 ; i+)pi=ai*(i+1) ;for(i=0 ; i3 ; i+)k+=pi*2 ;printf(%dn,k) ;運行結果為: 214.#include int m33=1,2,3;int n33=1,2 ,3;main( ) printf(“%d, ”, m10+n00);printf(“%dn ”,m01+n10);運行結果為:3,05.#include main() int i;int x33=

26、1,2,3,4,5,6,7,8,9;for (i=1; i3; i+)printf(%d ,xi3-i);運行結果為:6. 86.#include main( ) int n33, i, j ;for(i=0 ; i3 ; i+ )for(j=0 ; j3 ; j+ )nij=i+j ;printf(“%d”, nij) ;printf(“n ” );運行結果為:0 1 21 232 347#include main()char diamond5=_,_, *, _ ,*,_,*, *,_, _ ,_ ,*, _,*,_,* , _,_,*;int i,j;for(i=0;i5;i+)for(

27、j=0;j5;j+)printf(“%c ”,diamondij);printf(“n ”); 注: “ _”代表一個空格。運行結果為:* * * *8.#include main( ) int i, f10;f0=f1=1;for(i=2;i10;i+)fi=fi-2+fi-1;for(i=0;i10;i+) if(i%4=0)printf(“n ”);printf(“%d” ,fi);運行結果為:11235813 2134 559.#include “ stdio.hfunc(int b ) int j;for(j=0;j4;j+) bj=j;main( ) int a4, i;func(

28、a);for(i=0; i4; i+)printf( “%2d” ,ai);運行結果為:0 1 2 310.#include m ain ()float fun(float x);float ave,a3=4.5, 2 , 4 ;ave=fun ( a ) ;print f( “ ave=%f” ,ave);float fun ( float x )int j;float aver=1 ;for (j=0;j3;j+) aver=xj*aver;return ( aver ) ;運行結果為:11.#include main()int a23=1,2,3,4,5,6;int b32,i,j;fo

29、r(i=0;i=1;i+)for(j=0;j=2;j+) bji=aij;for(i=0;i=2;i+)for(j=0;j=1;j+)printf(%5d,bij);運行結果為:14253612.#include f(int b,int n)int i,r;r=1;for (i=0;i=n;i+) r=r*bi;return (r);main()int x,a=1,2,3,4,5,6,7,8,9;x=f(a,3);printf(“ %nd” ,x);運行結果為:2413.#includestdio.hmain()int j,k;static int x44,y44;for(j=0;j4;j+)

30、for(k=j;k4;k+) xjk=j+k;for(j=0;j4;j+)for(k=j;k4;k+) ykj=xjk;for(j=0;j4;j+)for(k=0;k4;k+) printf(%d,yjk);運行結果為:0,0,0,0,1,2,0,0,2,3,4,0,3,4,5,6函數1.#include int Sub(int a, int b)return (a- b);main()int x, y, result = 0;scanf(%d,%d, &x,&y );result = Sub(x,y ) ;printf(result = %dn,result);當從鍵盤輸入 :6,3 運行結

31、果為:result =32.#include int min( int x, int y ) int m ;if ( x y ) m = x ;elsem = y ;return(m) ;main() int a=3,b=5,abmin ;abmin = min(a,b) ;printf( “ minis%d” , abmin) ;運行結果為:min is 53.#includefunc(int x) x=10;printf( “%d, ”,x);main( ) int x=20;func(x);printf( “%d ” , x);運行結果為:10, 204.#include int m=4

32、;int func(int x,int y) int m=1;return(x*y-m);main()int a=2,b=3;printf(%dn,m);printf(%dn,func(a,b)/m);運行結果為:415.#include int fun(int a, int b) if(ab) return(a);else return(b);main() int x=15, y=8, r;r= fun(x,y);printf(r=%dn, r);運行結果為: r=156.#include int fac(int n) int f=1,i;for(i=1;i=n;i+)f=f * i;ret

33、urn(f);main() int j,s;scanf( “ %d” ,&j);s=fac(j);printf(%d!=%dn,j,s);3!=6如果從鍵盤輸入 3 , 運行結果為:7.#include unsigned fun6(unsigned num) unsigned k=1;do k*=num%10;num/=10;while(num);return k;main() unsigned n=26;printf(“%dn ” ,fun6(n);運行結果為: 128.#include int max(int x, int y);main() int a,b,ca=7;b=8;c=max(

34、a,b);printf(Max is %d,c);max(int x, int y) int z;z=xy? x : y;return(z) ;運行結果為:Max is 8指針1.# include main () int x = 10, 20, 30, 40, 50 ; int *p ;p=x;%d” , *(p+2 ) );printf ( 運行結果為:302.#include main( ) char s= ” abcdefg ”;char *p;p=s;printf( “ ch=%cn” ,*(p+5);運行結果為:ch=f3.#includemain ( ) int a=1, 2,

35、3, 4, 5;int x, y, *p ;p=a ;x=*(p+2) ;printf(%d : %d n, *p, x) ;運行結果為 :1:34.#include main() int arr =30,25,20,15,10,5, *p=arr; p+;printf(“ %nd” ,*(p+3);運行結果為: 105.#include main( ) int a =1, 2, 3, 4, 5, 6;int x, y, *p;p = &a0;x = *(p+2);y = *(p+4);printf( “*p=%d, x=%d, y=%dn”, *p, x, y);運行結果為:*p=1, x=

36、3, y=56.#includemain( ) static char a =” Program ”, *ptr;for(ptr=a, ptra+7; ptr+=2)putchar(*ptr);運行結果為:Prom7.#include char s= ” ABCD ”;main() char *p;for(p=s;ps+4;p+)printf( “%c %sn ” ,*p,p);運行結果為:A ABCDB BCDC CDD D結構體1.#includestruct st int x;int y; a2=5, 7, 2, 9 ;main()printf(%dn,a0.y*a 1.x);運行結果是

37、:142.#includemain( )struct stuint num;char a5;float score;m=1234, ” wang” ,89.5;printf( “ %d,%s,%f” ,m.num,m.a,m.score);運行結果是:3.#includestruct cmplx int x;int y; cnum2=1, 3, 2, 7;main( )printf(“%dn ” , cnum0.y * cnum1.x );運行結果是: 64.#include struct abc int a, b, c; ;main() struct abc s2=1,2,3,4,5,6;i

38、nt t;t=s0.a+s1.b;printf(%d n,t);運行結果是: 6程序填空1 輸入一個字符,判斷該字符是數字、字母、空格還是其他字符。main( ) char ch; ch=getchar();if( ch=a&ch= A&ch= 0&ch0) i= i+1;else j=j+1; printf( i=%4d,j=%4dn ”,i,j);3 .編程計算1+3+5+101的值#include void main() int i, sum = 0;for (i = 1;i=101;i+)sum = sum + i;printf(sum=%dn, sum); 4 .編程計算1+3+5-

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

40、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個整數,統計非負數個數,并計算非負數之和。#include main() int i, a20, s, count;s=count=0;fo

41、r(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 .輸入一個正整數n (1nwi0),再輸入n個整數,用選擇法將它們從小到大排序后輸出。#include int main(void)int i, index, k, n, temp;/*定義1個數組a,它有10個整型元素*/printf(Enter n:);printf( Enter %d integers: , n);for(i = 0; i n; i+)scanf(%d”, &ai);for(k = 0; k n-1; k+)/* 對 n 個數排序

溫馨提示

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

評論

0/150

提交評論