C语言等级考试复习题(71页).doc
-C语言程序设计复习题第一、二章一、 单项选择题1、下列符号中,不可以作为变量名的是_。A、 _var B、VAR10 C、varx D、2def2、 运算符&&代表 。A、按位与 B、逻辑与 C、逻辑或 D、按位取反3、 下列字符串为标识符的是_ _。A、_1_A B、5_student C、long D、!DF4、 下列属于字符型常量的是 。A、AA B、“B” C、a D、x93L5、 表达式18/4*sqrt(4.0)/8值的数据类型为_. A、 int B、 double C、 char D、不确定6、 设有单精度变量f,其值为13.4执行语句“n=(int)f%3;”后,n的值是 。A、1 B、4 C、4.333333 D、4.67、 为表示关系xyz,正确的C语言表达式是 。 A、(x>=y)&&(y>=z) B、(x>=y) AND (y>=z) C、(x>=y>=z) D、(x>=z)&(y>=z)8、 运算符|代表 。 A、按位或 B、逻辑或 C、按位异或 D、按位取反9、若k为int型变量且赋值11,则k+表达式的值为 。A、10 B、11 C、12 D、1310、下列四组选项中,均是合法转义符的选项是 。A、” n B、 017 ” C、018 f xab D、0 101 xlf 11、 下列不正确的字符常量是 。A、“C” B、” C、 D、K12、 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将 。A、生成可执行文件 B、生成目标文件 C、输出运行结果 D、自动保存源文件13、 下列说法中错误的是 。A、主函数可以分为两个部分:主函数说明部分和主函数体B、主函数可以调用任何非主函数的其他函数C、任何非主函数可以调用其他任何非主函数D、程序可以从任何非主函数开始执行14、 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为 。A、算术运算、赋值运算、关系运算 B、算术运算、关系运算、赋值运算C、关系运算、赋值运算、算术运算 D、关系运算、算术运算、赋值运算15、 已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=A+6-3;后 c2中的值是 。A、C B、D C、68 D、不确定的值 16、 字符串"ABC"在内存占用的字节数是 。A、3 B、4 C、 6 D、817、 设a=1,b=2,c=3,d=4,则表达式:a<b? a : c<d? a : d的结果为 。A、1 B、2 C、3 D、418、以下叙述正确的是 。A、C语言程序是由过程和函数组成的 B、C语言函数可以嵌套调用,例如:fun(fun(x)C、C语言函数不可以单独编译 D、C语言中除了main函数,其他函数不可作为单独文件形式存在19、 以下叙述不正确的是 。A、在C程序中,逗号运算符的优先级最低B、在C程序中,MAX和max是两个不同的变量C、若a和b类型相同,在计算了赋值表达式a=b后,b中的值不变D、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值20、 整型常量不能使用的形式是 。 A、二进制 B、八进制 C、十进制 D、十六进制21、C语言源程序的扩展名为 ,连接后生成文件的扩展名为 。A、.C B、.EXE C、.OBJ D、.COM二、填空题1、C语言程序是由 组成,其中主函数的名字必须用 。2、语言程序总是从 开始执行。3、一个函数包含 和 两大部分,包含在 中的内容称为函数体。4、C语言程序的上机步骤分为 、 、 和 四步。5、注释部分以 开始,以 结束。6、在32位系统中,C语言的int型数据占个 字节,float型数据占 个字节,double型数据占 字节,char型数据占个 字节。7、将x定义为整型变量的语句是 。8、将lg定义为长整型变量的语句是 。9、将cg定义为字符型变量的语句是 。10、与x3+3x3y+3xy2+y3对应的C语言表达式是_。11、表达式3.5+1/2的计算结果是 。12、 C语言的基本数据类型有_ _、_ _和_ _。13、 表达式x=x+1表示成增量表达式为 。第三章一、 单项选择题1、 putchar函数可以向终端输出一个 。A、整型变量表达式 B、实型变量值 C、字符串 D、字符或字符型变量值2、printf函数中用到格式符%5s。如果字符串长度大于5,则输出按方式 ;如果字符串长度小于5,则输出按方式 。 A、从左起输出该字符串,右补空格 B、按原字符长从左向右全部输出C、右对齐输出该字符串,左补空格 D、输出错误信息3、 阅读以下程序,当输入数据的形式为:25,13,10<CR>(注:<CR>表示回车),则正确的输出结果为 。void main( ) int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%dn”,x+y+z);A、x+y+z=48 B、x+y+z=35 C、48 D、不确定值4、 根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为 。void main( ) char ch1,ch2,ch3;输入语句printf(“%c % %c”,ch1,ch2,ch3); 输入形式:ABC 输出形式:ABCA、scanf(“%c%c%c”,&ch1,&ch2,&ch3); B、scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);C、scanf(“%c %c %c”,&ch1,&ch2,&ch3); D、scanf(“%c%c”,&ch1,&ch2,&ch3);5、已知ch是字符型变量,下面不正确的赋值语句是 。A、ch=a+b; B、ch=0; C、ch=7+9; D、ch=”aa”;6、以下关于结构化程序设计的叙述正确的是 。A、一个结构化程序必须同时由顺序、分支、循环三种结构组成B、结构化程序使用goto语句会很便捷C、在C语言中,程序的模块化是利用函数实现的D、由三种基本结构构成的程序只能解决小规模的问题7、 有以下程序#include <stdio.h>void main( )int a1,a2; char c1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);printf(“%d,%c,%d,%c”,a1,c1,a2,c2);若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b,则正确的输入格式是 。(以下_代表空格,<CR>代表回车)A、12a34b<CR> B、12_a_34_b<CR> C、12,a,34,b<CR> D、12_a34_b<CR>8、 有以下程序,程序运行后的输出结果是 。#include <stdio.h>void main( ) int x=011;printf("%dn",+x);A、2 B、4 C、10 D、119、执行以下语句后,显示结果为 。 x=19; printf(“%x”,x); A、13 B、19 C、23 D、执行错误10、执行以下语句:显示结果为 。 x=97; printf(“%c”,x); A、97 B、a C、A D、执行错误二、程序填空题1、从键盘上输入一个字符,如果是大写字母,则将其转换成小写字母后输出。 #include<stdio.h>void main( )char ch;scanf(“%c”, );ch=( )?ch+32:ch;printf(“char=%cn”,ch);2、 从键盘分别为变量x和y输入整数,交换它们的值后输出。 #include<stdio.h>void main( )int x,y; ;scanf(“%d%d”,&x,&y); z=x; ; y=z; printf(“x=%d,y=%d”,x,y); 三、 程序改错题,下面程序片段可能只有一个错,也可能有一个以上的错。1、void main()float a1=123.456;printf(“%d”,a1); ( )改为:( )2、printf(“请输入三个数x1,x2,x3:”);scanf(“%f%f%f”,x1,x2,x3);( )改为:( )3、k=-8567;printf(“%6Dn”,k);( )改为:( )四、 编程题。1、 从键盘输入一个四位数,把该整数颠倒过来输出(例如1234变成4321)。2、 写一个程序,从键盘输入两个整数,然后输出这两个数的和、差、积、商。3、将“China”译成密码。加密规则是:用原来的字母后面的第4个字母代替原来的字母(提示:设5个字符型变量,存放5个字符,经运算使各ASCII码增4,再输出)。 第四章一、 单项选择题。 1、 逻辑运算符两侧运算对象的数据类型 。A、只能是0和1 B、只能是0或非0正数C、只能是整型或字符型数据 D、可以是任何类型的数据2、3、4、5、2、 判断char型变量ch是否为大写字母的正确表达式是 。A、A<=ch<=Z B、(ch>=A)&(ch<=Z)C、(ch>=A)&&(ch<=Z) D、(A<= ch)AND(Z>= ch) 3、 若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是 。A、 A%2=1 B、!(A%2=0) C、!(A%2) D、A%2 4、 设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为 。A、1 B、2 C、0 D、4 5 、以下程序的运行结果是 。void main( ) int a,b,d=241; a=d/100%9;b=(-1)&&(-1); printf(“%d,%d”,a,b); A、2,0 B、2,1 C、6,0 D、6,1 6 、已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 。if(x>y) z=x; x=y; y=z; A、x=10, y=20, z=30 B、x=20, y=30, z=30 C、x=20, y=30, z=10 D、x=20, y=30, z=20 7、以下程序的运行结果是 。void main( ) int m=5; if(m+>5)printf(“%dn”,m); else; printf(“%dn”,m-);A、4 B、5 C、6 D、7 8 、若运行时给变量x输入12,则以下程序的运行结果是 。void main( ) int x,y; scanf(“%d”,&x); y=x>12 ? x+10 : x-12;printf(“%dn”,y); A、0 B、2 C、3 D、49、 if语句的基本形式是:if(表达式) 语句,以下关于“表达式”值的叙述正确的是 。 A、必须是逻辑值 B、必须是整数值 C、必须是正数 D、可以是任意合法的数值10、有以下程序#include <stdio.h>void main( ) int a=1,b=0; if(!a) b+; else if(a=0)if(a) b+=2; else b+=3; printf(“%dn”,b); 程序运行后的输出结果是。 A、0 B、1 C、2 D、3 11、有以下程序,程序运行后的输出结果是 。#include <stdio.h>void main( ) int c=0,k; for(k=1;k<3;k+) switch(k) default:c+=k; case 2:c+;break; case 4:c+=2;break; printf(“%dn”,c)A、3 B、5 C、7 D、912、有如下程序, 该程序的输出结果是_。void main( ) int x=1,a=0,b=0; switch(x) case 0: b+; case 1: a+; case 2: a+;b+; printf("a=%d,b=%dn",a,b); A、a=2,b=1 B、a=1,b=1 C、a=1,b=0 D、a=2,b=213、 若运行时给变量x输入12,则以下程序的运行结果是_。void main()int x,y; scanf("d",&x);yx>12?x+10:x-12; printf("%dn",y); A、0 B、10 C、12 D、2214、若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是_。A、a=a+b,b=a-b,a=a-b; B、t=a,a=b,b=t; C、a=t; t=b; b=a; D、t=b;b=a;a=t;15、下面程序的运行结果是。void main( )int x=4,y=5;if (x>y)&&(+x>0) printf(“%d”,x+y);printf(“%d”,x); A、9 4 B、4 C、5 D、10 516、以下程序执行后的显示结果为 。 int n=3 , m=6 ; if (n > 4 && m + < 10)m+; printf(“m = %dn”,m); A、6 B、7 C、8 D、9二、 填空题。1、执行if(x|!x) printf(”ABC”);else printf(”XYZ”);屏幕上显示的是_。2、执行下列语句后,显示结果为 。x=0;if(x=0) printf(“yes”);else printf(“no”);3、switch语句中,使用break语句,作用是 。三、 程序填空题1、下面程序判断输入一个整数是否能被3或7整除,若能整除输出“YES”,若不能整除,输出“NO”。 void main( ) int k; printf(“请输入一个整数:”); scanf(“%d”,&k); if printf(“YESn”); else printf(“NOn”); 2、 下列程序根据菜单选择完成相关操作。void main()int x,y,n;printf(“请输入第一个整数:”);scanf(“%d”,&x); printf(“请输入第二个整数:”);scanf(“%d”,&y);printf(“请输入你的选择1-加法、2-减法、3-乘法、4-除法 ”);scanf(“%d”, );switch(n) case 1:printf(“和为:%dn”,x+y);break; case 2:printf(“差为:%dn”,x-y);break; case 3:printf(“积为:%dn”,x*y);break; case 4:printf(“商为:%dn”,x/y);break; :printf(“选择有误!n”);四、程序改错题1、输入一个整数,判断其奇偶性。#include <stdio.h>void main( ) int x; printf(“请输入一个整数:”); scanf(“%f”,x); if(x%2=0)printf(“是一个偶数!n”); elseprintf(“是一个奇数!n”);( )改为:( )( )改为:( )2、 输入一个整数,判断其是否能被3整除。#include <stdio.h>void main( ) int x,y; printf(“请输入一个整数:”); scanf(“%f”,x); y=x%3; switch(y) case 0:printf(“能被3整除!n”); case 1,2:printf(“不能被3整除!n”); ( )改为:( )( )改为:( )( )改为:( )五、编程题1、编程:输入整数x,计算并输出下列分段函数f(x)的值。y= x (x<1) 2x-1 (1<=x<10) 3x-11 (x>=10) 2、编程:输入两个整数,再输入两个数相加的和,由程序判断输入的和是否正确。3、编程:把百分制成绩转换成5级记分制,要求用switch语句。 90分以上(包括90): A 80至90分(包括80):B 70至80分(包括70):C 60至70分(包括60):D 60分以下:E 如:Input Score: 8686的等级为B4、用switch语句编程,输入2005年的任一个月,输出这个月的天数。如:Input month of 2005: 102005年10月有31天5 、给出一个不多于5位的正整数,要求:(1)求出它是几位数;(2)分别输出每一位数字;(3)按逆序输出各位数字,例如原数为321,应输出123第五章一、单项选择题1、有如下程序,该程序的输出结果是_。void main( ) int n=9; while(n>6)n-; printf("%d",n); A、876 B、987 C、8765 D、98762、continue语句的正确的用法是 。 A、跳过该循环体中剩余的语句而强行开始下一次循环。 B、在多重循环中,只能退出最靠近的那一层循环语句。 C、跳出多重循环。 D、无论在任何情况下,都中断程序的执行,退出到系统下一层。3、有以下程序段,则下面的描述正确的是 。 int k=0; while(k=0) k=k-1; A、while循环执行10次 B、循环是无限循环 C、循环体语句一次也不执行 D、循环体语句执行一次4、C语言中whi1e和do-while循环的主要区别是_ _。A、do-while的循环体至少无条件执行一次 B、while的循环控制条件比do-while的循环控制条件严格C、do-while允许从外部转到循环体内 D、do-while的循环体不能是复合语句5、有以下程序,则以下叙述正确的是_。 int t=0; while (t=1) .A、循环控制表达式的值为0 B、循环控制表达式的值为1C、循环控制表达式不合法 D、以上说法都不对6、语句 while(!E); 中的表达式 !E 等价于 _。A、E=0 B、E!=1 C、E!=0 D、E=1 7、下面程序段的运行结果是 _,循环次数为 。 int n=0; while(n+<=2);printf("%d",n); A、2 B、3 C、4 D、有语法错 8、下面程序的运行结果是 。 #include<stdio.h> viod main( ) int num=0; while(num<=2) num+; printf("%dn",num); A、1 B、1 C、1 D、 1 2 2 2 3 3 4 9、以下程序段 _。x=-1; dox=x*x; while(!x); A、是死循环 B、循环执行二次 C、循环执行一次 D、 有语法错误 10、有如下程序段,则程序段_ _。 int x=3; doprintf("%dn",x-=2); while(!(-x); A、输出的是 1 B、输出的是 1 和 -2 C、输出的是 3 和 0 D、是死循环 11、下面程序的运行结果是 _ _。 #include<stdio.h> void main( ) int y=10; doy-; while(-y); printf("%dn",y-) ; A、-1 B、0 C、1 D、8 12、若i 为整型变量,则以下循环执行次数是 _。 for(i=2;i=0;) printf("%d",i-); A、无限次 B、0 次 C、1 次 D、2 次 13、执行语句 for(i=1;i+<4; ); 后变量 i 的值是_。 A、3 B、4 C、5 D、 不定 14、以下正确的描述是 _. A、continue 语句的作用是结束整个循环的执行 B、只能在循环体内和 switch 语句体内使用 break 语句 C、在循环体内使用 break 语句或 continue 语句的作用相同 D、从多层循环嵌套中退出时,只能使用 goto 语句 15、有以下程序,程序运行后的输出结果是_。 void main() char b,c; int i; b='a' c='A' for(i=0;i<6;i+) if(i%2) putchar(i+b); else putchar(i+c); printf("n"); A、ABCDEF B、AbCdEf C、aBcDeF D、abcdef 二、程序填空题:1、以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。 void main( ) float x,amax,amin; scanf(“%f”,&x); amax=x;amin=x; while( ) if(x>amax) amax=x; if( ) amin=x; scanf(“%f”,&x); printf(“namax=%fnamin=%fn”,amax,amin); 2、下列程序打印如下形式的图形。* * * * * * *void main( ) for(int i=1;i<=4;i+) for(int j=1; ;j+) printf( );printf( ); 3、下列程序求100之内的自然数中偶数之和。#include<stdio.h>void main( ) int i=1,s; ; while (i<100) if (i%2=0) ; ; printf(“s=%dn”,s );4、下面程序的功能是:输出 100以内(不包含100)能被 3整除且个位数为 6的所有整数,请填空。includestdiohvoid main() int i, j;for(i=1; ; i+)if ( ) printf("%d",i); 5、下列程序打印如下形式的图形* * * * * * *void main( ) for(int i=1;i<=4;i+) for(int j=1; ;j+) printf( );printf( );6、 下面程序段是从键盘输入的字符中统计数字字符的个数, 用换行符结束循环。 int n=0,c;c=getchar( ); while( ) if( ) n+; c=getchar(); 7、下面程序的功能是用 "辗转相除法" 求两个正整数的最大公约数。 #include <stdio.h> void main( ) int r,m,n; scanf("%d%d",&m,&n); if(m<n) r=m%n;while(r)m=n;n=r;r= _ printf("%dn",n); 三、程序改错题1、以下程序是输入一个整数,分别将其逆向输出。如-321的逆向是-123源程序(有错误的程序)#include<stdio.h>void main( ) int n; scanf(“%d”, n);int m,y; y=0; if(n<0) m=n; else m=-n; while (m=0) y=y*10+m/10; m=m%10; if(n<0) y= y; printf(“%d的逆向是%dn”,n,y);( )改为:( )( )改为:( )( )改为:( )( )改为:( )( )改为:( )2、输入正整数的个数n,再输入n个正整数,判断它们是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。#include<stdio.h>#include<math.h>void main( ) int i,j,k,m,n; printf(“输入正整数的个数n:”); scanf(“%d”,&n); printf(“输入%d个正整数n”,n); for(j=0;j<n;j+) scanf(“%d”,m); n=sqrt(m); for(i=1;i<n;i+) if(m/i=0) break; if(i>n) printf(“%d是一个素数!n”,m); else printf(“%d不是一个素数!n”,m); ( )改为:( )( )改为:( )( )改为:( )四、编程题1、编程:输入一批非零整数,先输出其中的偶数和及奇数和,然后输出偶数和与奇数和的差。如:输入一批整数,以零结束:10 11 20 330偶数和为:30奇数和为:44偶数和与奇数和的差为:-142、编程,输入个正实数eps,计算并输出下式的值,直到最后一项的绝对值小于eps。如:Input eps:0.00001S = 0.8669783、编程,输入1个实数x,计算并输出下式的值,直到最后一项小于10-5。在math.h中定义的标准函数pow(x,y),可以求x的y次方。如:X=2S=3.7621954、编程,输入一个整数,求它的各位数字之和及位数。例如123的各位数字之和是6,位数是3。如:输入一个整数:1234512345有5位数,各位数字之和是155、 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。如153是一个水仙花数,因为153=13+53+33。6、编程,输