C语言强化试卷1解析_第1页
C语言强化试卷1解析_第2页
C语言强化试卷1解析_第3页
C语言强化试卷1解析_第4页
C语言强化试卷1解析_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计强化试卷 1一、选择题(每小题 1.5 分,共 45分)1下列关于 C 语言程序书写规则的说法中正确的是( A不区分大小写字母C一条语句可分成几行书写一行只能写一条语句D每行必须有行号解析:C 语句的规则,C1、C 语言中标识符、关键词等是区分大小写。2、每一条语句以(英文状态)分号结束。3、一条语句可以分多行写,但通常还是写成一行。4、多条语句写在一行。2下列定义语句中,正确的是( Achar a = b = B; Bfloat a=b=6.5;解析:变量的定义,C变量是内存中开辟的存储空间,相当于容器。int a=10,*b=&a;Dfloat *a,b=&a;基本类型:in

2、t(-2 -2 -1、longfloat、double,char)3131可以一次性定义多个变量,变量之间使用逗号分开。选项 B 试图定义两个变量,同时初始化,这种形式是不符合语法规范。选项 C 定义了整型变量 a,同时还定义了指针变量(基类型为 )选项 D 中变量 b 是 float 类型,不能存储变量的地址。3下列是合法的 C 语言常量的是( A028B2.5e23e2.5D5A解析:常量的概念,B通过定界符或特殊的符号开头,区分不同类型常量。十进制数:不使用定界符和特殊开头符号。二进制数:以 0b 或 0B 开头。八进制数:以 0 开头,选项 A 错误。十六进制数:以 0 x 或 0X

3、开头。实数:可以使用含小数点的形式表达,或使用“尾数 E 阶码”,阶码不可以是小数。字符:使用单引号定界。字符串:使用双引号定界。4下列选项中,可以作为 C 语言用户标识符的一组是( Avoid,define,WORD Ba3_b3, _123, xyz解析:标识符的使用规则,For, _abc, caseD2a, Do, sizeof1、标识符区分大小写。2、不能使用关键字作为用户标识符。3、字符标识符第一个字符只能是英文字母或下划线。5设有 int a;,则执行语句a=4*5,a+5;后,a 的值是( A25B2015D10D6解析:算术运算、逗号运算符,B思考:a=(4*5,a+5);和

4、 a=( a+5, 4*5);6设有定义 int ,则执行语句 y=x+;+y;后,y 的结果是( A9 B8 7解析:自增自减的前缀形式和后缀形式,C7设有 int a=1,b=0;,则执行a0|+b;后,b 的值是( 1/ 8A0B12D-1解析:逻辑运算,AC 语言中没有专门设置逻辑类型。逻辑结果:0 代表否,1 代表是。逻辑表达式:非 0 代表是,0 代表否。短路或:|,非短路或:|8设有定义 char c1=b,c2=e;,则执行语句 printf(%d,c2-c1);后,输出结果是( Ab Be 3 D结果不确定解析:ASCII 码的本质,CC 语言中,字符可以通过 ASCII 码

5、值参与整数运算。两个字符相减就是 ASCII 码值差。9设有 int a=2,b=3,c=4,d=5;,则执行d=(a0?b:c);后,d 的值为( A2B34D5解析:条件运算符,B(条件满足条件执行):(不满足条件执行)10设有定义 int a;,不能正确表达数学关系20a24 的 C 语言表达式是( A20a20&a24a=21a=22a=23D!(a=24)解析:关系运算符的使用,A注意:关系表达式的运算结果是逻辑值。11设有 int x=2,y;,执行语句后,变量 x 的值是( A2B610D3解析:逗号运算符,B逗号运算表达式的值是逗号最后一个分量的值。12执行语句 ,使得 x,y

6、 均为 1.2,则正确输入的形式是( A1.2,1.2 B1.2 1.2 x=1.2,y=1.2 Dx=1.2 y=1.2解析:使用 scanf 函数输入数据,C1、输入的数据存储到变量中需要使用取址运算&.2、通常使用格式控制符为变量占位,非格式控制符需要原样输入。3、多个数据连续输入使用空格分隔,回车结束输入。13已知 char ,则语句 printf(%d,%c,c2-c1,c2-32);的输出结果是( A3,fB4,F3,FD4,f解析:ASCII 码中大小写字母的取值关系,BA 的 ASCII 码 65,小写字母 ASCII 码值比对应的大写字母大 32。数字 0 的 ASCII 码

7、值是 48,数字 1 的 ASCII 码值是 49。14将变量 x 和 y 中的较小值赋值给 z 的正确语句是( Aif(xy) z=y;解析:DBif(xy) z=x;else z=y; z=y; if(xy) z=x;Dz=x; if(xy) z=y;选项 A 不能表达 xy 的情况;选项B 和 C 与题意相背;选项D 先假设 x 最小,若y 最小,后一条语句会覆盖前面的赋值。15设有定义 int i;,则执行语句for(i=3;ii=5i =5i=716设有定义 int ,则循环语句 while(k=1) k+;的循环体( 2/ 8A执行无限次C一次也不执行有语法错,不能执行D执行一次解

8、析:本题在条件表达式中使用了赋值运算,造成条件表达式的结果永远是 1,故选择 A17以下叙述正确的是( Ado_while 语句构成的循环,在while 后的表达式为非零时结束循环do_while 语句构成的循环,在 while 后的表达式为零时结束循环Cdo_while 语句构成的循环只能用break 语句退出Ddo_while 语句构成的循环不能用其它语句构成的循环来代替解析:直到型循环的语法规则,B1、先执行循环体,再判断循环条件,也就是至少会执行一次循环体。2、while 后面以分号结束。三种类型的循环可以相互转换,for 循环使用频率最高。18在 C 语言中,不是循环可用的语句是(

9、Awhile 语句解析:DBbreak 语句continue 语句Dend 语句C 语言中没有 end 语句。break 语句结束整个循环;continue 语句结束当前循环,进入下一轮循环。19以下选项中关于数组定义和初始化,错误的是( Aint a5=1,2,3,4,5;Cint a=1,2,3,4,5;int a5=1,2,3;Dint a3=1,2,3,4,5;解析:一维数组的初始化,D定义的同时初始化,但元素数量不能多于指定的元素个数。也可以不指定元素数量,由编译器计算。如果没有显式初始化,则会隐式初始化,数值型数据为 0,字符型数据为0。20已知 static int ,则表达式

10、a5-a2的值是( A-4B-54D5解析:数组元素的引用,A数组元素下标从 0 开始。21设有定义 int a33=1,2,b33=1,2;,则执行语句 printf(%d,a10+b00);后,输出的结果是( A0B12D3解析:二维数组的初始化,Da00=1 a01=0 a02=0a10=2 a11=0 a12=0a20=0 a21=0 a22=0b00=1 b01=2 b02=0b10=0 b11=0 b12=0b20=0 b21=0 b22=0注意:是赋值一行元素还是所有元素逐个赋值。22在定义了数组 int a36;后,第 10 个元素是( Aa24 Ba13 a31解析:二维数组

11、的结构,BDa42二维数组可以看成行列形式,本题中,先是三个一维数组a0和 a2,然后每行再有6列。23设有 char array =Window;,则数组 array所占的存储单元是( )个字节。A4B56D73/ 8解析:字符数组与字符串,D字符串通常采用字符数组存储,且最后一个字符0表明字符串结束。本题中将字符串赋值给字符数组,隐含字符串结束符0。思考:char array=W,i,n,d,o,w;的存储长度。24函数 strlen(12340ab0c);的返回值是( A4B58D9解析:字符串的有效长度,A函数 strlen 求字符串有效长度(0表示字符串结束);函数sizeof 求数

12、据的存储长度。思考:。25以下描述中错误的是( A不同函数中可以使用相同的变量名形式参数是局部变量C一个函数内部定义的变量只能在本函数范围内有效D在一个函数内部的复合语句中定义的变量可以在本函数范围内有效解析:局部变量,D复合语句(一对“26变量的指针,其含义是指变量的( A值B地址名D一个标志D*p=s0;解析:指针的概念,B变量的指针和指针变量是两个概念。指针变量存储其它变量的地址。已知 char s10,*p=s;,以下选项中错误的语句是( Ap=s+5;Bs=p+5;s2=p4;解析:指针和数组,B数名赋给指针变量,不需要使用取址运算符。思考:*s=p+5;和 s0=p+5;。28设有

13、#define tap(x) ,则 2*tap(2)的值是( A4B56D7解析:符号常量,B思考:tap(x) 。29以下对枚举类型定义正确的是( Aenum num=one,two,three;Cenum num=one,two,three;解析:枚举类型,Benum num one=9,two=18,three;Denum num one,two,three;枚举类型取值只能是给定值中的某一个,枚举元素列表中的元素不使用定界符。选项 A 和 C B 30以读写方式打开一个已存在的文本文件file 1.txt,以下选项中正确的是( AFILE *fp;fp=fopen(file 1.txt

14、,r+)CFILE *fp;fp=fopen(file 1.txt,r)解析:文件的打开方式,AFILE *fp;fp=fopen(file 1.txt,w)DFILE *fp;fp=fopen(file 1.txt,rb+)二、填空题(每空 3分,共 45 分)1已知函数定义为 int ss(int a, float *p) ,则此函数的两个参数类型分别是:整型、_。解析:基类型为浮点型的指针。2设有定义语句:int a 3 = 1,2,3, 4,5,6, (*p)3 = a;,则表达式*(*p+1)的值是_。4/ 8解析:在 C 语言中,符号用在数组中表达变址运算。例如,一维数组ai,数组

15、名 a 指向数组的第一个元素,ai意思是该元素距离首元素第 i ai=*(a+i) aij,数组名 a 指向第一行,ai意思是该行距离第一行的位置为i,即ai=*(a+i),但*(a+i)是地址,然后在该行定位到元素,aij意思是该元素距离 ai首元素的位置,即aij=*(*(a+i)+j)。本题中指针 p 指向数组 a 的首行首列,*(*p+1)可替换为*(*a+1)*(*(a+0)+1) a01。故本题应填 2。思考:若 p=a+1*(*p+1)值是多少?如果p 的定义形式为*p3,则会出现什么问题?3设有定义语句:char s110 = = ”hello”;,则执行表达式strcpy(s

16、1, s2)后,s1值是_。解析:字符串拷贝,本题中s2 中的内容存储到 s1 的空间,也就是heell_-l,Fo,e0。故本题应填hello。4设 int a=3, b=5; float x=7.5, y=3.5;(float)a + b/2 + (int)x % (int)y;的值是_。解析:本题涉及到了强制类型转换,6.000000。5判断两个 float 变量x, z 是否相等,一般用语句if(_1e-6)。float 型精度误差1e-6double 型精度误差 1e-15。本题即是表达两个数的差的绝对值,填写 。6设 a 为 float 型变量,则 能将 a 中的数值保留一位小数输

17、出。解析:float 型数值输出时小数点后默认6 位,可以指定长度 m.nf,意思是总宽度 m,小数点宽度 n。本题应填写 1。7将字符串的小写字母转化成大写字母。#includevoid main(void) char *chp, str20=HeFei;_;while(*chp!=0) if(*chp = a& *chp 1)的函数,在主函数中依次调用该函数计算1!2!n 由键盘输long sp(int i) static long k = 1;k = _;return k;main( )int n,i;scanf(%d,&n);for(i = 1; _;i+)printf(%d! = %

18、ldn, _);5/ 8解析:函数 sp 实现阶乘,需要将每次阶乘的结果保存下来,用作下一次阶乘的初始值,第一个空格应填写 k * ii = n;第三处空格调用定义的函数,应填写 i, sp(i)。9有以下程序段s = 1.0;for(k = 1; k = n; k+)s = s + 1.0 / (k * (k + 1);printf(%fn, s);补全以下程序段代码,使之与上述程序段功能相同。s = 0.0;_;k = 0;dos = s + d;_;d = 1.0 / (k * (k + 1);while(_);printf(%lfn, s);解析:通过分析可知,代码是求 。各空行分别填

19、写 d = 1.0、k+和 k = n。三、程序分析(每小题 6 分,共 30分)1以下程序段的输出结果是_。int a=1,b=0;switch(a) case 1:b+;case 2:b+;break;default:b+;printf(b=%d,b);解析:本题需要明确 switch 中使用 break 和不使用 break 的差别。结果是b=2。2以下程序段的输出结果是_。main () int i,j,m,n;i=7;j=10;m=+i;n=j+;printf(%-5d%5dn%-5d%5d,i,j,m,n);解析:本题需要注意对齐方式。8(七个空格)11(换行)8(七个空格)10。

20、3程序运行时输入数据为:1468,则以下程序段的输出结果是_。#includemain() char c;6/ 8int i, data = 0;for(i = 0; i 4; i+) c = getchar();if(c 9)break;data = data * 10 + c - 0;printf(data = %dn, data);解析:计算时输入的数字使用其 ASCII 码值参与运算,可以将 c-0视作整体,它们的 ASCII码值差其实就是两个数值之间的差。本题输出 data = 。4以下程序段的输出结果是_。#includeint sum(int n) int i,s=0;for(i = 1; i n; i+)if(i % 10 = 9)s = s + i;return s;main() printf(%d, sum(39);解析:本题的实质是求 39 以内个位是 9 的整数的和。计算得。5以下程序段的输出结果是_。#define N 4main() int i, j, aNN;for(i = 0; i N; i+)aii = 1;ai0 = 1;for(i = 2; i N; i+)f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论