一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题目的括号内。每小题1分,共20分) 得分 1. 不属于字符型常量的是( )
A.‘A’ B.‘a’ C.“A” D.‘b’
2. 根据C语言的语法规则,下列( )是不合法标识符。
A. while B. Name C. Rern5 D. _exam 3. 表达式“1?(0?3:2):(10?1:0)”的值为( ).
A.3 B. 2 C. 1 D. 0 4. 为表示关系x≥y≥z,应使用C语言表达式( ).
A.(x>=y)&&(y>=z) B. (x>=y) AND (y>=z) C.(x>=y>=z) D. (x>=z)&(y>=z) 5. 以下说法中正确的是( ).
A. C语言程序总是从第一个定义的函数开始执行。
B. 在C语言程序中,要调用的函数必须有main( ) 函数中定义。 C. C语言程序总是从main( ) 函数开始执行。
D. C语言程序中的main( ) 函数必须放在程序的开始部分。 6. 设有数组定义:char array[]=“China”;则数组所占的存贮空间为( ).
A. 4个字节 B. 5个字节 C. 6个字节 D. 7个字节 7. C语言中以只读方式打开一个文件应选择( )参数。 A. ”r” B. “w” C. “rb” D. “a”
8. 从循环体内某处跳出,继续从头执行该循环外的语句是:( ).
A. break语句 B.return语句 C.continue语句 D.空语句。 9. 设有定义:long x=-L; 则以下能够正确输出变量x值的语句是( ).
A. printf(“x=%d\\n”,x) B. printf(“x=%ld\\n”,x) C. printf(“x=l\\n”,x) D. printf(“x=%D\\n”,x); 10. C语言用( )表示逻辑“真”值。
A. true B. t或y C. 非零整型值 D. 整型值0
11. 设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为( )。 A. P+i*2 B. P+(i-1)*2 C. P+(i-1) D. P+i 12. 字符串指针变量中存入的是( ).
A.字符串的首地址。 B. 字符串 C.第一个字符 D. 字符串变量。 13. 以( )个是不正确的描述。
A. 数组名可以作为参数进行传递。
B. 在定义函数时,必须指定形参的类型。 C. 形参和实参之间可以是值传递。
D.不论在主函数还是自定义函数中,只要说明了变量,就可为其分配存贮单元。 14. 在函数中默认存储类型说明符的变量应该是( )存储类型。
A.内部静态 B. 外部 C.自动 D. 寄存器
15. 设已有定义: char *st=\"how are you\"; 下列程序段中正确的是 ( )
A. B. C. D.
char a[11], *p; strcpy(p=a+1, st[4]); char a[11]; strcpy(a, st); char a[11]; strcpy(++a, st);
char a[], *p; strcpy(p=&a[1],st+2);
16. 计算机算法指的是( )。
A.计算方法 B.排序方法
C. 调度方法 D.解决某一问题的有限运算序列 17. 栈是一种( )的数据结构。
A.先进后出 B.先进先出 C.只允许在端点处插入和删除元素 D.操作没有限制
18. 循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是( )。
A. rear-front-1 B.rear-front+1 C. (rear-front+m) MOD m D.rear-front 19. struct sk
{ int a; float b; }data; int *p;
若要使p指向data中的a域,正确的赋值语句是( )。
A. p=&a; B. p=data.a; C. p=&data.a; D. *p=data.a 20. 若有以下说明和定义
typedef int *INTEGER INTEGER p,*q;
以下叙述正确的是( )。 A. p是int型变量
B. p是基类型为int的指针变量 C. q是基类型为int的指针变量
D. 程序中可用INTEGER代替int类型名 二、 得分 填空题(1-2题每题2分,3-8题每题1分,共10分)
1. C语言中基本的数据类型有:______、______ 、______ 。
2. C语言中普通整型变量的类型说明符为______,在内存中占______字节,有符号普通整型的数据范围是______ 。
3. 整数-35在机内的补码表示为______。
4. 执行下列语句int a=8; a+=a-=a*a; 后,a的值是______。
5. 有如下语句:char A[ ]={“I am a student”}; 该字符串的长度是______,A[3]=______。 6. 符号“a”和‘a’的区别是______。
7. 所谓“指针”就是______.“&”运算符的作用是______.“*”运算符的作用是______。 8. 有如下输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是 。
三、 得分 判断题(判断下列各小题,正确的在题后括号内打“√”,错的打“╳”。
每小题1分,共10分)
1. C 语言源程序文件通过了编译、连接之后 , 生成一个后缀为 .EXE 的文件。 ( )
2. 在 C 程序中 , 函数既可以嵌套定义 , 也可以嵌套调用。( ) 3. 在 C 程序中 ,APH 和 aph 代表不同的变量。( ) 4. 表达式 0195 是一个八进制整数。( ) 5. continue语句的作用是结束本次循环。( )
6. extern变量的生命期是整个程序执行期。 ( ) 7. C语言中字符串的结束符是‘\\0’。 ( )
8. 如果有定义int a,*p=&a; 则*p与a意义相同。( ) 9. 结构体变量中各成员共享空间。( ) 10. 起泡排序法是稳定的。( )
2
四、 得分 应用题(每小题7分,共42分)
1. # include “stdio.h”
main( ) { int a[]={8,2,9,4,1}, *p; p=a;
*(p+2)+=2;
printf(“%d, %d ”, *p, *(p+2));}
该程序的运行结果是___________________________________.
2. 已知有一函数定义如下:
template 主函数调用格式如下: main() { int x=1,y=2; printf(“x=%d y=%d\\n”,x,y); swap1(x,y); printf(“x=%d y=%d\\n”,x,y); } 执行后输出结果为 x=1 y=2 x=1 y=2 本来是想交换x和y的值,但没有成功,请指出错误所在,并该正之。 3. for (a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) {b+=3; continue;} b-=5; } 程序执行后a和b的值分别为 。 4.main() { int i,num[5]; for(i=0;i<5;i++) num[i]=i*10 - 2; printf(“%d”,num[3]); 第 3 页 共 7 页 } 该程序的运行结果是_______________________________. 5. main() { float c,f; c=30.0; f=(6*c)/5+32; printf(“f=%f”,f); } 该程序的运行结果是________________________________. 6. 写出下列程序的运行结果。 #include “stdio.h” main() { int a[]={1,2,3,-4,5}; int m,n,*p; p=&a[0]; m=*(p+1); n=*(p+4); printf(“%d %d %d ”,*p,m,n); } 该程序的运行结果是________________________________. 五、 得分 编程题(18分,任选2题,每题9分,选题操作2题按错误最多的2题评分) 1. 编程将文件score1.txt中的字符读出显示到屏幕上。 2. 输出1—100之间不能被12整除的数。 3. 从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。 4. 假设以带头结点的单链表表示线性表,单链表的类型定义如下: 4 template T data; Node 编写函数判断链表是否为空。函数原型如下: bool IsEmpty(Node 单项选择题CABAC CACBC BADCB DACCB 填空题 1. 整型 实型 字符型 顺序可以不一致,实型1分,其余两种各0.5分 2.int 4 -231~+231-1(1 分) 3. 232-35或0xffffffdd 4. -112 5. 14 ‘m’ 没有单引号不扣分(各0.5分) 6. 一个字符串 一个字符 7. 地址 取地址 取内容(或代表目标变量)(各1/3分,答对2个不扣分) 8. 1,3,2 判断题 √╳√╳√√√√╳√ 应用题 1. 8, 11 2. 指出错误3分,改正4分 改成引用或指针均可, 改成指针,如下: template void swap1(T *a, T *b)//3分 { T temp; temp=*a; *a=*b; *b=temp; } main() { int x=1,y=2; printf(\"x=%d y=%d\\n\ swap1(&x,&y); //1分 printf(\"x=%d y=%d\\n\} 第 5 页 共 7 页 3. 8 22 4. 28 5. 68. 6. 1 2 5 编程题 5. 编程将文件score1.txt中的字符读出显示到屏幕上。 参考程序: # include 6. 输出1—100之间不能被12整除的数。 参考程序: #include int i; //1分 for(i=1;i<=100;i++) //2分 { if(i%12==0) //3分 continue; //1分 printf(\"%d \分 } } 7. 从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。 #include 6 for(j=0;j<10-i-1;j++) { if(a[j]for(i=0;i<10;i++) printf(\" %d \分 } 8. 假设以带头结点的单链表表示线性表,单链表的类型定义如下: template T data; Node 编写函数判断链表是否为空。函数原型如下: bool IsEmpty(Node 参考程序: bool IsEmpty(Node 第 7 页 共 7 页 因篇幅问题不能全部显示,请点此查看更多更全内容