1、(一)填空题:1C 语言程序的基本单位是_。2在 C 语言中,数字 056 是一个_进制数,0xFF 是一个_ 进制数。3.若程序中使用了函数 scanf(),则必须包含的头文件名为 。 4. 若程序中使用了函数 strlen(),则必须包含的头文件名为 。5C 语言程序的三种基本结构是_、_、_ 。6.若程序中使用了函数 sqrt(),则必须包含的头文件名为 。 7C 语言中运算对象必须是整型的运算符是 。8C 语言中整型数据除以整型数据得到 数据。9C 语言源程序文件的扩展名是 ;经过编译后,所生成文件的扩展名是 ;经过链接后,所生成的文件扩展名是 。 10. 若定义 int a35 ;则
2、 a 数组所含数组元数个数是 , sizeof(a)的 值是 , 其 首 地 址 是 。11在 C 语言中,数组名是数组的 , 同 时 它 是 一个_ 常量。12判断字符型变量 ch 是否为小写英文字母的 C 语言表达式为_。13判断变量 a 的数值范围 1a10 的 C 语言表达式是_ _ _。14C 语言运算符中,+和-的结合方向(运算方向)是_。15当用户输入的字符串含空格时,应使用 _ 函数读入字符串。16 函数直接或间接地调用自己本身称为_。17已 知 w=1,x=2,y=3,z=3,a=4,b=2;则 执 行 语 句 (a=wx)后 , a 的 值 为 , b 的 值 为 。 18
3、字符串“student“的长度是 , 它 在 内 存 中 的 字 节 数 为 。 19. 设 a、b、c 为整型数,且 a=2,b=3,c=4,则执行语句“a*=16+(b+)-(+c);“后,a 的值是 。20执行 int x,y,z;x=y=1;z=(x+,+y,y+);后,则 x= , y= , z= 。21定义语句 int x,y;,执行 y=(x=1,+x,x+2);语句后,则 x= , y= 。22. 执行下列语句 int a=2;a+=a-=a*a; 后,a 的值是 。23设函数外有整型变量 n,为保证其在未赋值的情况下初值为 0,应选择的存 储类别是 _ _ _。24. 有以下
4、程序(注:字符 a 的 ASCII 码值为 97)#include int main() char *s=“abc“ ;do printf(“%d“,*s%10) ;+s;while(*s) ;return 0;程序运行后的输出结果是 。 25. 以下程序运行后的输出结果是 。 #include int fun(int x) int p ; if (x=0 | x=1) return(3) ; p=x-fun(x-2) ; return p ; int main( ) printf(“%dn“ , fun(9) ; return 0; 26. 有以下程序:#include int main()
5、 int a,b=0;for(a=0;a+ int main( ) int i , j , row , column , m ; int array33=100 , 200 , 300 , 28 , 72 , -30 , -850 , 2 , -26 ; m=array00;for(i=1 ; iint main() int a10,min,i;for(i=0;iint Gcd( int m, int n) int r;r=m%n;if( )return n;return ;int main() int m,n;scanf(“%d%d“,printf(“Gcd of m and n is: %
6、dn“, );return 0; (二)选择题:1第一个结构化程序设计语言是 。A) Pascal B) C C) Basic D) Fortran2以下哪一种程序设计语言是目前最受欢迎的编程语言之一 。A) Pascal B) C C) Basic D) Fortran3C 语言规定:源程序中 main 函数的位置_。 A) 必须在最开始 B) 必须在调用的函数的后面 C) 可以任意 D) 必须在最后面 4“程序存储思想“是 提出来的。A) 丹尼尔里奇 B) 冯诺依曼 C)贝尔 D) 马丁理查德5计算机中的所有信息都是以 的形式存储在机器内部的。A) 字符 B)二进制编码 C) BCD 码
7、D) ASCII 码6C 语言中,下列哪一个不是合法的标识符_。A) _file B) printf C) xyz.c D) ab3C 7C 语言中,下列哪一个是合法的标识符_。A) 3*X B) for C) _filename D) $X 8关于软件和程序,下列说法不正确的是 _。 A) 软件的核心是程序 B) 软件就是程序 C) 软件=程序+文档 D) 软件中文档必不可少 9C 语言中,错误的转义字符是( ) 。A) n B) 101 C) “ D) 10810属于 C 语言基本数据类型的是_。A) 数组型 B) 浮点型 C) 指针型 D) 结构型11以下正确的 C 语言变量名是_。A)
8、 %k B) a+b C) a123 D) test!12C 语言中主函数的个数是_。A) 2 个 B) 1 个 C) 任意个 D) 10 个13不属于 C 语言基本数据类型的是_。A) 字符型 B) 浮点型 C) 整型 D) 结构型 14在 C 语言中,合法的字符常量是_。A) 084 B) x43 C) ab D) “0“ 15执行语句 a=4*5,a*2,a+15;后 a 的值是_。A) 35 B) 40 C) 55 D) 2016C 语言程序的三种基本结构是 _。A) 顺序结构,选择结构,循环结构 B) 递归结构,循环结构,转移结构C) 嵌套结构,循环结构,顺序结构 D) 递归结构,选
9、择结构,顺序结构17以下选项中不属于字符常量的是_。A) C B) 072 C) xCC D) “C“ 18设 a 为 int 型变量,分别执行下列赋值语句后,a 所获得的值分别是_。 a=125.534; a=20.0/3; a=(int)125.521%4;A) 125,6,31 B) 125,6,1 C) 125,7,1 D) 125.534,6.666666,1.52119若已定义 x 和 y 为 double 类型变量,则表达式“x=1,y=x+3/2”的值是_。 A) 1 B) 2 C) 2.0 D) 2.5 20以下选项中不属于字符常量的是_。A) “s“ B) 117 C) x
10、86 D) a 21以下选项中,不是 C 语句的是_。 A) a+=b; B) ;C) x+;+y; D) printf(“%d”,a)22以下非法的赋值语句是 _。 A) n=(i=2,+i); B) j+; C) +(i+1); D) x=j0;23已知 w=1,x=2,y=3,z=3,a=4,b=2;则执行语句 (a=wx)后, a,b 的值为_。A) 1 和 1 B) 0 和 0 C) 4 和 2 D) 0 和 224设有语句:int a=7;float x=2.5, y=4.7;则表达式 x+a%3*(int)(x+y)%2/4的值是 _。A) 2.5 B) 2.75 C) 2.0
11、D) 0.025执行语句 a=4*5,a*2,a+15;后 a 的值是_。A) 35 B) 40 C) 55 D) 2026阅读程序: #include “stdio.h“ int main( ) int a ; float b, c;scanf(“%2d%3f%4f“, printf(“na=%d,b=%f,c=%f“,a,b,c); return 0; 若运行时从键盘上输入 9876543210(0 表示回车),则程序的输出结果_。A) a=98,b=765,c=4321 B) a=98,b=765.000000,c=4321.000000 C) a=98,b=765.0,c=4321.0
12、 D) a=98.0,b=765.0,c=4321.0 27下列四种数组定义中,合法的数组定义是 _ 。A) char a = “hello“ ; B) int a4=4,3,2,1,0;C) char a=“hello“ ; D) char a5= “hello“ ;28下列 _循环不是无限循环。A)for(y=0;x=1;+y); B)for(;x=0); C)while(x=1) x=1; D)for(y=1,x=1;x=+y;x+);29以下叙述正确的是 _。A) do while 语句构成的循环不能用其他语句构成的循环来代替 B) do w hile 语句构成的循环只能用 break
13、 语句退出 C) 用 do while 语句构成的循环,在 while 后的表达式为非零时结束循环 D) 用 do while 语句构成的循环,在 while 后的表达式为零时结束循环 30下面的表达式中值为 0 的是_。A) 5%7 B) 5/7.0 C) 5/7 D) 5*731设 int k;则语句 for(k=0;k=1;k+);和语句 for(k=0;k=1;k+);执行的次数分别是 _。A)无限和 0 B)0 和无限 C)都是无限 D)都是 032下列 _循环不是无限循环。A) for(y=0;x=1;+y); B) for(;x=0); C) while(x=1) x=1; D)
14、 for(y=1,x=1;x=+y;x+);33有变量定义如下:double num;,要使得 num 的值为 3.14159,正确的输入语句是_。 A) scanf(“%lf“,num) ; B) scanf(“%lf“, C) scanf(“%d“, D) scanf(“%f“,34设 char x = “abcde“,y = a, b, c, d, e;那么_。A)x 数组的长度大于 y 数组的长度 B)x 数组的长度等于 y 数组的长度C)x 数组的长度小于 y 数组的长度 D)x 数组与 y 数组的存储区域相同35下面不正确的字符串赋值或赋初值方式是_。 A) char *str;s
15、tr=“string“;B) char str7= s, t, r, i, n, g;C) char str110;strl=“string“; D) char str1=“string“,str220;strcpy(str2,str1); 36定义如下变量和数组:int i ; int x33=1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9; 则下面语句的输出结果是_。 for(i=0;i D) #define PI=3.14159 42宏定义#include G 9.8 中的宏名 G 表示_。A)一个单精度实数 B)一个双精度实数C)一个字符串 D)不确定类型的数43设
16、 int a=9,b=20;则 printf(“%d,%dn“,a-,-b) ;的 输 出 结 果 是 _。A)9, 19 B)9, 20 C)10, 19 D)10, 2044 以 下 关 于 switch 语 句 和 break 语 句 的 描 述 正 确 的 是 _。A) 在 switch 语句中必须使用 break 语句 B) break 语句只能用于 switch 语句体中C) break 语句只能用于循环语句中 D) 在 switch 语句中可以不使用 break 语句45 下 面 关 于 函数的理解,不正确的是 _ 。A) 函数可以嵌套定义 B) 函数可以嵌套调用C) 函数可以没
17、有形式参数 D) 函数可以有多个形式参数46 以 下 叙 述 中 正 确 的 是 _。 A) 全 局 变 量 的 作 用 域 一 定 比 局 部 变 量 的 作 用 域 范 围 大 B) 静 态 ( static) 存 储 变 量 的 生 存 期 贯 穿 于 整 个 程 序 的 运 行 期 间 C) 函 数 的 形 参 都 属 于 全 局 变 量 D) 未 在 定 义 语 句 中 赋 初 值 的 auto 变 量 和 static 变 量 的 初 值 都 是 随 机 值47 若 有 定 义 int a23,对元素 aij地址的不正确引用是 _ 。A) ai+j; B)*a+i*3+j; C)
18、(a+i)+j ; D)*(a+i)+j;48 若 有 以 下 语 句 : int a32=1,2,3,4,5,6, *p3; p0 = a1; 则 *(p0+1)所 代 表 的 数 组 元 素 是 _。 A) a01 B) a10 C) a11 D) a12 49 下列对指针 p 的操作,正确的是 _ 。A) int *p;*p=2; B) int a5=1,2,3,4,5,*p=*p=5;C) int a,*p= D) float a5;int *p=50 对于 C 程序的函数,下列叙述中正确的是 _ 。A) 函数的定义不能嵌套,但函数调用可以嵌套B) 函数的定义可以嵌套,但函数调用不能嵌
19、套C) 函数的定义和调用均可以嵌套D) 函数的定义和调用均不能嵌套51若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 。 A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参 C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参52. 函 数 的 返 回 值 类 型 由 _ 决定。A) return 后的表达式 B) 定义函数时指定的返回值类型C) 调用函数时临时决定 D) 主调用函数的类型53以下不能对二维数组 a 进行正确初始化的语句是 _ 。A) int a23=0; B) int a3=1,2,0;C) int a23=1,2,3,4,5,
20、6; D) int a3=1,2,3,4,5,6 ;54下面对一维数组 a 进行正确初始化的语句是 _ 。A) int a5=1,2; B) int a2=1,2,3,4,5;C) int a5= , ,1,2; D) int a5=1,2,3,4,5 ;55. 若函 数 定 义 时 不 指 明 函数的类型,则其默认的返 回 值 类 型 是 _ 。A) void B) 任意类型 C)int D)double56下面对一维数组定义错误的是 _ 。A) int a=1,2,3,4; B) char a5;C) char a6= “test“; D) int n=5,an;57以下选项中正确的语句组
21、是 _ 。 A) char s;s=“BOOK!“; B) char *s;s=“BOOK!“; C) char s10;s=“BOOK!“; D) char *s;s=“BOOK!“;58. 若有下面的说明和定义: struct test int m1; char m2; float m3; union uu char u15; int u22; ua; ; 则在 VC+系统中 sizeof(struct test)的值是_。 A) 9 B) 12 C) 13 D) 14 59.有如下定义:struct exam int x,y;v1; 则 _是正确的引用或定义。A) exam.x=10;
22、B) exam v2; v2.x=10; C) struct v2; v2.x=10; D) struct exam v2=10;60.设函数外有整型变量 n,为保证其在未赋值的情况下初值为 0,应选择的存储类别是 _ 。A) static B) register C) auto D) extern61当用户输入的字符串含空格时,应使用 _ 函数读入字符串。 A) scanf() B) gets() C) getchar() D) getc()62.设函数中有整型变量 n,为保证其在未赋值的情况下初值为 0,应选择的存储类别是 _。A) auto B) register C) static D
23、) extern(三)判断题:1 在 while 循环中允许使用嵌套循环,但只能嵌套 while 循环。 2 在 for 循环中允许使用嵌套循环,但只能嵌套 for 循环。 3. while、do-while、for 循环中的循环体语句都至少被执行一次。4一个 C 语言源程序文件中可以有多个 main 函数。5 C 程序中的 else 总是与在其之前未配对的最近的 if 组成配对关系。6 switch 语句的 case 表达式必须是常量表达式。 7 switch 语句中必须要有 default 语句。 8 自增运算符(+)或自减运算符(-)只能用于变量,不能用于常量或表达式。 9函数的形式参数
24、是局部变量。10访问数组元素时其下标必须是常量,不允许是表达式。 11数组的元素作为函数的实参时采用的参数传递方式是地址传递。 12 C 语言规定只能引用数组元素而不能一次引用整个数组。 13定义 int *p ;,则二级指针变量 p 存放的是指针变量的地址。14定义 int *p4 ;,则标识符 p 是一个指针,指向一个含有 4 个整型元素的一维数组。 15定义 int( *p)4 ;,则标识符 p 是一个指针,指向一个含有 4 个整型元素的一维数组。16 函数不能嵌套定义但可以嵌套调用。 17 求余符号 %两边必须是整型数据。18 函数不能嵌套定义但可以嵌套调用。 19数组的名称作为函数的
25、实参时采用的参数传递方式是地址传递。20 条件编译只能在调试程序时使用。 21 一个函数利用 return 可以返回多个函数值。 22 联合变量的所有成员共享同一段内存空间,其占用的内存是所需内存最大的那个成员的空间。 23 用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用。24 结构体变量的所有成员共享同一段内存空间,其占用的内存是所需内存最大的那个成员的空间。 (四)读程序题: 1#include int main() int x=1,a=0,b=0;switch(x) case 0: b+;case 1: a+;case 2: a+,b+;p
26、rintf(“a=%d,b=%dn“,a,b);return 0;2.#include int main() int a=1,b=2;for( ;a7 ) break;b+;printf(“%d,%dn“,a,b);return 0;3.#include void func(int b) int j;for(j=0;j int main() int a=0,b=3,m=0;switch(a%3) case 0: m+; break; case 1: m+;switch(b%2) default: m+;case 0: m+;break;printf(“m=%dn“,m);return 0;6#
27、include int a(int x) static int y=1; y=y*x; return y; int main() int i; for(i=1;i static int a=5;void p1() printf(“%dn“,a*a);a=2;void p2() printf(“%dn“,a=a*a*a); int main() printf(“%dn“,a);p1(); p2();printf(“%dn“,a);return 0;8.#include sub(int x , int y , int *z) *z=y-x ; int main( ) int a , b , c ;
28、 sub(10 , 5 , sub(7 , a , sub(a , b , printf(“%d , % d , % dn“ , a , b , c) ; return 0; 9.#include int b;int f(int c) b+;return(c+b); int main() int a=2;b=3;printf(“%dn”,f(a);printf(“%dn”,f(a);return 0;10#include int main ( ) char a=“Language“, b=“Programe“; char *p1, *p2; int k; p1=a; p2=b; for(k=0
29、; k int main ( ) int array=1,2,3,4,5;int y=0,i,*p;p= for(i=0;i long fun(int n) long s;if(n=1|n=2)s=2; else s=n+fun(n-1);return s; int main( ) printf(“%ld“,fun(5);return 0;13#include int main ( ) int arr10=2,3,-9,5,7,0,4,-1,6,-7;int *p,sum=0;for(p=parr+10;) sum += *p+; printf(“sum=%dn“,sum);return 0;
30、(五)编程题:1. 请编写程序:从键盘输入一个年份 year(假设输入的都是 4 位十进制整数) ,判断其是否是闰年并输出结果。闰年的条件:能被 4 整除,但不能被 100 整除;或者能被 400 整除。2编写程序找出所有的“水仙花数”保存到数组 s 中并输出。 (所谓“水仙花数”是指一个三位数,其各位数字的立方之和等于该三位数,如:407 就是一个水仙花数,因为43+03+73=407) 。 3. 请编写程序,以每行 8 个的形式输出 100999 内的质数。要求判断质数在子函数中完成。4. 请编写程序:从键盘输入一个数 n,判别它是否能被 3、5 和 7 同时整除,若能整除,则输出 YES
31、,否则输出 NO。5. 请编写程序,要求主函数中读入任意一个正整数,运用调用递归函数的方法实现求n!。6请编写程序,从键盘输入一行文字,统计其中字母、空格、数字和其他字符各有多少并打印出结果。7. 有一段文字,请编写程序找出给定单词在文字中出现的次数,假定原文中的任意分隔符都不会连续出现。8. 输入 10 个整数,将其中最小的数与第 1 个数对换,将最大的数与最后一个数对换。输出交换前和交换后的所有元素(根据需要定义数组和函数实现功能) 。9. 请编写程序,从键盘输入一个整数 n,计算并输出 1+2+3+n 的值。要求数据的输入和输出在主函数中完成,主函数中调用递归函数 fun(int n) 计算和值,该函数的原型为int fun(int n)。10. 请编写程序,从键盘输入任意一个字符串,判断该字符串是否为回文,要求回文的判断在子函数中完成。所谓回文就是去掉空格后的字符串是中心对称的,例如:“A B CB A“就是回文,而“A B CD B A“就不是回文。