本卷共有3道大题:
一、单项选择题(50道小题,共50分)
1、下列计算机语言中,CPU能直接执行的是( D )。(1分) A、自然语言 B、高级语言 C、汇编语言 D、机器语言
2、算法具有5个特性,以下选项中不属于算法特性的是( B )。(1分) A、有穷性 B、简洁性 C、可行性 D、确定性
3、以下叙述中,正确的叙述是( A )。(1分)
A、构成C程序的基本单位是函数 B、可以在一个函数中定义另一个函数
C、main( )函数必须放在其他函数之前 D、所有被调用的函数一定要在调用之前进行定义
4、已知字母A的ASCII码为十进制的65,char ch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';,则printf(\的输出是( A )。(1分) A、67,D B、B,C
C、C,D D、不确定的值
5、c2为字符型,执行语句“c2='A'+'6'-'3';”后,c2的值为(A )。(1分) A、D B、63 C、不确定的值 D、C
6、若a为int类型,且其值为5,则执行完表达式a+=a-=a*a后,a的值是( C )。(1分) A、-5 B、20 C、-40 D、25
7、设a、b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是( D )。(1分) A、'a'&&'b' B、a<=b
C、a||b+c&&b-c D、!((a<b)&&!c||1)
8、表达式18/4*sqrt(4.0)/8值的数据类型为( C )。(1分) A、int B、float C、double D、不确定
9、设x是int型变量,f是float型变量,用下面的语句给这两个变量输入值:scanf(\\,为了把100和765.12分别送给i和f,正确的输入为(B )。(1分)
A、100<空格〉765.12<回车> B、i=100,f=765.12<回车>
C、100<回车〉765.12<回车> D、x=100<回车>f=765.12<回车>
10、下列表述中,合法的C语言赋值语句是( B )。(1分) A、a=b=58 B、i++;
C、a=58, b=58 D、k=int(a+b); 11、若k是int型变量,程序片段 k=-3; if(k<=0) printf(\printf(\的输出结果是( A )。(1分) A、#### B、&&&&
C、####&&&& D、有语法错误,无输出结果 12、程序main(){int x=1, y=0, a=0, b=0;switch(x){case 1: switch(y) {case 0: a++;break; case 1: b++;break; } case 2: a++; b++; break;}printf(\的输出结果是( A )。 (1分) A、a=2, b=1 B、a=1, b=1 C、a=1, b=0 D、a=2, b=2
13、若有定义float w; int a, b; ,则合法的switch语句是( C )。(1分) A、switch(w) { case 1.0: printf(\B、switch(a); { case 1 printf(\
C、switch(b) { case 1: printf(\default: printf(\case 1+2: printf(\
D、switch(a+b); { case 1: printf(\printf(\
14、若有int a[4][5];,则数组a包含的元素个数是( D )。(1分) A、4 B、5 C、9 D、20
15、下列语句中,正确的定义语句是( B )。(1分) A、int A[a]; B、int A[10]; C、int A[3,4]; D、int A[][3]
16、下列描述中,能正确给字符数组str定义和赋值的是( A )。(1分) A、char str[]={\ B、char str[10];str={\C、char str[10]={\D、char str[10];strcpy(str,\
17、若有char c[6]={'H','e','l','l','o'};,则c[5]的值是( B )。(1分) A、'0' B、'\\0'
C、空格 D、不可知的
18、设有定义:char c,string[]=\zhanghong\,若要逐个输出元素的值,可以写一个循环程序段,则这个循环段的“循环条件”是( D )。(1分) A、c=string[i]='\\0' B、(c=string[i])='\\0' C、c=string[i]!='\\0' D、(c=string[i])!='\\0'
19、在Turbo C下,若有数组定义:float f[10]={1,2,3,4};,则数组f所占的存储空间为( D )个字节。(1分) A、4 B、16 C、10 D、40
20、C语言允许用外部说明来指定变量、函数等,这里的外部指的是( D )。(1分) A、冠以关键字extern B、位置在函数体外部 C、作用范围是全程的 D、位置在函数外部
21、下列关于静态局部变量的说法中,不正确的说法是( D )。(1分) A、静态局部变量在函数内定义 B、静态局部变量的生存期为整个源程序
C、静态局部变量的作用域为整个源程序 D、静态局部变量若在说明时未赋初值,则系统自动赋予0值
22、下列关于局部变量的说法中,不正确的说法是( A )。(1分) A、不能在复合语句中定义变量 B、局部变量是在函数内部定义说明的
C、形参变量属于被调函数的局部变量 D、允许在不同的函数中使用相同的变量名
23、在复合语句中定义的变量( B )。(1分) A、只在主函数中有效 B、只在本复合语句中有效 C、可以在整个文件中有效 D、可以在所有函数中有效
24、如果全局的外部变量和函数体内定义的局部变量重名,则(B )。(1分) A、出错 B、局部变量优先
C、外部变量优先 D、全局的外部变量优先
25、在主函数中定义的变量( A )。(1分) A、只在主函数中有效 B、可以在整个文件中有效
C、可以在所有函数中有效 D、可以在被调用的函数中有效
26、能够在输出完字符串后自动输出一个回车换行的函数是( B )函数。(1分) A、putc() B、puts()
C、printf() D、putchar()
27、在C程序中,main()的位置( A)。(1分) A、可以任意 B、必须作为第一个函数
C、必须作为最后一个函数 D、必须放在它所调用的函数之后
28、如果函数值的类型和return语句中表达式的值不一致,则(C )。(1分) A、语法出错 B、连接出错
C、以函数类型为准 D、以表达式值的类型为准
29、若在程序中用到“strlen()”函数时,应在程序开头写上(D )。(1分) A、#include
C、#include
30、若有int f(int a,int b);,则说明函数f( B )。(1分) A、是一个内部函数 B、是一个外部函数
C、只能在本文件中使用 D、不能被同一源程序其他本文件中的函数调用
31、声明一个函数为外部函数,应该在声明函数的函数类型的前面加(C )。(1分) A、auto B、static C、extern D、register
32、若有int a=3,*pa; float f=4.5,*pf;,则下列表述中,错误的是 (B )。(1分) A、pa=&a B、pa=&f C、pf=&f D、*pf=a+f
33、设char s[10];int i=5;,下列表达式中,正确的表达式是( B )。(1分) A、s[i+6] B、*(s+i) C、*(&s+i) D、*((s++)+i
34、若有int a[10],*p=a;,则( C )。(1分)
A、p++可以使p指向下一个字节 B、p+=2 相当于p=sizeof(a)/10
C、p++可以使p指向下一个元素,即a[1]的首地址 D、p+=2可以使p指向下一个元素,即a[1]的首地址
35、设有语句:int a[10]={0,1,2,3,4,5,6,7,8,9},i,*p=a;,下列表达式中,对a数组元素引用错误的是( D )。(1分) A、p[i] B、a[p-a]
C、*(&a[i]) D、*(*a(a+i))
36、在C语句中,&后跟指针变量名,表示该指针变量的((C )。(1分) A、值 B、别名 C、地址 D、类型
37、若程序中包含有以下说明和定义:struct ex{ int x,y;} ? struct ex,x,y; ? ,则在计算机上调试时, ( A )。(1分) A、编译出错 B、可以编译、连接、执行
C、可以编译、连接,但不能执行 D、可以编译,但连接出错 38、“.”运算符称为( C )运算符。(1分) A、指针 B、取地址
C、结构体成员 D、指向结构体成员
39、设有定义语句“struct {int a;float b;char c;}abc;”,则对结构体成员a的引用可以是( A )。(1分) A、abc.a B、abc-a

