《C程序设计基础_复习题.doc》由会员分享,可在线阅读,更多相关《C程序设计基础_复习题.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、c语言规定,任何非0的数像1-1等都被认为是真,而0被认为是假11为假试题一、单选题1. 已知int k,m=1;执行语句k=-m+;后,k的值是_。【知识点:难度:正确答案:A】A-1 B0 C1D-22. 已知定义int m; float k; 正确的语句是 。【知识点:难度:正确答案:D】A(int k)%mBint(k)%mCint(k%m)D(int)k%m3. 当k的值不为0时,在下列选项中能够将k的值赋给变量m,n的是_。【知识点:难度:正确答案:B】Am=k=nB(m=k)&(n=m)C(m=k)|(n=k)D(n=m)&(m=k)4. 已知 int x=5; 表达式6x1值是
2、_。【知识点:难度:正确答案:A】A0B1C5D表达式语法错表达式6x1 ,先判断6x 为0,再判断01,所以值为0。(6x 为1 ,再判断11,所以值为0。)5. 下列程序段执行后c值为_。【知识点:难度:正确答案:D】int k=7, c=0;while(-k) if (k%3) continue; else c+;A5B4C3D26. 已知字母a的ASCII码为十进制数97,且ch为字符型变量,则执行语句ch=a+D-A;后,ch中的值为_。【知识点:难度:正确答案:C】AdBcC100D不确定7. 设m,n已正确定义,执行语句for(m=0, n=10; mn; m+=3,n-);以后
3、,m,n的值是_。【知识点:难度:正确答案:C】A6,7B7,6C9,7D7,98. 已知char *t =”How”, ”are”, ”you!”;则t是_。【知识点:难度:正确答案:B】A指向char变量的指针B指向字符指针的指针常量C指向”How”的指针变量D指向H的指针9. 假设scanf语句执行时输入ABCDE,能使puts(s)语句正确输出ABCDE字符串的程序段是_。【知识点:难度:正确答案:C】Achar s5 = ABCDE; puts(s)Bchar s5 = A,B,C,D,E; puts(s);Cchar *s; s = ABCDE; puts(s);Dchar *s;
4、 scanf(“%s”,s); puts(s);10. 以下程序有错,错误原因是_。【知识点:难度:正确答案:D】main() int *p, i; char *q, ch;p = &i;q = &ch;*p = 40;*p = *q;.A. p和q的类型不一致,不能执行*p=*q;语句B. *p中存放的是地址值,因此不能执行*p=40;语句C. q没有指向具体的存储单元,所以*q没有实际意义D. q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果11. 若有定义:int a=2, b=5, c=8; 则表达式c |= (a & b)
5、 !(a & b)的值为_。【知识点:难度:4正确答案:B】A14 B 8 C1D012. 设int a=5, b=7, 表达式(+a = b-)? + a : -b 的值是_。【知识点:难度:2正确答案:C】A7 B 6 C5D413. 设a=3, b=2, 那么表达式 (a=b=7, b=a!=7) 的值是 。【知识点:难度:2正确答案:D】A1 B2 C7D0逗号(,)也可以是运算符,逗号表达式最右边的子表达式的值即为逗号表达式的值。而b=a!=7的值为0逗号运算符只取最右边的子表达式的值,但每个子表达式都要运行14. 设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行语
6、句(m=ab)&(n=cd);后n的值是_。 【知识点:难度:3正确答案:A】A2 B1 C0D3&和&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,15. 下列程序段的输出结果是_。 【知识点:难度:3正确答案:B】int k=2, s=0;switch (k) case 2: s+; k+; case 1: s+; case 3: s+=1; switch(s) case 2: s+=2; bre
7、ak; default: k+; break; default: s+=3; printf(%d#%d#, s, k);A1#3# B6#4# C3#2#D3#4#16. 下列程序的输出结果是_。 【知识点:难度:2正确答案:C】 int f(int x) static int k; return +k + x;main( ) int k; for(k=1; k4; k+) printf(%d#, f(k) );A2#5# B3#6# C2#4#6#D不确定17. 下列程序的输出结果是_。 【知识点:难度:2正确答案:D】main() char x=040;printf(%on,x0)z=0;
8、 else z+=1;printf(z=%dn, z);Az=0 Bz=1 Cz=8Dz=9esle子句与其之前最近的不完整if配对。C语言中等号“=”为赋值运算符,不用于判断相等,判断相等应用“=”,因此执行x=y后,x=5,if(5)相当于if(true),执行if(x0)z=0,所以z=019. 下列程序段的输出是_。【知识点:难度:3正确答案:B】#define SQ(a,b) (a*a-2*a*b+b*b) main() int k=4;printf(%d, SQ(k, k-1) ); A1 #define定义一个宏(不是一个函数),用于字符串的替换,注意替换不是用数值去替换,也不会
9、自动加括号,因此SQ(k, k-1)=k*k-2*k*k-1+k-1*k-1=-k*k-2SQ(4,3)=-4*4-2=-18B-18 C-15D-820. 若运行以下程序时,从键盘输入Hello_Everyone!(表示回车),则下面程序的运行结果是_。【知识点:难度:2正确答案:C】main()char c;int v1=0,v2=0;doswitch(c=getchar()case a: case A: case e: case E: case i: case I: case o: case O:case u: case U: v1+=1;default: v1+=1;v2+=1; wh
10、ile( c != n ); printf(%d,%dn, v1, v2);A6,10 B21,10 C22,10D6,921. 下列程序段输出 _。【知识点:难度:4正确答案:D】main() char str25 = abcd ;strcpy( str0, You ); strcpy( str1, Me );str03 = &;printf( %sn, *str );AYou&Me Babcd Cabc&DYou&22. 对于函数f,调用 f (12345) 的输出是_。【知识点:难度:3正确答案:A 】void f (int n) if(n10) printf( %1d, n ); el
11、se f(n/10); printf( %1d, n%10); A12345 B54321 C11111D543223. 下列程序段的输出结果是_.【知识点:难度:2正确答案:B】void fun(char *fname,char *st)FILE *myf; int i;myf = fopen(fname,w );for(i=0; istrlen(st); i+) fputc(sti, myf);fclose(myf);void main() fun(test_, C_); fun(test_, is_fun);AC_is_fun Bis_fun Ctest_is_funDC_试题二、程序阅
12、读题1. 以下程序的输出结果是_。【知识点:难度:3正确答案:C】main()char ch25= 1234, 5678 , *p2;int i,j,s=0;for(i=0; i2; i+)pi= chi;for(i=0; i 0; j+=2)s=10*s + pij- 0;printf(%dn, s);A1537 B2468 C1357D26482. 运行下列程序的输出结果是_。【知识点:难度:3正确答案:D】struct stint x; int *y; *p;int dt4 = 10, 20, 30, 40 ;struct st aa4 = 50, &dt0, 60, &dt1, 70,
13、 &dt2, 80, &dt3 ;main() p=aa;printf(%d, +p-x); printf(%d, +p-x); printf(%d, + (*p-y);A60,60,21 B51,51,21 C 60,70,31D51,52,11 3. 下列程序的输出结果是_。【知识点:难度:4正确答案:A】void fun(int m, int *a, int *n)int i,j=0;for( i=1; i=m; i+ )if(i%3=0 & i%7=0)aj+=i;*n=j;void main()int aa50,n,k;fun(50, aa, &n);for(k=0; kn; k+)
14、 printf(%d#, aak);A21#42# B3#7# C 3#7#21#42#D 3#7#9#49#4. 运行下面程序的输出结果是_。【知识点:难度:3正确答案:B】int x, y;int f( int n )static int x=0; x+;if( !(n%3)printf(%d, n);elsey+;return x;void main() int i; x=1; y=5; for( i = 0; i 7 ; i+) x = f( i ); printf(#%d#%dn, x, y);A1245#7#10 B036#7#9 C 1245#1#9D 036#1#105. 如果
15、已经有了有关的定义,则下列程序的输出结果为_。【知识点:难度:4正确答案:C】main() int i, n=7; char b7, *a = January, February, March, April, May, June, July ; f(a, n);for (i=0; i= i ) bi=*(ai+i); bi=0;printf(%sn, b);void f(char *a, int n) int i, j;char *temp; for( i = 1; i n; i+) for (j = 0; j 0) swap(&aj, &aj+1);void swap(char *s1, c
16、har *s2)char *temp;temp=*s1; *s1=*s2; *s2=temp;AJeri BJuyichay C AenyD JFMAMJJ试题三、程序(段)填空题1. 下面的程序输入n ( 1=n=10),打印出n行杨辉三角。第m行有m个整数,其中第i个整数是 m选i的组合数:Ci,m。每个数右对齐占4位,相邻行交错显示,呈金字塔状。例如,输入6以后,输出的金字塔是:【知识点:难度:3正确答案:(1)A (2)B (3)G】 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1/* 1 */ #include stdio.h/* 2 */ m
17、ain()/* 3 */ /* 4 */int i, j, n, a1010;/* 5 */scanf(%d,&n);/* 6 */for( i=0; in; i+ ) /* 求每行两端数据 */* 7 */ai0=aii=1;/* 8 */for( i=0; i_(1)_; i+ ) /* 9 */ for( j=1; j_(2)_; j+ ) /* 求每行的内部数据 */* 10 */aij = ai-1j-1 + ai-1j;/* 11 */printf(n);/* 12 */for(i=0; in; i+)/* 13 */* 14 */ for(j=0; j_(3)_; j+) pri
18、ntf( ); /* 打印前导空格 */* 15 */for(j=0; j=i; j+) /* 打印一行数据 */* 16 */ printf(%4d, aij);/* 17 */printf(n); /* 换行 */* 18 */* 19 */A. n B. i C. n-1 D. i-1 E. n-i F. n-i-1 G. n-i+1 H. i-n I. i-n+12. 一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到R对?(R为给定的正整数)。下面的程序输入一个
19、正整数R,输出“至少到第几个月时,兔子总对数才能达到R对。”例如:输入30,输出“至少第 9 个月才有 30 对兔子。” 【知识点:难度:3正确答案:(1)F (2)A (3)C】/* 1 */ #include stdio.h/* 2 */ main()/* 3 */ /* 4 */int month=1, R, R1=1, R2=0, R3=0;/* 5 */scanf(%d, &R);/* 6 */while( R1+R2+R3 R ) /* 兔子数量未达到给定的量,继续计算下个月的值 */* 7 */ month+; /* 8 */R3 = _(1)_; /* 9 */ R2 =_(2
20、)_; /* 10 */ R1 = _(3)_; /* 11 */* 12 */printf(至少第%d 个月才有 %d 对兔子。n, month, R1+R2+R3 );/* 13 */ A. R1 B. R2 C. R3 D. R1+R2 E. R1+R3 F. R2+R3 G. R3-R1 H. R3-R2 I. R2-R13. 给定一个整数序列(整数允许是负数,但至少有一个非负整数):a1, a2, ., ai, ., aj, ., an。设Sij = ai+.+aj (1=i=j=n),如果Suv = maxSij,那么就称au,av是原来序列的最大连续子序列。下面程序入整数个数n(
21、n=100)和n个整数序列ai,输出最大连续子序列的和值MaxSum。例如,输入8和8个整数2 -3 5 -2 -1 2 6 -2,输出最大连续子序列5 -2 -1 2 6的和值10。【知识点:难度:4正确答案:(1)B (2)F (3)H】void main( ) int n, A101; int ThisSum, MaxSum, i, j; /*-输入n个整数,并求最大连续子序列之和值MaxSum-*/ scanf(%d, &n); for( i = 0; i n; i+ ) /* 输入n个整数 A i */ scanf(%d, &Ai); MaxSum = 0; /* 初始化最大和值 *
22、/ for( i = 0; i n; i+ ) /* 从 A i 开始 */ ThisSum = 0; for( j = _(1)_; j MaxSum ) MaxSum = ThisSum; /* 更新最大和值 */ /* end for-j */ /* end for-i */ printf(%dn,MaxSum); A. Ai B. Aj C. An D. 0 E. 1 F. i G. j H. n I. n-i11- . . ;) * /* / *大更/ ; ) ( *和 / _(_ * 到到 +_ _;_= ( ; /*开开 = *最最初/ = ) ,%( /整 输 0 )& *-
23、和子子连连并,入-; , , 0 ():案难点【 和 列列子最, 整 输输, 值序子最 数个000 个入面面下下续大序序是 么么 = 如) .+ . . :整一一至但但负数序个个 . . + ) +, 子兔 才 少 / _)_= * ;_ * ;_ _ * * 月计,的给给未兔* + )&,% / 0 / ( / () 确 难难:【。兔00有月第第“, 如” 才对兔兔个到至输数数一一序的下下正给(对对达才才兔月到到繁少兔兔对生 ,死兔假一一又后 到兔兔子对对个月第第生,+. -. . - - / / *换 )( ) , / * 行行印/ ) 0( / *格前打打*; ( ;_ = / * +
24、; *) / - * * 部每 )+;_)_ ( +;_ _;0 / 0 * *据端每每* =( ) * , / /*( # 00 ) :确 难难点识塔的的,后,。字字呈错行行,齐右每每,:组组选 整其整整有行角角辉印,= (序题填)、 *;= * ,* ) ,&( + ( +; = ) , ) * ( ) % 00 ) ( = )+;0 ) ( , = , ( :正点。_结程程下义关关经 # # # # ) , %( ) +; ; ( + ) ( ) ( +0 ( , 案正识。_输的的 # # # #) % + ; =() ( ,0 ( +0=% 0 +; ( = ( 0 &00,& , 0
25、 0000= :正度识识【_是出程程 ) ( 00- + ; = +; ) ; ;= 0 *, = ( :答:识。_出出的题阅程程 _ _) , ;) , ( ) ) ) 0 ), , * 答答:难识【_是果果段 ( ; ,% _ 入输输从下下- = =-*- -+ *) 因因因动不换换替替数不,的串串于函是是宏义义 -( ( ()* *-( ( 案正正:。_出段= 所=0 执) 于于)(, 执执因,用应应断断用符符值值”号号言。整的近近其 = = 0) = =0 ) = , ( 案案正点 _输序0000 0 ) %(000 ( :正:难难识【。_果输输的确确 # # ) (% + 判判 为00值,断00断 法式 正:知知【_是是 式表= &= |) & = 案确度度知知_,量值值的能能选在为为%) (% (% 案正度度知知 是是的 义- 案案确难难知。_ +-=执执 选选选为为假假为而是是认等 的的何,C程序序设计计基础及实实验