中等职业学校计算机应用专业 C语言编程基础
科试卷及答案 一、 填空(共35分)
1、 Unix系统诞生于 ____ 年,是由 _______ 实验室的K T和DMR用汇编语言开发成功的。
2、 在 C语言中,标识符主要为 ____ , ___ , _____ 及 的名字使用。
3、 C语言中中的基本数据类型包括 —、______ 和— 三种。
4、 数组是有序是的并且有 ____ 的数据的集合。 5、 C语言中,二维数组元素在内存中的存储顺序 是___ 。
6、 C语言函数的实参、形参二者类型 ____ ,一般个 数—o
7、 在C语言中,变量的存储类别有四种,它们 是_____ , __ , __ 和 _____ o
8根据函数能否被其他源文件调用,函数分为 _函 数和_函数两类。
9、 文件是存储在外部存储设备上的 _____ o 10、 定义文件指针变量的格式为 ___ o
11、 feof()函数是 _______ 检测函数,当文件位置指针 处于_____ 时,它返回一个 ___ 值。 12、 用逻辑运算符将 ___ 或 连接起来就是逻辑表
达式
13、 结构化程序设计方法,采用 ____ 的设计原则和_ 的
来构造程序。
14、 程序结构一般米用 ____ 、 ____ 和 _____ 结构。 15、 第三代高级语言是 ,注重的是
,
_
之间的关系是从属性的层层调用关系。
二、 单项选择题(共15分) 1、C语言程序由 组成。
A.
子程序B. 主程序和子程序
C. 函数 D. 过程 2、 源程序要正确地运行,必须要有什么函数 ? A. printf
函数 B.
自定义的函数
C. ma in函数 D. 不需要函数 3、 若a为整型变量,且有以下语句 a=-017L; prin tf(\则下面_说法是正确的? A.
赋值不合法 B. 输出值为-17
C.输出为不确定值D.输出值为-15 4、 _______ 下面 表达式的值为4. A. 11/3 B. 11.0/3
C. (float)11/3 D. (in t)(11.0/3+0.5)
5、 在C语言的if语句中,用作判断的表达式为 _o A.
关系表达式 B. 逻辑表达式 C.算术表达式
D.
任意表达式
6、 下面哪一项是不正确的字符串赋值或赋初值的方式。A. char *str; str=\B. char str[7]={'s','t','r','i',' n','g'}; C. char str1[10];str1=\
D. char str1[]=\
7、 若有以下说明和语句,贝U输出结果是哪一项? (strlen(s) 为求字符串s的长度的函数) char s[12]=\
A. 12 B. 8 C. 7 D. 11
8 C语言可执行程序从什么地方开始执行? A.程序中第一条可执行语句
B.程序中第一个函数
C.程序中的ma in函数D.包含文件中的第一个函数 9、有一个函数原型如下所示:
abc(float x,float y);
则该函数的返回类型为—o
A. void B. double C. i nt D. float
10、 在C语言程序中,下面哪一个是正确的? A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义可以嵌套,函数的调用也可以嵌套 D. 函数的定义和函数的调用都不可以嵌套
11、 对于类型相同的指针变量,不能进行哪种运算 ?
A. + B. - C. = D.==
12、 若有以下说明和语句,且 0<=i<10,则下面_是 对数组元素的错误引用?
int a[]={1,2,3,4,5,6,7,8,9,0}, *p, i; p=a;
A. *(a+i) B. a[p-a] C. p+i D. *(&a[i])
13、 如果想把一些新的数据添加到文件 xh.txt中,则 应该以下面 _____ 方式打开文件? A. fp=fope n( xh.txt,\B. fp=fope n( \C. fp=fope n(\D. fp=fope n(\
14、 下面哪条语句是从文件中读取一个字符 ? A. ch=getc(); B. fputc(ch,fp);
C. fscanf(\15、 C语言中的文件类型如何划分? A. 索引文件和文本文件两种 B. ASCII文件和二进制文件两种 C. 只有文本文件一种 D. 只有二进制文件一种 三、多选题(共20分)
1、下面 ____ 是定义局部变量储存类别的保留字。
A. i nt B. auto C.static D.float
E. register F.exter n G. un sig ned H.sig ned 2、 指出下面各说明语句中 ____ 是合法的: A. int abcd[0x80]; B. char 9ab[10]; C. char chi[-200]; D. int aaa[5]={3,4,5}; E. float key[]={3.0,4.0,1,0}; F. char disk[];
G.
int n,floppy[n]; H. int
cash[4]={1,2,3,4,5,6};
3、 _______________________ C程序的结构可分为 类?A.顺序结构 B.循环结构C.程序结构D.选择结构 4、 ______________________________ C语言的主要特点有 _______________________________
A. 简洁、紧凑,使用方便、灵活,易于学习和应用。 B. C语言是面向结构化程序设计的语言。 C. C语言允许直接对位、字节和地址进行操作。 D. 数据类型丰富。E . C语言生成的目标代码质量高。 5、 ______________________________ 指出下面合法的标识符:____________________________ A. 3ab B. i nt C. ABC D. a_3 E. sum.a F. #abc G. _stu2 H. abc f
6、 指出下面 _____ 是合法的用户定义的标识符。 A. P-S B. putchar C. double D. _908 E. *par F. sheep! G. wi nd H. x y
7、 _____________________ C语言的基本类型有 A.整型 B. 枚举型
C. 数组型
D.
指针型
E. 字符型F. 构造型 G. 实形 H.
空类型 & C语言中整形常量按进制划分,有以下几种 :
A. 十六进制常量 -B.
十进制常量
C. 八进制常量 D. 二进制常量
9、 如果要把常量 327存入变量a中, a可以定义成 类型。
A. i nt B. char C. lo ng D. float
10、下面 _____ 写法是对的,而且是常量 A. 125 B. -.456 C. 1.25e20 D. 'AB' E. E6 F. 0238 G. 0xabcdef
H.
\
四、判断(共2 0分)
I.
在C语言中,函数的参数传递有两种方式:传递 值和传递地址。()
2.
一般来说,使用指针能使目标程序占用存储空间 大,运行速度快。()
3.
指针变量可以定义为指向字符型、实型以及其他 类型的变量。()
4.
内存区的每一个字节都有一个编号,这个编号就 称为地址”()
5.
条件编译的好处是可以增加被编译的语句,从面 增加目标代码的长度。
6.
写带有参数的宏定义时,宏与带括号的参数间有 空格。()
7.
fscanf()函数从文件中读取字符串,只当遇到空 格符时才结束字符的读取。()
8.
形式参数是指定义函数时跟在函数名后的小括 号内的变量名。实际参数则是指调用函数时,跟在 函数名后的小括号内的表达式。()
9.
在定义字符数组的同时初始化数组外,可以用赋 值的形式把字符串存入一个字符的数组中。()
10.
用逻辑运算符将关系表达式或变量连接起来就 是逻辑表达式。
11.
在关系运算中,若规定的关系成立,则其结果为 1,反之为0。
12.
格式字符前面的数字,指定输入数据所占宽度, 不能指定小数位数。
13.
c格式符,用为输出一个字符。对于整数,只要 它的
值在0—256范围内。()
14. 参数ch通常为字符型变量、字符码或字符本身。 () 15.
C语言提供了整型、实型、字符型三种基本类型。 ()
16.
逗号运算符在所有运算符中优先级虽最低,逗号 运算符的结合方向是 从左至右”()
17.
C语言提供了一个惟一的两目运算符(?:), 即条件运算符。()
18.
递增、递减运算符的优先级与取正负”的优先级 不同。()
19.
当赋值号两边的数据类型不同时,一般由系统自 动进行类型转换。()
20.
自动转换的规则是按照低类型转换到高类型或 赋值号的右边类型转换到赋值号左边的类型来进行 的。()
五、A、写出下列程序的运行结果。(共5X4分) 1、 void main()
{int coun t,i;i nt x,y,z;x=y=z=0; sca nf(\for(i=0;i {x=(x+1)%2;y=(y+1)%3;z=(z+1)%5;} prin tf(\ } 如果运行时输入10,结果是x= ____ ,y= __ ,z= ___ 。 如果运行时输入17,结果是x= ____ ,y= __ ,z= ___ 。 2、 void mai n() {int a,b,c;a=2;b=7;c=5; switch(a>0) {case 1: switch(b<10) {case 1:pri ntf(\case 0:printf(\case 0: switch(c==5) {case 0: printf(\case 1: printf(\default:printf(\default: printf(\printf(\ } 运行结果: 3、#include {int i,j,x=0; for(i=0;i<2;i++) {x++; for(j=0;j<=3;j++) {if(j%2) continue;x++;} } printf(\ } 运行结果: 4、void main() {float array[3][4]={{3.4,-5.6,56.7},{56.8,999.,-.0123} ,{0.45,-5.77,123.5},{43.4,0,111.2}}; int i,j;int min;int m,n; min = array[0][0]; m=0;n=0; for(i=0;i<3;i++) for(j=0;j<4;j++) if(min > array[i][j]) {min = array[i][j]; m=i;n=j;} printf(\ } 运行结果: 5、void main() {char str[]=\printf(\屏幕上显示 ___ printf(\屏幕上显示 ___ str[2]=str[5]; printf(\屏幕上显示 ___ str[9]='\\0'; printf(\ 屏幕上显示 ___ } B,补充程序(共20分) 1 ,下面这个程序的作用是统计公元 1 年到公元 2000 年的闰年个数。判断闰年的方法是 : 能被 400整除的年 是闰年; 除能被 400整除的年以外,凡是能被 4整除, 但不能被 100 整除的年是闰年。其余年份是平年。 #include for(year=0;year<=2000;year++) if( ( ____ ) ||( year%4==0 && ___) ) printf(\ } 2、以下程序从读入的整数数据中 , 统计大于零的整数个 数和小于零的整数个数 . 用输入零来结束输入 ,程序中 用变量 i 统计大于零的整数个数 ,用变量 j 统计小于零 的整数个数 . 请填空. #include printf(\输入非零的整数 (输入零结束程序 )\ i=j=0; scanf(\while___ { if(n>0)i=___; if(n<0)j=___;___; } printf(\ } 3、下面这个程序打印出以下这个三角形 . 请填空 0 11 222 3333 44444 555555 6666666 77777777 888888888 9999999999 void main() {int i,j; } 5, 除 1 外,只能被 1和自己本身整除的自然数叫素数。 for(i=0;i<=___;i++) {for(j=0;j<___;j++) printf(___); } } 4, 有 5 个学生的成绩需要保存在文件 score.dat 文件 中。保存格式如下 : 学生姓名,年龄,成绩 请完成下面这段源程序。 void main() { FILE *fp; int i; char name[80]; int age; float score; fp=fopen(___,\{printf(\ 请输入第%c个学生的信息\\n\ printf(\姓名:\scanf(___); printf(\年龄:\ printf(\成绩:\ fprintf(fp,___,name,age,score); 下面这个程序就是求 2到 100之间的素数。其中判断某 数为素数的方法为用 2 到该数平方根之间的自然数去 试整除该数。如果没有哪个数能够整除该数, 为素数;如果有,那么时合数。请填空。 (函数 sqrt(a) 求 a 的平方根 ) #include #include for(i=2;i<=___;i++) {flag=1;k=(int)sqrt(i); for(j=2;j<___;j++) if(___==0) {flag=0; break; } if(flag)printf(\ } 六、编写程序, 1、用递归的方法求n! (n!=1*2*3*4…*n) 2、输入在个数,要求设三个指针变量 P1, P2(共, P3,7使分) P1指向三个数的最小数,P2指向中间数,P3指向最大 数,然后按由小到大的顺序输出。 (用指针的方法编写) (7分) 3、一循环程序编写下面图形。(6分) 参考答案 一、填空 1、 1969 年,美国贝。 2、 常量,变量,函数,自定义。 3、 整型,浮点型,字符型。 4、相同类型。 5、 限性。 6、 一致,相同。 7、 自动,外部,静态,寄存器。 8、 内部,外部。 9、 信息集合。 10、 FILE*fp o 11>二进制文件尾,0。 12、 关系表达式,逻辑量。 13、 自顶向下逐步求精,单入口单出口,好结构。 14、 顺序结构,分支结构,循环结构。 15、 过程式语言,模块设计,模块。 二、 单项选择题 1C, 2C, 3B, 4D, 5D, 6C, 7C, 8C, 9C, 10B, 11A, 12C, 13C, 14C, 15Bo 三、 多选题。 1 BCE, 2ADE , 3ABD , 4ABCDE , 5CDG , 6BDG , 7ABEG , 8ABC , 9ACD , 10ABCGH o 四、 判断 1对,2错,3对,4对,5错,6错,7错,8对,9错,10错, “对,12 错,13 错,14 对,15 对,16 对,17 错,18 错,19 对,20对。 五、 A、写出下列程序的运行结果。 1 > 0 1 0 2、人#& 3、 x=8 1 2 2 4、 min=-5.77,m=1,n=2. 5、 ABCDEFGHIJKL EFGHIJKL AFCDEFGHIJKL AFCDEFGHI B、补充程序, 1> year@0==0 2, int year0!=0 (n!=0) count++ i+1 j+1 3,9 i \printf(\4, 答案:\ i \scanf(\scanf(\\fclose(fp); 5, 答案:100 k i%j 六,编写程序, 1 ,main() { int a; long power(),t; printf(\输入一个整数\\n\scanf(\,&a); t=power(a); printf(\} long power(x) int兀 { long y; if(x>0) y=x*power((x-1 ,(x-1)); else y=1; return y; } 2,main()