C语言期末复习卷习题_第1页
C语言期末复习卷习题_第2页
C语言期末复习卷习题_第3页
C语言期末复习卷习题_第4页
C语言期末复习卷习题_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

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

文档简介

1、期末总复习(基础知识+ 程序设计部分)一. 填空1 .已知char ch= ' A'则下列表达式的值是:aCh=(ch>= ' A && ch<= ' Z' )? (ch+32):ch;2 .若 x=1,y=2,z=3,则表达式 z+=+x+y+之值是 73 . 若 x=2,y=3,贝U x%=y+3之值为 24. 若有定义 int y=3; float z=5.2, x=4.8;则表达式 y+=(int)x+x+z 的值为 175 .设x,y,z 为int型变量,且x=3,y=-4,z=5,请写出下列各表达式的值1 ) (x

2、&&y) =(x|z)_J2 )! (x>y) +(y!=z)|(x+y)&&(y-z)0 3 ) x+-y+(+z)_J36 .设x,y,z为int型变量,请用 C语言表达式描述下列命题1 ) x 和 y 中有一个小于 z (x<z&&y>z|x>z&&y<z )=12) x,y 和 z 中 有 两 个 为 负 数(x<0&&y<0&&z>=0|z<0&&y<0&&x>=0|y<0&&a

3、mp;x<0&&z>=0)=13 ) y是奇数y%2 !=07 .下面for循环语句最多可执行 4 次For (x=0,y=0;(y!=99)&&(x<4);x+)8 .设i,j,k 均为int型变量,则执行以下 for语句后,k的值是 10for (i=0,j=10;i<=j;i+,j-)k=i+j ;9 .若已知x, y,z,m,n 均为int型变量,则执行下面语句后,x的值为 7 y的值为 9 z 的值为m=10 ; n=5;x=(-m=n+)? -m : +n;y=m+;z=n;10 .若有说明语句:w=1,x=2,y=3,z=4

4、;则表达式 w>x? w:z>y? z:x 值是 411 .若定义的函数没有返回值时,则应该在该函数定义时加上类型说明符void12 .凡在函数中未指定存储类型的变量,其隐含的存储类别为动态存储13 .在C语言中,一个函数直接或间接地调用自身,编构成函数的递归14 .如果被调用的自定义函数和调用函数不再同一个文件中,则在应以函数的文件中应将该文件的存储类型定义成 型,在调用函数的文件中将该函数说明为 型。15 .对于所定义的二维数组a23,元素a12是数组的第 6 个元素。N*j+m+116 .若有定义:char *str= "I ama student."则字

5、符串在存储单元中占16 个字节。17 .在执行 int a口3=1,2,3,4;语句后,a12的值是 0。18 .调用strlen("abc0 ef0g ")的返回值是3。0为停止符19 .设有定义:char s12= "string ”;则 printf("%dn" ,strlen(s);的输出值是620 .执行下列程序段后,*p等于=int a5=1,3,5,7,9; *p=a;p+;二. 判断(true or false )1 .调用函数时,实参的类型、个数和顺序与函数定义时形参的类型、个数和顺序完全一致。T2 .函数可以嵌套定义 F3

6、.函数必须有返回值,否则不能正确作用F4 . C程序中有调用关系的所有函数必须放在同一源程序文件中。F5 .全局变量与函数体内定义的局部变量重名时,局部变量不起作用。F6 .函数定义时可以不制定形参的类型,函数调用时由实参的类型决定形参的类型F7 .当函数定义放在main()函数前面时,可以缺省函数声明。T8 . C语言中允许函数嵌套调用T9 .局部静态变量是在编译时赋初值的,即只赋一次初值。 T10 .外部变量必须定义在文件的开头部分F11 .字符'0 '是字符串的结束标记,其 ASCII码为0.T12 .若有说明:int a34=0;则数组a中每个元素的初值都为0.T13

7、.若有说明:int a24=0, 0;则只有a0和a01的初值为0,其余元素的初值均不为0. F14 .若有说明:int a34;则数组a中各元素可在程序的编译阶段达到初值0.F15 .若用数组名作为函数调用时的实参,则实际上传递给形参的是数组的第一个元素值。F16 .在两个字符串的比较中,字符个数多的字符串比字符少的字符串大。F17 .当需要接受用户从键盘上输入的含有空格的字符串时,应使用 gets ()函数。T18 .在C语言中,二 维数组元素在内存中的存放顺序可以随意调整变化。F19 . &b指的是变量b的地址处所存放的值;F20 .指针变量可用于保存同类型变量的地址值;F21

8、.存放地址的变量同其他类型的变量一样,可以存放任何类型的数 据;F22 .指向同一数组的两指针p1,p2相减的结果与所指元素的下标相减的结果是相同的。F23 .如果定义函数时参数是指针变量,那么,调用函数时的参数就可以是同类型的指针变量, 数组名或简单变量的地址T24 . char *name5定义了一个一维指针数组,它有5个元素,每个元素都是指向字符数据的指针型数据。F25 .语句y=*p+;和y=(*p)+;是等价的。F26 .函数指针指向的是函数的入口地址。T27 . int *p ;定义了一个指针变量,其值是整型 的。F28 .用指针作为函数参数时,采用的是“地址传送”方式 .T三、选

9、择题1 .下列变量名中哪些是合法的?2 2a a# C$ t3 _var0 int2 .语言中用 表示逻面值“真”。D) T不合法不合法A) trueB)整型值0C)非零整数值3 .下列合法的字符常量为 。A) "a" B) 'n' C) 'china' D) a4 .设有语句 char c='72' 则变量c。A) 包含1个字符 B)包含2个字符 C) 包含3个字符 D)5 .字符串"t"NameAddressn"的长度为。A) 19 B) 15 C) 18D)6.设a,b,c 为int型变量,

10、且a = 3 ,b = 4 , c = 5,下面表达式值为0的是D) !(a<b) && !c | 1)A) 'a' && 'b B) a <= bA) floatB) intC) charD) double8.设有语句int a = 3;执行了语句a += a -= a * a;后,变量a的值是。A) 3B) 09.设有语句int a = 3;执行了语句C) 9 printf("%d", -a +);D) -12 |后,输出的结果是CC) a | b+c && b-c7.若有以下定义:ch

11、ar a ;则表达式 a * b + dint b ;float c ;-c的值的类型为double d ;变量a的值是_D.A) 3B) 410.将下列数学表达式表示为合法的C) -3 D) -2C语言表达式。(1)(4)12.“'a 'b(2)|(a+b)(c + d)+22c12行5)-11 一 x卜列可作为C语言赋值语句的是: A) x = 3, y = 5 B) a = b = c13.以下程序的输出结果为:C) i -;(3)(ln x sin(y)/ 2sin(30)+2ex2y yxD) y = int ( x );main()int a = 2, c = 5;

12、printf("a = %d, b = %dn", a, c);A) a = %2, b = %5 B) a = 2, b = 5C) a=%d, b=%d D) a=%d, b=%d14 .在下面的条件语句中,只有一个在功能上与其它三个语句不等价(其中s1和s2表示它是C语句),这个不等价的语句是: 。A) if (a) s1; else s2;B) if (!a) s2; else s1;C) if (a != 0) s1; else s2;D) if (a = 0) s1; else s2;15 .设有声明语句:int a=1,b=0;则执行以下语句后输出为: swi

13、tch (a) (case 1:switch (b) (case 0: printf("*0*");break;case 1: printf("*1*");break;)case 2: printf("*2*");break;)A)*0* B)*0*2* c)*o*i*2* d)16.17.在while (x) 语句中的x与下面条件表达式等价的是:有语法错误oA) x = 0 B) x = 1 C) x != 1 D) x != 0若int x;且有下面的程序片断,则输出结果为:for (x=3; x<6; x+)(printf

14、(x%2)=0? ”*%d" : "#%d'n", x);)A) *3 B) #3 C) #3 D) *3#4#4*4*4#5*5*5#518.以下能对外部的一维数组 a(含有10个元素)进行正确初始化的语句是:A) int a10 = (0,0,0,0,0);B) int a10 = ;C) int a = 0;D) int a10 = 10*1;19 .以下能对外部的二维数组a进行正确初始化的语句是: A) int a2 = 1,0,1,5,2,3;B) int a口3 = 1,2,1,5,2,3;C)2 int a24 = 1,2,1,5,2,6;D

15、) int a口3 = 1,0,2,2,3;20 .若二维数组a有m歹U,则在aij之前的元素个数为: 。A) j*m+i B) i*m+j C) i*m+j-1 D) i*m+j+121 .已知:static int a34; 则数组a中各元素。A)可在程序运行阶段得到初值0 B)可在程序编译阶段得到初值0C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值022 .判断字符串s1是否大于字符串s2,应当使用: 。A) if (s1 > s2)B) if (strcmp(s1, s2)C) if (strcmp(s2, s1) > 0) D) if (strcmp(s1,

16、s2) > 0)1.1. 若用数组名作为函数调用时的实参,则实际上传递给形参的是: 。A)数组的首地址;B)数组的第一个元素直C)数组中全部元素的值;D)数组元素的个数。24. 在函数调用时,以下说法中正确的是: 。A)在C语言中,实参与其对应的形参各占独立的存储单元;B)在C语言中,实参与其对应的形参共占同一个存储单元;C)在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元;D)在C语言中,形参是虚拟的,不占存储单元。25. C语言中形参的缺省存储类别是: 。A) 自动(auto) B) 静态(static) C) 寄存器(register)D )外部(extern)26

17、. C语言规定:简单变量做实参时,它和对应形参之间数据的传递方式为: A)地址传递;B)单向值传递;C)由实参传给形参,再由形参传回给实参;D)由用户指定传递方式。27.(1)阅读程序,选择程序的运行结果。#include <stdio.h>int Try(int n) if (n > 0)return(n*Try(n-2); elsereturn 1;)main() int x;x = Try(5); printf("%dn", x);)A. 15B. 120 C. 1D.前面三个答案都是错的(2)下面的函数f两次进行调用,请选择程序的运行结果。#inc

18、lude <stdio.h>int Fun(int m) static int n = 0;m /= 2;m =m * 2;if (m)n *= m;return(Fun(m-2); elsereturn n; main()int a,i,j; for (i=0; i<2; i+)a = Fun(4+i); printf("%dn",a); 第一次输出的结果A. 8B. 0C. 64D. 4 第一次输出的结果A. 8B. 0C. 64D. 428 .设有语句:int a10, *p=a ;,则在下面语句中,不正确的是 A) P=P+1B)P0=*P+1 C

19、)a0= a0+1 D)a=a+129 .指向变量的指针,其含义是指该变量的 A)值 B) 地址C)名D) 一个标志30 .若int (*p) 5;,则其中p的含义是 A) 5个指向整形变量的指针;B)指向5个整形变量的函数指针;C)一个指向具有5个整形元素的一维数组的指针;D)具有5个指针元素的一维数组指针,每个元素都只能指向整型量 ;31 .设有定义:int a=3,b,*p=&a;则下列语句中使 b不为3的语句是A) b=*&a;B)b=*P; C)b= a; D)b=*a; .32 .设char*s;则以下表达式中,正确的是 A) s= " puter ” ;

20、 B) *s=" puter ” ;C) *s= " puter ” ; D)*s=' s'33 .设char s10, *p=s;,以下表达式中 不正确的是A) p=s+5; B)s=s+p; C)s2=p4; D)*p=s0;34 .执行下列程序段后,*p等于int a5=1,3,5,7,9, *p=a; p+A) 1;B)3; C)5; D)7;程序设计题1 .编程计算 1*2*3 + 3*4*5 + 99*100*101 的值。#include <stdio.h>int main()int i,j,k,sum=0;for(i=1,j=2,

21、k=3;i<100,j<101,k<102;i+=2,j+=2,k+=2)sum=sum+i*j*k;printf("%dn",sum);2 .编程计算a + aa + aaa +. + aa.a (n 个a)的值,n和a的值由键盘输入。#include <stdlib.h>Void main()int n,a,i;int sum,na;printf("Please input n and a:");scanf("%d %d",&n,&a);sum=0;na=a;for(i=1;i<

22、=n;i+)sum+=na;na=na*10+a;printf("sum=%dn",sum);3 .利用 2 =- x2 x- x4 x6 x- x.tLI 100 项之积计算兀。21 3 3 5 5 7#include <stdio.h>int main()float a=2,b=1;double num=1;int i;for (i=1;i<=100;i+)num*=a/b;if(i%2=0)a+=2;else b+=2;num*=2;printf(" 兀=%.16lfn",num);4.按如下格式打印100 12以内整数的平方根表

23、。67890134500.0001.0001.4141.7322.0002.2362.4492.6462.8283.00013.1623.3173.4643.6063.7423.8734.0004.1234.2434.35924.4724.5834.6904.7964.8995.0005.0995.1965.2925.38535.4775.5685.6575.7455.8315.9166.0006.0836.1646.24546.3256.4036.4816.5576.6336.7086.7826.8566.9287.00057.0717.1417.2117.2807.3487.4167.48

24、37.5507.6167.68167.7467.8107.8747.9378.0008.0628.1248.1858.2468.30778.3678.4268.4858.5448.6028.6608.7188.7758.8328.88888.9449.0009.0559.1109.1659.2209.2749.3279.3819.43499.4879.5399.5929.6449.6959.7479.7989.8499.8999.950#indude 1lstdio,hh,#indude "mathh* void mainQ (int sj=Dj=Ork=O;double t;for

25、fti<10;i+)printf(n%6d"r0/ pnntf(l1n");for(s=0;s<100;s+) (t=sqrt(s);printf(fl%43f J+; if(j%10=0) pnntf(,rnM);k!5 .编程计算 p=的值。(m,k从键盘上输入,m>k)(m - k)!include <stdio n>int facfint n)(inti s=1;for(i=1;i<=n;i+)st=rreturn s;)main()(int m,k;printf(Hlnput n.kprintfT%dn"jac( k)/fac(m:)输出对应的季节英文名6 .用整数1-12依次表示1-12月,由键盘输入一个月份数,称(12-2月为冬季,3-5月为春季,6-8月为夏季,9-11月为秋季),要求输入输 出表达的意义清楚明白。_include <stdio.h?main()int montfLf:to op: printffTnter aninteget(l-12)/工scanfij" ?bd".

温馨提示

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

评论

0/150

提交评论