2014级专科C语言考试复习题(11页).doc
-2014级专科C语言考试复习题-第 11 页2014级专科C语言考试复习题1( )是构成C语言程序的基本单位。A、函数 B、过程 C、子程序 D、子例程2C语言程序从( )开始执行。A、 程序中第一条可执行语句 B、 程序中第一个函数C、 程序中的main函数 D、包含文件中的第一个函数3、给出以下定义:char x="abcdefg"char y='a','b','c','d','e','f','g'则正确的叙述为( )A)数组X和数组Y等价B)数组X的长度大于数组Y的长度C)数组x和数组Y的长度相同 D)数组X的长度小于数组Y的长度4.下列关于C语言的说法错误的是( ) 。A、 C程序的工作过程是编辑、编译、连接、运行B、 C语言不区分大小写。C、 C程序的三种基本结构是顺序、选择、循环D、C程序从main函数开始执行5下列四组选项中,正确的C语言标识符是()。A、 %x B、a+b C、a123 D、1236.C语言中的简单数据类型包括( )。A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型C、整型、字符型、逻辑型 D、整型、实型、字符型7.在C语言程序中,表达式5%2的结果是 。A、2.5 B、2 C、1 D、38C语言中,关系表达式和逻辑表达式的值是() 。A、0 B、 0或1 C、 1 D、T或F9. 若“int n; float f=13.8;”,则执行“n=(int)f%3”后,n的值是()A、1 B、4 C、4.333333D、4.610.在C语言中对一维整型数组的正确定义为( )。A、inta(10); B、int n=10,an;C、intn;an; D、#define N 10int aN; 11、已知:int a10; 则对a数组元素的正确引用是( )。A、a10 B、a3.5 C、a(5) D、a012.若有说明:int a3=1,2,3,4,5,6,7; 则数组a的第一维的大小为: ( )A、2 B、3 C、4 D、无确定值13已知int a34;则对数组元素引用正确的是( )A、a24 B、a1,3 C、a20 D、a(2)(1)14.C语言中函数返回值的类型是由( )决定的.A、函数定义时指定的类型 B、 return语句中的表达式类型 C、 调用该函数时的实参的数据类型D、形参的数据类型15.在函数调用时,以下说法正确的是( )A、函数调用后必须带回返回值B、实际参数和形式参数可以同名C、函数间的数据传递不可以使用全局变量D、主调函数和被调函数总是在同一个文件里16int *p;语句int *p;说明了 。A、p是指向一维数组的指针 B、p是指向函数的指针,该函数返回一int型数据C、p是指向int型数据的指针 D、p是函数名,该函数返回一指向int型数据的指针17. 在C语言中,以 D 作为字符串结束标志A、n B、 C、 0 D、0 18、C语言程序的三种基本结构是_ A、顺序结构,选择结构,循环结构 B、递归结构,循环结构,转移结构 C、嵌套结构,递归结构,顺序结构 D、循环结构,转移结构,顺序结构19、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 A) inputx,y,z; B) scanf("%d%d%d",&x,&y,&z); C) scanf("%d%d%d",x,y,z); D) read("%d%d%d",&x,&y,&z);20、表达式:10!=9的值是 A) true B) 非零值 C) 0 D) 121、表示关系x<=y<=z的c语言表达式为 A) (X<=Y)&&(Y<=Z) B) (X<=Y)AND(Y<=Z) C) (X<=Y<=Z) D) (X<=Y)&(Y<=Z)、22、程序片段:在TC20中, int i=65536; printf("%dn",i);的输出结果是_ A) 65536 B) 0 C) 有语法错误,无输出结果 D) -123、若运行时给变量x输入12,则以下程序的运行结果是( )。main()intx,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%dn",y); A 0 B 22 C 12 D 1024、设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为 A 4 B 16 C 32 D 5225、下列说法中正确的是_。 A、在switch语句中一定要使用break语句 B、在switch语句中不一定要使用break语句 C、break语句是switch语句的一部分 D、break只能用于switch语句中、26、下列运算符其优先级最高的是_。 A、| B、&&C、+ D、=27、在C语言程序中,当while语句构成的循环中的条件为_时,结束循环。 A、0 B、1 C、true D、非028、有以下程序段 int k=0 while(k=1)k+; while 循环执行的次数是A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行1次29、语句:printf("%d",(a=2)&&(b= -2);的输出结果是_A) 无输出 B) 结果不确定 C) -1 D) 130、在C语言中,若对函数类型未说明,则函数的隐含类型是_类型 A) void B) double C) intD) char31、设有程序段 int k=10; while (k=0) k=k-1; 则下面描述中正确的是 ( )A while循环执行10次 B 循环是无限循环C 循环体语句一次也不执行D 循环体语句执行一次32、对for(表达式1; 表达式3)可理解为( )A.for(表达式1;0; 表达式3)B.for(表达式1;1;表达式3)C.for(表达式1;表达式1;表达式3)D.for(表达式1;表达式3;表达式3)38.若有代数式3ae/bc,则不正确的C语言表达式是( )A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*334.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列.如果字符串长度以大于5,则输出按方式( )A.从左起输出该字串,右补空格B.按原字符长从左向右全部输出C.右对齐输出该字串,左补空格D.输出错误信息35.判断char型量ch是否为大写字母的正确表达式是( )A.A<=ch<=ZB.(ch>=A)&(ch<=Z)C.(ch>=A)&&(ch<=Z)D.(A<=ch)AND(Z>=ch)36.以下语句语法正确的是:( )A.if(x>0) printf(“%f”,x) else printf(“%f”,-x);B.if(x>0)x=x+y;printf(“%f”,x);else printf(“%f”,-x)C.if(x>0) x=xy; printf(“%f”,x); elseprintf(“%f”,-x);D.if(x>0)x=x+y;printf(“%f”,x) else printf(“%f”,-x);37. 设有以下宏定义: #define N 3 #define Y(n) ( (N+1)*n) 则执行语句:z=2 * (N+Y(5+1);后,z的值为 A) 出错 B) 42 C) 48 D) 5438.以下程序的输出结果是_。main()float x=3.6;inti;i=(int)x;print(“x=%f,i=%d”,x,i);A、x=3.600000,i=4B、x=3,i=3C、x=3.600000,i=3D、x=3,i=3.60000039.以下正确的说法是()如果在一个函数中的复合语句中定义了一个变量,则该变量A.只在该复合语句中有效B.在该函数中有效C.在本程序范围内均有效D.为非法变量40. 以下程序运行后,输出结果是( )main()int a33=3,2,1,4,5,6,2,9,2;int i,j,s=0;for(i=0;i<3;i+)for(j=0;j<3;j+)if(i = 2-j) s=s+aij;printf("s=%d",s);A 6 B 7 C 8 D 941、有如下说明 int a10=1,2,3,4,5,6,7,8,9,10,*p=a; 则数值为9的表达式是 A) *p+9 B) *(p+8) C) *p+=9 D) p+842、下列描述中不正确的是 A) 字符型数组中可以存放字符串 B) 可以对字符型数组进行整体输入、输出 C) 可以对整型数组进行整体输入、输出 D) 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值43、假定int类型变量占用两个字节,其有定义:int x10=0,2,4;,则数组x在内存中所占字节数是A) 3 B) 6 C) 10 D) 2044、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是A) -3 B) 9 C) -12 D) 645、有如下程序 long fib(int n) if(n>2) return(fib(n-1)+fib(n-2);else return(2); main() printf("%dn",fib(3); 该程序的输出结果是 A) 2 B) 4 C) 6 D) 8二、填空题:1Strcat函数的作用是()。2在函数外部定义的变量是();形式参数是()。3. 调用C语言数学函数时要求用()命令。4. 字符串“I am a student.”在存储单元中占()个字节。5. 如果要比较两个字符串中的字符是否相同,可使用的库函数是().6. 在c语言中,字符串不存放在一个变量中,而是存放在一个()中。7. 设有int a34=1,2,3;,则a11的值为( )。8. 在int a=3;p=&a中,*p的值是( )。9. C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是( )。.10. 结构化程序中有三种结构分别是( )、( )和( )。11.设int a34=1,2,5,3,2,4,7,9,3,6,5,8;则表达式a12+a23的值是( )。12. 设int a=2;,则执行a+=a*=15;后,变量a的值是( )。13若函数调用语句为f(a,b,f(a+b,a-b,b);,则函数f的参数个数是( )。14C语言中一个单精度浮点数据占( )个字节。15. C语言中逻辑值真用( )表示。16.C语言中字符型数据在内存中以( )码形式存放。17. 若已知a=10,b=20,则!a<b的值为( )。18. 当a=3,b=2,c=1时,表达式f=a>b>c的值是( )。19.( )函数代表从键盘缓冲区读入一个字符,且只能接受一个字符。20.设ch是char型变量,其值为A,且有下面的表达式: ch=(ch>='A'&&ch<='Z')?(ch+32):ch 的值是( )21. 在C语言中字符数据与( )数据可以互相赋值。22. 开发一个C程序要经过编辑、( )和连接、运行四个部分。23. C语言的基本数据类型有( )、( )和( )。24. 设x=(5>1)+2,x的值为( )。25. m是一个有10个整型元素的数组,其定义语句是( )。26. 中断本次循环,进入下一次循环的语句是( ),用来中断循环的语句是( )。27. 格式输出语句中( )格式说明代表以小数形式输出单、双精度数,隐含输出6位小数。28. 将以下语句用条件运算符改写为( ),if(a>b)max=a; else max=b;29. 当a=3,b=4,c=5时,表达式 !a&&b的值为( )30.表达式6.25+1/4的计算结果是( )。三、判断题1C语言程序的主函数必须在其他函数之前,一个C语言程序总是从主函数开始执行。( ) 2C语言程序中有调用关系的函数必须放在同一源程序文件中。( )3在C语言中函数返回值的类型是由定义函数时所指定的函数类型决定的。( )4关系运算符的优先级低于赋值运算符。()5循环体中continue语句的作用是结束整个循环的执行。( )6.关系表达式的值是0或1。( )7.使用while和do-while循环时,循环变量初始化的操作应在循环语句之前处理。()8.表达式4/7和表达式4.0/7的值相等。( )9. 在C语言中,二维数组元素在内存中的存放顺序是由用户自己决定的。( )10数组的大小必须在定义时确定,所有数组元素的类型必须相同。( )11. C语言程序的变量必须先定义后使用。( )12. C语言规定函数的实参应与其对应的形参类型一致。( )13. C语言认为Student和student的变量是不同变量。( )14. C语言是一种面向对象的程序设计语言。( )15. C语言程序中的#include和#define均不是C语句。( )16. do while语句构成的循环不能用其他语句构成的循环来代替。( )17. 标准格式输入函数scanf()可以从键盘上接受不同数据类型的数据项。( )18在对数组全部元素赋初值时,不可以省略行数,可以省略列数。( )19.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。()20.预处理命令都必须以#开头。( )四、程序填空题1.以下程序的运行结果是( )。#include<stdio.h>int fun(inta,int b)int c;c=a+b;return c;main()int x=5,z;z=fun(x+4,x);printf(“%d”,z)2.从键盘输入两个数a和b,要求输出a和b中大者。#include<stdio.h>main() inta,b;if(_)printf(“%d”,a);elseprintf(“%d”,_);3下面程序输出在170间不能被8整除的数。 #include<stdio.h>void main() int n;for(n=1; _;n+) if(_ )_;elseprintf(“%dt”,n);4程序运行后的输出结果是 #include <stdio.h>void fun(inta,intb,int c)a=b;b=c;c=a;main()int a=10,b=20,c=30;fun(a,b,c);printf(“%d ,%d,%d”,c,b,a);5.若有以下程序,则程序的输出结果是#include <stdio.h>main() ints=0,n;for(n=0;n<4;n+)switch (n)default:s+=4;case 1: s+=1;break;case 2: s+=2;break;case 3: s+=3;Printf("%dn",a);6.下面程序的功能是用辗转相除法求两个正整数m和n的最大公约数。hcf(intm,int n) int r;if(m<n) r=m;n=r;r=m%n;while( ) m=n;n=r;r=m%n;7. 程序运行后的输出结果是 。 #include <stdio.h>main()int y=1,x,a=2,4,6,8,10,*p;p=&a1;for(x=0;x<3;x+)y=y + *(p+x);printf(“%dn”,y);8教材133页例7.29教材153页习题7.310. 教材237页例10.7五、程序改错题改错:下述程序(假定所有的变量都已经声明且赋值)有什么错误,请找出来,并将正确内容写在旁边。(1)请找出并改正以下程序的错误:(共有3个错误)line 1:#include <stdio.h>line 2:int x= 1;line 3:main()line 4: if( x = 1);line 5:printf(" x equals 1" )line 6:elseifline 7:printf(" x does not equal 1");line 8: return 0;line 9:2.本程序从键盘输入一个正整数n,计算n!的值。要求定义和调用函数fact(n),计算n!。(共有3个错误)#01 #include <stdio.h>#02 void main(void)#03 int n;#04 double f;#05 double fact(int m);#06 printf("Input n: "); #07 scanf("%d", n);#08 f = fact( ); #09 printf("%d!=%fn", n, f);#10 double fact(int m);#11 int i;#12 double product;#13 for ( i = 1; i <= m; i+ ) #14 product = product * i;#15 return product;