第一卷(共70分)
第一部分:基础知识(20题,共40分)
1、一个C程序总是从( )开始执行。
A、程序的第一条执行语句 B、主函数 C、子程序 D、主程序
2、在C语言中,int, char和short int三种类型变量所占用的内存大小是( )。
A、均为2个字节 B、由用户自己定义 C、由所用机器的字长决定 D、是任意的
3、若有以下类型说明语句:
char a; int b; float c; short int d;
则表达式(c*b+a)*d的结果类型是( )。
A、char B、int C、double D、float
4、若有说明语句:
int w=1,x=2,y=3,z=4;
则表达试w>x?w:z>y?z:x的值是( )
A、4 B、3 C、2 D、1
5、设x,y 为int型变量,则执行下列语句后,y的值是( )
x=5;
y=x++*x++;
y=--y*--y;
A、529 B、2401 C、1209 D、625
6、C语言中函数返回值的类型是( )
A、return语句中的表达式类型 B、调用函数的类型
C、总是int型 D、定义函数时所指定的函数类型
7、凡是在函数中未指定存储类别的变量,其隐含的存储类别是( )
A、自动 B、静态 C、外部 D、寄存器
8、在源程序的一个文件中定义的全局变量的作用域是( )
A、本文件的全部范围 B、该程序的全部范围
C、一个函数的范围 D、从定义该变量的位置开始至该文件的结束
9、以下不正确的描述是( )
A、break语句只能用于循环语句和switch语句
B、在switch语句中,break语句的作用也可用continue语句来替代
C、在循环语句中,使用continue语句是为了结束本次循环,而不是终止循环的执行
D、在循环语句中,使用break语句是为了使流程跳出循环体,提前结束循环
10、若有宏定义 #define mod(x,y) x%y
则执行以下程序段后,输出为( )
int z,a=15,b=100;
z=mod(b,a);
printf(“%d\n”,z++);
A、11 B、10 C、6 D、宏定义不合法
11、若有说明语句: char s1[4]=”12”; char *ptr;
则执行下列语句后输出为( )
ptr=s1;
printf(“%c\n”,*(ptr+1));
A、字符‘2’ B、整数2 C、字符串“12” D、字符‘1’
12、若有以下语句
int x[]={2,4,6,8,10,12},*ptr;
ptr=x;
则对数组元素的正确引用为( )
A、x B、x[6] C、*(--ptr) D 、 *(++ptr)
13、若有说明语句:int i,x[3][4];则不能实现将x[1][1]的值赋给变量i的语句是( )
A、i=*(*(x+1)+1) B、i=*(*(x+1)) C、i=x[1][1] D、i=*(x[1]+1)
14、若已定义了如下的共用体类型变量x,则x所占用的字节数(在16位PC机条件下)为( )
union data{
int i;
char ch;
double f;
}x;
A、7 B、11 C、8 D、10
15、如下说明语句:
enum A {A0=1,A1=3,A2,A3,A4,A5};
enum A B;
执行:
B=A3;
printf(“%d\n”,B);
输出的是( )
A、5 B、3 C、2 D、编译时出错
16、while(!x)中的条件表达式(!x)与下面条件( )等价。
A、x==0 B、x==1 C、x==0|| x==1 D、x!=0
17、有以下说明语句,则对结构体变量s的成员num的不正确引用是( )
struct student{
int num;
int age;
}s,*p;
A、s.num B、*p.num C、p->num D、(*p).num
18、说明语句int (*p)[10]定义了p是( )
A、指针数组 B、指向数组的指针
C、返回值为整型的函数指针 D、指向整型数的指针
19、下面对文件操作函数描述正确全面的是( )
int n_read=read(int fd,char *buf,int n);
从文件fd中读n个字节存放在buf中
从文件fd中读n个整数存放在buf中
从文件fd中读n个字节存放在buf中,并将n赋给n_read
从文件fd中读n个字节存放在buf中,并将实际读入的字节数和出错代码赋给n_read
20、C语言的编译系统对宏命令是( )
A、在程序运行时进行代换处理的
B、在程序连接时进行处理的
C、与程序中其他C语句同时进行编译的
D、在对源程序其他成分正式编译之前进行处理的