单选题:(每题2分,共80分) 
 
1、下列不合法的十六进制数是( ) (2分)  
  A. oxff 
  B. 0Xcde 
  C. Oxll 
  D. Ox23 
 
  参考答案: A  
2、将三个数排序需要比较______次。 (2分)  
  A. 2 
  B. 3 
  C. 4 
  D. 不确定 
 
  参考答案: B  
3、以下程序的输出结果是  
main( )  
{ int k=17;  
printf("%d,%o,%x \n",k,k,k);  
} (2分)  
  A. 17,021,0x11 
  B. 17,17,17 
  C. 17,0x11,021 
  D. 17,21,11 
 
  参考答案: D  
4、在C语言中,合法的字符常量是______.  
   (2分)  
  A. '\084'    
  B. '\x43' 
  C. 'ab'  
  D. ″\0″ 
 
  参考答案: B  
5、在C语言中,int、char和short三种类型数据在内存中所占用的字节数  
 (2分)  
  A. 由用用户自己定义 
  B. 均为2个字节 
  C. 是任意的 
  D. 由所用机器的机器字长决定 
 
  参考答案: D  
6、若有定义:int a=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为  
 
 (2分)  
  A. 1.4 
  B. 1 
  C. 2.0 
  D. 2 
 
  参考答案: B  
7、设有说明语句:char a='\72';则变量a  
 (2分)  
  A. 包含1个字符 
  B. 包含2个字符 
  C. 包含3个字符 
  D. 说明不合法 
 
  参考答案: A  
8、若有以下说明和语名:  
int a=5,m;  
m=a++;  
此处表达式m的值是____  
 (2分)  
  A. 7  
  B. 6  
  C. 5  
  D. 4  
 
  参考答案: C  
9、以下程序的输出结果是______  
main()  
{  
int x=10,y=10;  
printf("%d%d\n",x--,--y);  
}  
 (2分)  
  A. 10 10 
  B. 9 9 
  C. 9 10 
  D. 10 9 
 
  参考答案: D  
10、下列选项中,不正确的赋值语句是_____ (2分)  
  A. ++t; 
  B. n1=(n2=(n3=0)); 
  C. k=1=j; 
  D. a=b+c=1; 
 
  参考答案: C  
11、以下程序段的输出结果是  
int a=1234;  
printf("%2d\n",a);  
 (2分)  
  A. 12 
  B. 34 
  C. 1234 
  D. 提示出错、无结果 
 
  参考答案: C  
12、为表示关系x ≥ y ≥ z,应使用C语言表达式_________。  
 (2分)  
  A. (x > =y)&&(y > =z) 
  B. (x > =y)AND(y > =z) 
  C. (x > =y > =z) 
  D. (x > =y)&(y > =z) 
 
  参考答案: A  
13、设有:int a=1,b=2,c=3,d=4,m=2,n=2;  
执行 (m=a>b)&&(n=c>d)后n的值是  
 (2分)  
  A. 1  
  B. 2  
  C. 3  
  D. 4  
 
  参考答案: B  
14、判断char型变量cl是否为小写字母的正确表达式是  
 (2分)  
  A. 'a'<=cl<='z' 
  B. (cl>=a)&&(cl<=z) 
  C. ('a'>=cl)||('z'<=cl) 
  D. (cl>='a')&&(cl<='z') 
 
  参考答案: D  
15、能正确表示逻辑关系:"a ≥ =10或a ≤ 0"的C语言表达式是  
 
 (2分)  
  A. a > =10 or a < =0 
  B. a > =0||a < =10 
  C. a > =10 &&a < =0 
  D. a < =0 || a>=10 
 
  参考答案: D  
16、执行下面语句后的输出为( )  
int i= -1;  
if (i < =0)printf("****\n");  
else printf("%%%%\n");  
 (2分)  
  A. ****  
  B. %%%%  
  C. %%%%C  
  D. 有语法错,不能执行  
 
  参考答案: A  
17、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为________。  
 (2分)  
  A. a < > 0  
  B. !a  
  C. a=0  
  D. a!=0  
 
  参考答案: D  
18、若K为整型,以下while循环执行( )次  
K=0;  
while (K=0) K=K-1;  
 (2分)  
  A. 执行10次 
  B. 无限循环 
  C. 一次也不执行 
  D. 执行一次 
 
  参考答案: C  
19、以下程序的输出结果是()  
void main()  
{int y=5; whlie(y--) ;  
printf("y=%d\n",y); }  (2分)  
  A. y=0 
  B. y=1 
  C. y=-1 
  D. 无限循环 
 
  参考答案: C  
20、C语言中while和 do...while循环的主要区别()  (2分)  
  A. do...while的循环体至少执行一次 
  B. while的循环条件比do...while的循环条件严格 
  C. do...while循环允许从外部转到循环体内 
  D. do...while的循环体不能是复合语句 
 
  参考答案: A  
21、如果输入为:ABCdef 执行下面一段程序后,则输出为:  
main( )  
{char ch;  
while((ch=getchar( ))!='\n')  
{ if(ch > ='A' && ch < ='Z')ch=ch+32;  
else if(ch > ='a' && ch < 'z')ch=ch-32;  
printf("%c",ch);  
}  
printf("\n");  
} (2分)  
  A. ABCdef 
  B. abcDEF 
  C. abc 
  D. DEF 
 
  参考答案: B  
22、以下选项中正确的定义语句是()  
 (2分)  
  A. double a;b; 
  B. double a=b=0; 
  C. double a=7,b=0; 
  D. double,a,b; 
 
  参考答案: C  
@23、若有说明 int a[3][4];则对a数组元素的正确引用是  
 (2分)  
  A. a[2][4] 
  B. a[1,3] 
  C. a[1+1][0] 
  D. a(2)(1) 
 
  参考答案: C  
@24、若有说明 int a[3][4];则a数组元素的非法引用是  
 (2分)  
  A. a[0][2*1] 
  B. a[1][3] 
  C. a[4-2][0] 
  D. a[0][4] 
 
  参考答案: D  
25、以下不能对二维数组a进行正确初始化的语句是                           
 (2分)  
  A. int a[2][3]={0}; 
  B. int a[][3]={{1,2},{0}}; 
  C. int a[2][3]={{1,2},{3,4},{5,6}}; 
  D. int a[][3]={1,2,3,4,5,6}; 
 
  参考答案: C  
26、设有数组定义:char array[]=”China”;,则数组array所占的空间为( )。 (2分)  
  A. 4个字节 
  B. 5个字节 
  C. 6个字节 
  D. 7个字节 
 
  参考答案: C  
@27、以下程序运行后,输出结果是  
#define PT 5.5  
#difine S(x) PT*x*x  
main()  
{ int a=1,b=2;  
print ("%4.lf/n",S(a+b));  
} (2分)  
  A. 49.5 
  B. 9.5 
  C. 22.0 
  D. 45.0 
 
  参考答案: B  
28、下面程序的输出结果是  
main()  
{ int a[ ]={1,2,3,4,5,6,7,8,9,0,},*p;  
p=a;  
printf("%d\n",*p+9);  
} (2分)  
  A. 0 
  B. 1 
  C. 10 
  D. 9 
 
  参考答案: C  
29、在C语言中,下面那种数据类型不属于构造类型( )  
 (2分)  
  A. 枚举类型 
  B. 数组类型 
  C. 结构体类型 
  D. 共用体类型 
 
  参考答案: A  
30、C语言程序是由( )组成  (2分)  
  A. 一个主程序和若干子程序 
  B. 函数 
  C. 若干过程 
  D. 若干子程序 
 
  参考答案: B  
31、putchar函数可以向终端输出一个()       (2分)  
  A. 整型变量表达式值 
  B. 实型变量值 
  C. 字符串 
  D. 字符或字符型变量值 
 
  参考答案: D  
32、请读程序:  
#include  
FUNC(int A, int B)  
{ int C;  
C=A+B;  
return C;  
}  
main ( )  
{ int X=6,Y=7,Z=8,R;  
R=FUNC(X+Y ,Z--);  
printf("%d\n",R);  
}  
上面程序的输出结果是  
 (2分)  
  A. 11  
  B. 20  
  C. 21  
  D. 31  
 
  参考答案: C  
33、C语言函数的隐含存储类别是______.  
 (2分)  
  A. extern 
  B. static 
  C. register 
  D. auto 
 
  参考答案: D  
34、 以下不正确的说法是()  
 (2分)  
  A. 在不同的函数中可以使用相同名字的变量 
  B. 形式参数是局部变量 
  C. 在函数内定义的变量只在本函数范围内有效 
  D. 在函数内的复合语句中定义的变量在本函数范围内有效 
 
  参考答案: D  
35、有以下程序  
viod fun (int a,int b,int c)  
{ a=456; b=567; c=678;}  
main()  
{ int x=10, y=20,z=30;  
fun (x,y,z);  
printf("%d,%d,%d\n",x,y,z);  
}  
输出结果是  
 (2分)  
  A. 30,20,10 
  B. 10,20,30 
  C. 456,567,678 
  D. 678,567,456 
 
  参考答案: B  
36、以下叙述中正确的是 (2分)  
  A. C程序中的注释只能出现在程序的开始位置和语句的后面 
  B. C程序书写格式严格,要求一行内只能写一个语句 
  C. C程序书写格式自由,一个语句可以写在多行上 
  D. 用C语言编写的程序只能放在一个程序文件中 
 
  参考答案: C  
37、下列可用于C语言用户标识符的一组是 (2分)  
  A. void, define, WORD  
  B. a3_3,_123,Car 
  C. For, -abc, IF Case  
  D. 2a, DO, sizeof 
 
  参考答案: B  
38、以下叙述中错误的是 (2分)  
  A. 用户所定义的标识符允许使用关键字 
  B. 用户所定义的标识符应尽量做到"见名识意" 
  C. 用户所定义的标识符中,大、小写字母代表不同标识 
  D. 用户所定义的标识符必须以字母或下划线开头 
 
  参考答案: A  
40、有如下程序段  
int *p,a=10,b=1  
p=&a; a=*p+b;  
执行该程序段后,a的值为  
 
 (2分)  
  A. 12 
  B. 11 
  C. 10 
  D. 编译出错 
 
  参考答案: B  
 
 
 
 
 程序设计题(以下3题中任选2题作答,每题10分,共20分): 
1、编程序求出100到500之间同时满足除3余2和除5余3条件的数的个数。  (10分) 
 
  参考答案: 
 main()  
{  
int i,num=0;  
for(i=100;i < =500;i++)  
{  
if((i%3==2)&&(i%5==3))  
num=num+1;  
}  
printf("\n%d",num);  
}  
本题答案:20  
2、编写程序,求在10~1000之间所有能被4除余2,被7除余3,被9除余5的数之和。  (10分) 
 
  参考答案: 
 main()  
{ long s=0;  
int m;  
for(m=10;m<=1000;m++)  
{  
if(m%4==2&&m%7==3&&m%9==5)  
 
s=s+m;  
}  
printf("%d\n",s);  
}   
本题参考答案:2000  
3、编写程序,要求从键盘输入一个字符,转换其大小写并输出。  (10分) 
 
  参考答案:  
void main() 
{ 
char ch1,ch2;//ch1:输入前的字符,ch2:转换后的字符 
printf("please input a char:"); 
scanf("%c",&ch1); 
if(ch1>='A'&&ch1<='Z') 
ch2=ch1+32; 
if(ch1>='a'&&ch2<='z') 
ch2=ch1-32; 
printf("转换后的字符为:%c\n",ch2); 
} 
 
 
                         
 单选题:(每题2分,共80分) 
 
1、( )是构成c语言程序的基本单位 (2分)  
  A. 函数 
  B. 变量 
  C. 子程序 
  D. 语句 
 
  参考答案: A  
3、以下选项中属于C语言的数据类型是  
 
 (2分)  
  A. 复数型 
  B. 逻辑型 
  C. 双精度型 
  D. 集合型 
 
  参考答案: C  
4、若变量a是int类型,并执行了语句:a=‘A'+1.6;,则正确的叙述是  
 
 (2分)  
  A. a的值是字符C 
  B. a的值是浮点型 
  C. 不允许字符型和浮点型相加 
  D. a的值是字符‘A’的ASCII值加上1 
 
  参考答案: D  
5、以下所列的C语言常量中,错误的是  
 
   (2分)  
  A. 0xFF 
  B. 1.2e0.5 
  C. 2L 
  D. '\72' 
 
  参考答案: B  
6、若已定义x和y为double型,则表达式:x=1,y=x+3/2的值是____  (2分) 
  A. 1  
  B. 2  
  C. 2.0  
  D. 2.5  
 
  参考答案: c  
7、表达式((a=3*5,a*5),a+5)的值是多少( )  
 (2分)  
  A. 20  
  B. 80  
  C. 不能确定  
  D. 15  
 
  参考答案: A  
9、若有说明语句:int a,b,c ;  
则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是  
 
 (2分)  
  A. scanf("%d%d%d",&a,&b,&c);  
  B. scanf("%d%d%d",&a,&b,&d);  
  C. scanf("%d%d%d",a,b,d);  
  D. scanf("%d%d%d",a,b,*d);  
 
  参考答案: A  
10、以下说法中正确的是  
 (2分)  
  A. #define和printf都是C语句 
  B. #define是C语句,而printf不是 
  C. printf是C语句,但#define不是 
  D. #define和printf都不是C语句 
 
  参考答案: D  
11、设有如下定义:  
int a=1,b=2,c=3,d=4,m=2,n=2;  
则执行表达式:(m=a>b)&&(n=c>d)后,n的值为______________.  
 (2分)  
  A. 1 
  B. 2 
  C. 3 
  D. 0 
 
  参考答案: B  
13、能正确表示a和b同时为正或同时为负的逻辑表达式是  
 (2分)  
  A. (a>=0‖b>=0)&&(a<0‖b<0) 
  B. (a>=0&&b>=0)&&(a<0&&b<0) 
  C. (a+b>0)&&(a+b<=0) 
  D. a*b>0 
 
  参考答案: D  
15、为避免嵌套的条件分支语句if…else的二义性,C语言规定,C程序中的  
else总是与____组成配对关系。  
 (2分)  
  A. 其上面距它最近的,并且没有其他else与其配对的if相配对 
  B. 在同一行上的if 
  C. 缩排位置相同的if 
  D. 在其之前未配对的if 
 
  参考答案: A  
16、以下程序输出结果是  
main ( )  
{ int m=5;  
if (m++ > 5) printf ("%d\n",m);  
else printf ("%d\n",m--);  
} (2分)  
  A. 7 
  B. 6 
  C. 5 
  D. 4 
 
  参考答案: B  
18、以下程序段的输出结果是_____  
int x=3;  
do  
{ printf("%3d",x-=2);}  
while (!(--x));  
 (2分)  
  A. 1  
  B. 3 0  
  C. 1 -2  
  D. 死循环  
 
  参考答案: C  
19、执行语句: for (i=1;i++ < 4;);后,变量i的值是______.  
 (2分)  
  A. 3 
  B. 4 
  C. 5 
  D. 不定 
 
  参考答案: C  
20、以下程序的输出结果是 
 
main( )  
{ int n=4;  
while(n--)printf("%d ",--n);  
} (2分)  
  A. 2 0 
  B. 3 1 
  C. 3 2 1 
  D. 2 1 0 
 
  参考答案: A  
21、设有程序段 书签 
int k=10;  
while(k=0) k=k-1;  
则下面描述中正确的是________  
 (2分)  
  A. while循环执行10次 
  B. 循环是无限循环 
  C. 循环体语句一次也不执行 
  D. 循环体语句执行一次 
 
  参考答案: C  
22、若有说明:int a[10];,则对a数组元素的正确引用是( )。 (2分)  
  A. a[10] 
  B. a[3.5] 
  C. a(5) 
  D. a[10-10] 
 
  参考答案: D  
23、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为_______(假设a[0][0]位于数组的第一个位置上)  
 (2分)  
  A. i*m+j 
  B. j*m+i 
  C. i*m+j-1 
  D. i*m+j+1 
 
  参考答案: A  
24、已知int a[][3]={1,2,3,4,5,6,7};,则数组a的第一维的大小是( )。 (2分)  
  A. 2 
  B. 3 
  C. 4 
  D. 无确定值 
 
  参考答案: B  
26、以下程序的输出结果是  
#define f(x) x*x  
main( )  
{ int a=6,b=2,c;  
c=f(a) / f(b);  
printf("%d \n",c);  
}  (2分)  
  A. 9  
  B. 6  
  C. 36  
  D. 18  
 
  参考答案: C  
28、变量的指针,其含义是指该变量的  
 (2分)  
  A. 值 
  B. 地址 
  C. 名 
  D. 一个标志 
 
  参考答案: B  
30、以下不合法的数值常量是()  
    (2分)  
  A. 011  
  B. 1e1  
  C. 8.0e0.5  
  D. 0xabcd  
 
  参考答案: C  
31、以下叙述中错误的是()  (2分)  
  A. 用户自定义的函数中可以没有return语句 
  B. 用户自定义函数中若没有return语句,则应当定义函数为void类型 
  C. C语言程序总是从main()函数开始执行 
  D. main()函数必须位于程序的开始 
 
  参考答案: D  
34、C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是____.  
 (2分)  
  A. 单向的值传递  
  B. 单纯地址传递  
  C. 值传递和地址传递都有可能  
  D. 由实参传给形参,然后由形参传回给实参,即是双向传递  
 
  参考答案: A  
35、当调用函数时,实参是一个数组名,则向函数传递的是( )。 (2分)  
  A. 数组的长度 
  B. 数组的首地址 
  C. 数组每一个元素的地址 
  D. 数组每个元素中的值 
 
  参考答案: B  
36、下列叙述不正确的是( ) (2分)  
  A. 在c程序中,%是只能用于整数运算的运算符 
  B. 在C程序中,无论是整数还是实数,都能正确无误地表示 
  C. 若a是实型变量,c程序中a=20是正确的,因此实型变量允许被整型常量赋值 
  D. 在C程序中,语句之间必须要用分号“;”分隔 
 
  参考答案: B  
38、以下可用作C语言用户标识符的是 (2分)  
  A. void,define,WORD  
  B. a3_b3,_123,IF 
  C. FOR,--abc,Case  
  D. 2a,Do,Sizeof 
 
  参考答案: B  
39、以下关于运算符优先顺序的描述中正确的是  
 (2分)  
  A. 关系运算符 < 算术运算符 < 赋值运算符 < 逻辑运算符 
  B. 逻辑运算符 < 关系运算符 < 算术运算符 < 赋值运算符 
  C. 赋值运算符 < 逻辑运算符 < 关系运算符 < 算术运算符 
  D. 算术运算符 < 关系运算符 < 赋值运算符 < 逻辑运算符 
 
  参考答案: C  
40、现有定义int a;double b;float c;char k;,则表达式a/b+c-k值的类型为: (2分)  
  A. int  
  B. double  
  C. float  
  D. char 
 
  参考答案: B  
 
 
 
 
 程序设计题(以下3题中任选2题作答,每题10分,共20分): 
1、编程序求1~120所有整数的平方和并输出结果。  (10分) 
 
  参考答案:  
main()  
{long int a,s=0;  
clrscr();  
for(a=1;a < =120;a++)  
{s=s+a*a;  
}  
printf("%ld",s);  
}   
本题答案:583220  
2、编程序求出1-4000以内能被3或者11整除数的个数。  (10分) 
 
  参考答案: 
 main()  
{  
int i,num=0;  
for(i=1;i < =4000;i++)  
{  
if((i%3==0)&&(i%11==0))  
num=num+1;  
}  
printf("\n%d",num);  
}  
 
本题答案:121  
3、编写程序,要求从键盘输入一个正整数,判断该数既是5又是7的整倍数,若是,则输出yes,否则输出no。  (10分) 
 
  参考答案:   
void main() 
{ 
int x; 
printf("please input a integer:"); 
scanf("%d",&x); 
if(x%5==0 && x%7==0) 
printf("yes\n"); 
else 
printf("no\n"); 
 
} 
 
 
                         
 单选题:(每题2分,共80分) 
 
1、C语言程序的基本单位是_______.  
 (2分)  
  A. 语句 
  B. 函数 
  C. 程序行 
  D. 字符 
 
  参考答案: B  
2、以下叙述不正确的是(  )  
 
 
 (2分)  
  A. 一个c源程序可由一个或多个函数组成  
  B. 一个C源程序必须包含一个main()函数 
  C. c程序的基本组成单位是函数  
  D. 在C程序中,注释说明只能位于一条语句的后面 
 
  参考答案: D  
3、以下选项中,非法的字符常量是( )  
 
 (2分)  
  A. '\t' 
  B. '\17' 
  C. "n" 
  D. '\xaa' 
 
  参考答案: C  
5、下面四个选项中,均是不合法的用户标识符的选项是  
 (2分)  
  A. A P_0 do 
  B. float la0 _A 
  C. b-a goto int 
  D. _123 temp int 
 
  参考答案: C  
6、若变量a、i 已正确定义,且i已正确赋值,合法的语句是  
 (2分)  
  A. a==1 
  B. ++i; 
  C. a=a++=5; 
  D. a=int(i); 
 
  参考答案: B  
7、设有以下定义:  
int x=10,y=3,z;  
则语句  
printf("%d\n",z=(x%y,x/y))  
的输出结果是_____  
 (2分)  
  A. 1 
  B. 0 
  C. 4 
  D. 3 
 
  参考答案: D  
8、设ch是char型变量,其值为A,且有下面的表达式:  
ch=(ch>='A'&&ch<='Z')?(ch+32):ch  
上面表达式的值是 (2分)  
  A. A 
  B. a 
  C. Z 
  D. z 
 
  参考答案: B  
9、设x为int型变量,则执行以下语句后,x的值为_______.  
x=10; x+=x-=x-x;  
 (2分)  
  A. 10 
  B. 20 
  C. 40 
  D. 30 
 
  参考答案: B  
10、表达式18/4*sqrt(4.0)/8值的数据类型为 (2分)  
  A. int 
  B. float 
  C. double 
  D. 不确定 
 
  参考答案: C  
11、以下程序的输出结果是_____  
main()  
{char str[12]={'s','t','r','i','n','g'};  
printf("%d\n",strlen(str));  
} (2分)  
  A. 6 
  B. 7 
  C. 11 
  D. 12 
 
  参考答案: A  
12、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是  
 (2分)  
  A. c=b=a; 
  B. (a=c)‖(b=c); 
  C. (a=c)&&(b=c); 
  D. a=c=b; 
 
  参考答案: C  
13、逻辑运算符两侧运算对象的数据类型  
 (2分)  
  A. 只能是0或1 
  B. 只能是0或非0正数 
  C. 只能是整型或字符型数据 
  D. 可以是任何类型的数据 
 
  参考答案: D  
15、在C语言中,逻辑值"真"用( )表示  
 (2分)  
  A. TRUE 
  B. 大于0的数 
  C. 非0的整数 
  D. 非0的数 
 
  参考答案: D  
16、判断字符型变量x是否是大写字母的正确的表达式______.  
 (2分)  
  A. 'A'<=x<='Z' 
  B. (x>=A)&&(x<=Z) 
  C. ('A'<=x)&&('Z'=>x) 
  D. (x>='A')&&(x<='Z') 
 
  参考答案: D  
19、以下叙述正确的是( )  
 (2分)  
  A. do-while语句构成的循环不能用其它语句构成的循环来代替 
  B. do-while语句构成的循环只能用break语句退出(错误,不符合while条件的) 
  C. 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 
  D. 用do-while语句构成的循环,在while后的表达式为零时结束循环。 
 
  参考答案: D  
20、在下列选项中,构成死循环的程序段是  
 (2分)  
  A. int i=100; 
  B. for(;;); 
  C. int k=1000; 
  D. int s=36; 
 
  参考答案: B  
21、假定a和b为int型变量,则执行以下语句后b的值为  
a=1; b=10;  
do  
{ b=b-a; a++; }  
while (b-- > 0);  
 (2分)  
  A. -3 
  B. -2 
  C. -1 
  D. -4 
 
  参考答案: D  
23、在C语言中,当while语句中的条件为( )时,结束该循环.  
 (2分)  
  A. 0 
  B. 1 
  C. TRUE 
  D. 非0 
 
  参考答案: A  
25、对以下说明语句的正确理解是__________  
int a[10]={6,7,8,9,10};  
 (2分)  
  A. 将5个初值依次赋给a[1]至a[5] 
  B. 将5个初值依次赋给a[0]至a[4] 
  C. 将5个初值依次赋给a[6]至a[10] 
  D. 因为数组长度与初值的个数不相同,所以此语句不正确 
 
  参考答案: B  
26、以下对二维数组a的正确说明是  
 (2分)  
  A. int a[3][] 
  B. float a(3,4) 
  C. double a[1][4] 
  D. float a(3)(4) 
 
  参考答案: C  
27、合法的数组说明语句是( )。 (2分)  
  A. int a[]="string";(错在用字符串对整型数组赋值) 
  B. int a[5]={O,1,2,3,4,5}; 
  C. char a="string"; 
  D. char a[]={0,1,2,3,4,5}; 
 
  参考答案: D  
31、在16位IBM-PC机上使用C语言,若有如下定义  
struct data  
{int i;  
char ch;  
double f;  
}b;  
则结构变量b占用内存的字节数是  
 (2分)  
  A. 1 
  B. 2 
  C. 8 
  D. 11 
 
  参考答案: D  
32、在位运算中,操作数每右移一位,其结果相当于  
 (2分)  
  A. 操作数乘以2 
  B. 操作数除以2 
  C. 操作数乘以4 
  D. 操作数除以4 
 
  参考答案: B  
33、以下叙述中不正确的是  
 (2分)  
  A. 预处理命令行都必须以#号开始  
  B. 在程序中凡是以#号开始的语句行都是预处理命令行  
  C. 以下是正确的宏定义 #define IBM_PC 
  D. C程序在执行过程中对预处理命令行进行处理 (应该是在编译前) 
 
  参考答案: D  
36、C程序中,若函数调用采用传值方式,则( )  
 (2分)  
  A. 实参和虚参各自占有存储单元 
  B. 实参和虚参共享存储单元 
  C. 由用户指定 
  D. 由计算机随机确定 
 
  参考答案: A  
37、在一个源文件中定义的外部变量的作用域为( )。 (2分)  
  A. 本文件的全部范围 
  B. 本程序的全部范围 
  C. 本函数的全部范围 
  D. 从定义该变量的位置开始至本文件结束 
 
  参考答案: B  
39、一个C语言程序总是从(  )开始执行  (2分)  
  A. 主过程  
  B. 主函数  
  C. 子程序  
  D. 主程序 
 
  参考答案: B  
40、C语言中最简单的数据类型包括:__  
 (2分)  
  A. 整型,实型,逻辑型 
  B. 整型,字符型,逻辑型 
  C. 整型,实型,字符型  
  D. 整型,实型,逻辑型,字符型 
 
  参考答案: C  
 
 
 
 
 程序设计题(以下3题中任选2题作答,每题10分,共20分): 
 
1、编程序求2+4+8+16+32+…这样的数之和。如果累加数大于3000时,则程序终止并输出结果。  (10分) 
 
  参考答案:   
main()  
{  
int i=2,sum=0;  
while(sum < =3000)  
{  
sum=sum+i;  
i=i*2;  
}  
printf("\n%d",sum);  
}  
本题答案:4094  
2、编程序求1~100能被7整除的个数。  (10分) 
 
  参考答案: 
 main()  
{int a,n=0;  
for(a=1;a < =10;a++)  
{if(a%7==0)  
n++;  
}  
printf("%d",n);  
}   
本题答案:71  
3、编写程序,要求从键盘输入一个整数,打印出它是奇数还是偶数?  (10分) 
 
  参考答案:   
void main() 
{ 
int x; 
printf("please input a integer:"); 
scanf("%d",&x); 
if(x%2==1) 
printf("%d是奇数\n",x); 
else 
printf("%d是偶数\n",x); 
} 
 
 
                         
 单选题:(每题2分,共80分) 
 
1、C语言可执行程序的开始执行点是( )  
 (2分)  
  A. 程序中的一条可执行语句 
  B. 程序中第一个函数 
  C. 程序中的main函数 
  D. 包含文件中的第一个函数 
 
  参考答案: C  
2、C语言程序的基本单位是( )。  (2分)  
  A. 函数 
  B. 过程 
  C. 子程序 
  D. 子例程 
 
  参考答案: A  
5、C语言中合法的字符常量是____ (2分)  
  A. '\084' 
  B. '\X43' 
  C. 'ab' 
  D. "\0" 
 
  参考答案: B  
6、以下不正确的叙述是  
 (2分)  
  A. 在C程序中,逗号运算符的优先级最低 
  B. 在C程序中,APH和aph是两个不同的变量 
  C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变 
  D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值 
 
  参考答案: D  
10、在C语言中,运算对象必须是整型数的运算符是____ (2分)  
  A. % 
  B. \ 
  C. %和\ 
  D. ** 
 
  参考答案: A  
13、为了避免在嵌套的条件语句if…else中产生二义性,C语言规定:else子句总是与( )配对。 (2分)  
  A. 缩排位置相同的if 
  B. 其之前最近的if 
  C. 其之后最近的if 
  D. 同一行上的if 
 
  参考答案: B  
14、下面程序的输出是  
main()  
{ int x=10,y=3;  
printf("%d\n",y=x/y);} (2分)  
  A. 0 
  B. 1 
  C. 3 
  D. 不确定的值 
 
  参考答案: C  
16、C语言的对语句中用作判断的表达式一般为____  
 (2分)  
  A. 关系表达式 
  B. 逻辑表达式 
  C. 算术表达式 
  D. 逻辑表达式和关系表达式 
  E. 关系或逻辑表达式 
 
  参考答案: D  
17、表示关系X<=Y<=Z的C语言表达式为_____.  
 (2分)  
  A. (X < =Y)&&(Y < =Z) 
  B. (X < =Y)AND(Y < =Z) 
  C. (X < =Y < =Z) 
  D. (X < =Y)&(Y < =Z) 
 
  参考答案: A  
19、读下列程序:  
#include  
main()  
{  
int x,y;  
scanf(”%d”,&x);  
y=0;  
if(x>=0)  
{if(x>0)y=1;}  
else y=-1;  
prinff(”%d”,y);}  
当从键盘输入32时,程序输出结果为( )。 (2分)  
  A. 0 
  B. 1 
  C. -1 
  D. 不确定 
 
  参考答案: B  
20、执行下面语句后的输出为( )  
int i= -1;  
if (i < =0)printf("****\n")  
else printf("%%%%\n")  
 (2分)  
  A. **** 
  B. %%%% 
  C. %%%%C 
  D. 有语法错,不能执行 
 
  参考答案: D  
23、b’在内存中占____个字节。“b”在内存中占____个字节 (2分)  
  A. 1和2 
  B. 1 
  C. 3 
  D. 2 
 
  参考答案: A  
24、以下描述中正确的是  
 (2分)  
  A. 由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 
  B. do-while 循环由do开始,用while结束,在 while(表达式)后面不能写分号 
  C. 在 do-while 循环体中,一定要有能使 while 后面表达式的值变为零(“假”)的操作 
  D. do-while 循环中,根据情况可以省略 while 
 
  参考答案: C  
25、对 for(表达式1; ;表达式3) 可理解为  
 (2分)  
  A. for(表达式1;0;表达式3) 
  B. for(表达式1;1;表达式3) 
  C. for(表达式1;表达式1;表达式3) 
  D. for(表达式1;表达式3;表达式3) 
 
  参考答案: B  
27、在c语言中,一维数组的定义方式为:类型说明符数组名( )。 (2分)  
  A. [常量表达式] 
  B. [整型表达式] 
  C. [整型常量]或[整型表达式] 
  D. [整型常量] 
 
  参考答案: A  
28、以下程序的输出结果是  
 
main( )  
{ int i,x[3][3]={9,8,7,6,5,4,3,2,1};  
for(i=0;i<4;i+=2)printf("%d ",x[i][i]);  
} (2分)  
  A. 5 2 
  B. 9 1 
  C. 5 3 
  D. 9 7 
 
  参考答案: B  
29、C语言规定,在一个源程序中,main函数的位置 (2分)  
  A. 必须在最开始 
  B. 必须在系统调用的库函数的后面  
  C. 可以任意  
  D. 必须在最后  
 
  参考答案: C  
31、若x为整型变量,p是指向整型数据的指针变量,则正确的赋值表达式是()。 (2分)  
  A. p=&x 
  B. p=x  
  C. *p=&x 
  D. *p=*x 
 
  参考答案: A  
33、当说明一个结构体变量时系统分配给它的内存是  
 (2分)  
  A. 各成员所需内存量的总和 
  B. 结构中第一个成员所需内存量 
  C. 成员中占内存量最大者所需的容量 
  D. 结构中最后一个成员所需内存量 
 
  参考答案: A  
34、在位运算中,操作数每左移一位,其结果相当于  
 (2分)  
  A. 操作数乘以2 
  B. 操作数除以2 
  C. 操作数除以4 
  D. 操作数乘以4 
 
  参考答案: A  
35、以下叙述中错误的是 (2分)  
  A. C语句必须以分号结束  
  B. 复合语句在语法上被看作一条语句  
  C. 程序可以有两个主函数  
  D. 赋值表达式末尾加分号就构成赋值语句  
 
  参考答案: C  
36、下列说法正确的是________.  
 (2分)  
  A. 调用函数时,实参与形参可以共用内存单元 
  B. 调用函数时,实参的个数、类型和顺序与形参可以不一致 
  C. 调用函数时形参可以是表达式 
  D. 调用函数时,将为形参分配内存单元 
 
  参考答案: D  
37、返回值为void的函数,其含义是____.  
 (2分)  
  A. 调用函数之后,被调用的函数没有返回值 
  B. 调用函数之后,被调用的函数不返回 
  C. 调用函数之后,被调用的函数的返回值为任意的类型 
  D. 以上三种说法都是错误的 
 
  参考答案: A  
38、C语言程序由函数组成。它的____。  
 (2分)  
  A. 主函数必须在其他函数之前,函数内可以嵌套定义函数 
  B. 主函数可以在其他函数之前,函数内不可以嵌套定义函数 
  C. 主函数必须在其他函数之前,函数内不可以嵌套定义函数 
  D. 主函数必须在其他函数之后,函数内可以嵌套定义函数 
 
  参考答案: B  
39、若调用一个函数,且此函数中没有return语句,则正确的说法是:该函数  
 
 (2分)  
  A. 没有返回值 
  B. 返回若干个系统默认值 
  C. 能返回一个用户所希望的值 
  D. 返回一个不确定的值 
 
  参考答案: D  
40、以下叙述中错误的是________。  (2分)  
  A. C语言编写的函数源程序,其文件名后缀可以是.C  
  B. C语言编写的函数都可以作为一个独立的源程序文件  
  C. C语言编写的每个函数都可以进行独立的编译并执行  
  D. 一个C语言程序只能有一个主函数  
 
  参考答案: C  
 
 
 
 
 程序设计题(以下3题中任选2题作答,每题10分,共20分): 
 
1、编程序求1~80所有整数的平方和并输出结果。  (10分) 
 
  参考答案: 
 main()  
{  
int i,x;  
long sum=0;  
for(i=1;i < =80;i++)  
{  
x=i*i;  
sum=sum+x;  
}  
printf("%ld",sum);  
}  
参考答案:173880  
2、编程序统计300~500能被3整除的个数。  (10分) 
 
  参考答案: 
 main()  
{  
int a;  
int i=0;  
for(a=300;a < =500;a++)  
{  
if(a%3==0)  
i=i+1;  
}  
printf("%d",i);  
 
}  
 
 
参考答案是:67  
 
 
                         
 单选题:(每题2分,共80分) 
 
1、以下选项中合法的用户标识符是( ) (2分)  
  A. int 
  B. a# 
  C. 5mem 
  D. _243 
 
  参考答案: D  
2、C程序是( )  
 (2分)  
  A. 顺序执行  
  B. 从main函数开始  
  C. 从函数体开始  
  D. 任意语句  
 
  参考答案: B  
5、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是  
 (2分)  
  A. 7 
  B. 8 
  C. 6 
  D. 2 
 
  参考答案: B  
6、C语言中运算对象必须是整型的运算符是  
 
 (2分)  
  A. %= 
  B. / 
  C. = 
  D. 〈= 
 
  参考答案: A  
7、 若有以下程序段,  
int c1=1,c2=2,c3;  
c3=1.0/c2*c1;  
则执行后,c3中的值是  
 (2分)  
  A. 0 
  B. 0.5 
  C. 1 
  D. 2 
 
  参考答案: A  
16、若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是  
 (2分)  
  A. (exp==0) 
  B. (exp!=0)  
  C. (exp==1)  
  D. (exp!=1)  
 
  参考答案: B  
18、下面的程序是______  
main()  
{ int x=3,y=0,z=0;  
if (x==y+z) printf("****");  
else printf("####");  
} (2分)  
  A. 有语法错误不能过通过编译 
  B. 输出**** 
  C. 可能通过编译,但是不能通过连接,因而不能运行 
  D. 输出#### 
 
  参考答案: D  
21、有以下程序段  
int k=0  
while(k=1)k++;  
while 循环执行的次数是  
 
 (2分)  
  A. 无限次 
  B. 有语法错,不能执行 
  C. 一次也不执行 
  D. 执行1次 
 
  参考答案: A  
22、C语言中 while 和 do-while 循环的主要区别是  
 (2分)  
  A. do-while 的循环体至少无条件执行一次 
  B. while的循环控制条件比 do-while的循环控制条件更严格 
  C. do-while 允许从外部转到循环体内 
  D. do-while 的循环体不能是复合语句 
 
  参考答案: A  
27、若有以下语句,则正确的描述是( )。  
char x[]=”12345”;  
char y[]={’1’,’2’,’3’,’4’,’5’}; (2分)  
  A. x数组和y数组的长度相同 
  B. x数组长度大于y数组长度 
  C. x数组长度小于y数组长度 
  D. x数组等价于y数组 
 
  参考答案: B  
30、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是  
main()  
{int *p,*q,a,b;  
p=&a;  
printf("input a:");  
scanf("%d",*p);  
}  
 (2分)  
  A. *p表示的是指针变量p的地址 
  B. *p表示的是变量a的值,而不是变量a的地址 
  C. *p表示的是指针变量p的值 
  D. *p只能用来说明p是一个指针变量 
 
  参考答案: B  
33、表达式:10!=9的值是___ (2分) 书签!!!!! 
  A. true  
  B. 非零值  
  C. 0  
  D. 1 
 
  参考答案: D  
39、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符  
 (2分)  
  A. 必须为字母 
  B. 必须为下划线 
  C. 必须为字母或下划线 
  D. 可以是字母,数字和下划线中任一字符 
 
  参考答案: C  
 程序设计题(以下3题中任选2题作答,每题10分,共20分): 
1、编程序求1+3+5+7+9+…这样的数之和。如果累加数大于750时,则程序终止并输出结果。  (10分) 
 
  参考答案:  
main()  
{  
int i=1,sum=0;  
while(sum < =750)  
{  
sum=sum+i;  
i=i+2;  
}  
printf("\n%d",sum);  
}  
 
参考答案: 784  
2、编程序求1~600能被11整除的个数。  (10分) 
 
  参考答案:  
main()  
{  
int i,sum=0;  
for(i=1;i < =600;i++)  
if(i%11==0)  
sum=sum+1;  
printf("\n%d",sum);  
}  
参考答案:54  
3、编写程序,要求从键盘输入一个三位数,判断其是否为水仙花数。(水仙花数是指一个三位数,它的各位数字的立方和等于其本身。)  (10分) 
 
  参考答案:   
void main() 
{ 
int x; 
int a,b,c;//a,b,c分别表示x的个位十位和百位 
printf("please input a integer:"); 
scanf("%d",&x); 
a=x%10; 
b=x/10%10; 
c=x/100; 
if(a*a*a+b*b*b+c*c*c==x) 
printf("%d是水仙花数\n",x); 
else 
printf("%d不是水仙花数\n",x); 
} 
 
 
                         
 单选题:(每题2分,共80分) 
 
2、C语言规定:在一个源程序中,main()函数的位置( ) (2分)  
  A. 必须在最开始 
  B. 必须在系统调用的库函数的后面 
  C. 可以任意 
  D. 必须在最后 
 
  参考答案: C  
4、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是  
 (2分)  
  A. INPUT x、y、z; 
  B. scanf("%d%d%d",&x,&y,&z); 
  C. scanf("%d%d%d",x,y,z); 
  D. read("%d%d%d",&x,&y,&z); 
 
  参考答案: B  
9、以下程序的输出结果是  
main( )  
{ int a=-1,b=4,k;  
k=(++a<0)&&!(b--<=0);  
printf("%d%d%d\n",k,a,b);  
}  
 (2分)  
  A. 1 0 4 
  B. 1 0 3 
  C. 0 0 3 
  D. 0 0 4 
 
  参考答案: D  
10、表达式:10!=9的值是___  
 (2分)  
  A. true  
  B. 非零值  
  C. 0  
  D. 1  
 
  参考答案: D  
12、设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是______.  
 (2分)  
  A. 把x和y按从大到小排列 
  B. 把x和y按从小到大排列 
  C. 无确定结果 
  D. 交换x和y中的值 
 
  参考答案: D  
13、有如下程序  
 
main( )  
 
{  
int y=3,x=3,z=1;  
printf("%d %d\n",(++x,y++),z+2);  
}  
 
运行该程序的输出结果是  
 
 (2分)  
  A. 3 4 
  B. 4 2 
  C. 4 3 
  D. 3 3 
 
  参考答案: D  
14、设正x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是  
printf("%d,%d\n",x--,--y); (2分)  
  A. 10,3 
  B. 9,3 
  C. 9,2 
  D. 10,2 
 
  参考答案: D  
16、设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,  
则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为:  
 
 
 
 (2分)  
  A. 0  
  B. 1  
  C. 2  
  D. 3  
 
  参考答案: C  
28、若有以下定义和语句:  
   int a[10]={1,2,3,4,5,6,7,8,9,10},p=a;  
   则不能表示a数组元素的表达式是( )  
   (2分)  
  A. p[5] 
  B. a[10] 
  C. a[5]   
  D. a[p-a] 
 
  参考答案: B  
30、以下程序的输出结果为( )。  
#include  
#define SQR(x) x*x .  
main()  
{  
int a,k=3;  
a=SQR(k+1);  
printf(”%d\n”,a);  
}  (2分)  
  A. 6  
  B. 10  
  C. 8  
  D. 7 
 
  参考答案: D  
34、sizeof(float)是  
 (2分)  
  A. 一种函数调用 
  B. 一个不合法的表达式 
  C. 一个整型表达式 
  D. 一个浮点表达式 
 
  参考答案: C  
35、当顺利执行了文件关闭操作时,fclose函数的返回值是  
 (2分)  
  A. -1 
  B. TRUE 
  C. 0 
  D. 1 
 
  参考答案: C  
38、C语言中,若函数类型未显式说明,则隐含类型为( )  
 (2分)  
  A. int  
  B. char  
  C. void  
  参考答案: A  
39、C语言中____函数的递归调用。  
 (2分)  
  A. 允许  
  B. 不允许 
  C. 由用户自己而定 
  D. 不确定 
 
  参考答案: A  
 程序设计题(以下3题中任选2题作答,每题10分,共20分): 
1、求在1000以内被17或者23整除的正整数数的个数。  (10分) 
  参考答案: 
 main()  
{  
int i,m;  
m=0;  
for(i=1;i < =1000;i++)  
{  
if(i%17==0||i%23==0)  
m++;  
}  
printf("%d",m);  
return 0;  
}  
 
 
 
 
本题答案:99  
2、编写程序,求在10~1000之间所有能被4除余3,被7除余4,被9除余4的数之和。  (10分) 
 
  参考答案:  
 main()  
{  
int a;  
int sum=0;  
for(a=10;a < =1000;a++)  
{  
if((a%4==3)&&(a%7==4)&&(a%9==4))  
sum=sum+a;  
}  
printf("%d",sum);  
}  
 
参考答案是:1780  
 
 
                         
 单选题:(每题2分,共80分) 
 
2、算法的有穷性事指 (2分)  
  A. 算法程序的运行时间是有限的 
  B. 算法程序所处理的数据量是有限的 
  C. 算法的长度是有限的 
  D. 算法只能被有限用户使用 
 
  参考答案: A  
6、设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为  
 (2分)  
  A. float 
  B. char 
  C. int 
  D. double 
 
  参考答案: D  
7、若变量c为char类型,能正确判断出c为小写字母的表达式是  
 (2分)  
  A. 'a'<=c<= 'z' 
  B. (c>= 'a')||(c<= 'z') 
  C. ('a'<=c)and ('z'>=c) 
  D. (c>= 'a')&&(c<= 'z') 
 
  参考答案: D  
11、若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是  
 
 (2分)  
  A. 1 
  B. 2 
  C. 2.0 
  D. 2.5 
 
  参考答案: C  
12、以下定义和语句:  
 char cl='b',c2='e';  
 printf(″%d,%c\n″,c2-c1,c2-'a'+'A');  
则输出结果是:  
  (2分)  
  A. 2,M 
  B. 3,E 
  C. 2,E 
  D. 输出项与对应的格式控制不一致,输出结果不确定 
 
  参考答案: B  
21、在C语言中的if语句中,用作判断的表达式为()  
 (2分)  
  A. 关系表达式 
  B. 逻辑表达式 
  C. 算数表达式 
  D. 任意表达式 
 
  参考答案: D  
24、18、字符形式"\b"的功能是( )  
 (2分)  
  A. 换行  
  B. 回车 
  C. 退格  
  D. 横向跳格  
 
  参考答案: C  
26、以下数组定义中不正确的是  
 (2分)  
  A. int a[2][3]; 
  B. int b[][3]={0,1,2,3}; 
  C. int c[100][100]={0}; 
  D. int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 
 
  参考答案: D  
29、以下叙述中不正确的是  
 (2分)  
  A. 预处理命令行都必须以#号开始 
  B. 在程序中凡是以#号开始的语句行都是预处理命令行 
  C. C程序在执行过程中对预处理命令行进行处理 
  D. 以下是正确的宏定义 #define IBM_PC 
 
  参考答案: C  
32、已知学生记录描述为  
struct student  
{int no;  
char name[20];  
char sex;  
struct  
{int year;  
int month;  
int day;  
}birth;  
};  
struct student s;  
设变量s中的“生日”应是“1984年11月11日 (2分)  
  A. year=1984;month=11;day=11; 
  B. birth.year=1984;birth.month=11;birth.day=11; 
  C. s.year=1984;s.month=11;s.day=11; 
  D. s.birth.year=1984;s.birth.month=11;s.birth.day=11; 
 
  参考答案: D  
34、若有以下说明和语名:  
int a=5  
++a;  
此处表达式++a的值是____  
 (2分)  
  A. 7 
  B. 6 
  C. 5 
  D. 4 
 
  参考答案: B  
35、C语言中函数返回值的类型是有______决定的。  
 (2分)  
  A. 调用该函数的主调函数类型 
  B. return语句中的表达式类型 
  C. 定义函数时所指定的返回函数值类型 
  D. 调用函数时临时 
 
  参考答案: C  
36、在一个C源程序文件中,若要定义一个只允许本源文件中所用的函数的全局变量,则变量需要使用的存储类别是____  
 (2分)  
  A. Auto  
  B. static 
  C. register 
  D. extern 
 
  参考答案: B  
38、C语言中函数返回值的类型由( )决定。 (2分)  
  A. return语句中的表达式类型 
  B. 调用函数的主调函数类型 
  C. 调用函数时的临时类型 
  D. 定义函数时所指定的函数类型 
 
  参考答案: D  
39、以下叙述中错误的是 (2分)  
  A. C语言的可执行程序是由一系列机器指令构成的 
  B. 用C语言编写的源程序不能直接在计算机上运行 
  C. 通过编译得到的二进制目标程序需要连接才可以运行 
  D. 在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件 
 
  参考答案: D  
40、下列变量名合法的是( )  
 (2分)  
  A. #1 
  B. $567 
  C. a-b 
  D. m_number 
 
  参考答案: D  
 
 
 
 
 程序设计题(以下3题中任选2题作答,每题10分,共20分): 
1、编程序统计150~400能被3整除的个数。  (10分) 
 
  参考答案: 
 main()  
{  
int a;  
int i=0;  
for(a=150;a < =400;a++)  
{  
if(a%3==0)  
i=i+1;  
}  
printf("%d",i);  
 
}  
 
参考答案是:84  
2、编程序求1到1500之间所有偶数之和,并输出结果。  (10分) 
 
  参考答案: 
 main()  
{  
int i=2,sum=0;  
while(i < =1500)  
{  
sum=sum+i;  
i=i+2;  
}  
printf("\n%d",sum);  
}  
本题答案:563250  
 
 
                         
 单选题:(每题2分,共80分) 
 
4、下列描述中不正确的是  
 (2分)  
  A. 字符型数组中可以存放字符串 
  B. 可以对字符型数组进行整体输入、输出 
  C. 可以对整型数组进行整体输入、输出 
  D. 不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值 
 
  参考答案: C  
6、若变量已正确定义并赋值,下面符合C语言语法的表达式是 (2分)  
  A. a:=b+1 
  B. a=b=c+2 
  C. int 18.5%3 
  D. a=a+7:c+b 
 
  参考答案: B  
8、若有以下定义和语句:  
char c1='b',c2='e';  
printf("%d,%c\n",c2-c1,c2-'a'+'A')  
则输出结果是_______  
 (2分)  
  A. 2,M  
  B. 3,E  
  C. 2,e  
  D. 输出结果不确定  
 
  参考答案: B  
18、  
下列错误的语句是() (2分)  
  A. if(a>b)printf(”%d“,a) 
  B. if(&&);a=m; 
  C. if(1)a=m;else a=n; 
  D. if(a>0);{else a=n; 
 
  参考答案: B  
22、在while(x)语句中的x与下面条件表达式等价的是( )。 (2分)  
  A. x==0 
  B. x==1 
  C. x!=0 
  D. x!=1 
 
  参考答案: C  
25、假定int类型变量占用两个字节,则数组x[10]在内存中所占字节数是( )  (2分)  
  A. 3  
  B. 6  
  C. 10  
  D. 20  
 
  参考答案: D  
27、在C语言中,引用数组元素时,其数组下标的数据类型允许是  
 (2分)  
  A. 整型常量 
  B. 整型表达式 
  C. 整型常量或整型表达式 
  D. 任何类型的表达式 
 
  参考答案: A  
32、C语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是  
 (2分)  
  A. 地址传递  
  B. 单向值传递 
  C. 由实参传给形参,再由形参传回给实参 
  D. 由用户指定的传递方式  
 
  参考答案: B  
35、在c语言程序中( )。 (2分)  
  A. 函数的定义可以嵌套,但函数的调用不可以嵌套 
  B. 函数的定义和调用均可以嵌套 
  C. 函数的定义和调用均不可以嵌套 
  D. 函数的定义不可以嵌套,但函数的调用可以嵌套 
 
  参考答案: D  
37、c语言中形参的默认存储类别是( )。 (2分)  
  A. 自动(auto) 
  B. 静态(static) 
  C. 寄存器(register) 
  D. 外部(extem) 
 
  参考答案: A  
40、C语言中,double类型数据占( )个字节,char类型数据占( )个字节  
 (2分)  
  A. 1 
  B. 2 
  C. 4 
  D. 8和1 
 
  参考答案: D  
 
 
 
 
 程序设计题(以下3题中任选2题作答,每题10分,共20分): 
2、编程序求2+4+8+16+32+…这样的数之和。如果累加数大于1500时,则程序终止并输出结果。  (10分) 
 
  参考答案:  
main()  
{  
int i=2,sum=0;  
while(sum < =1500)  
{  
sum=sum+i;  
i=i*2;  
}  
printf("\n%d",sum);  
}  
本题答案:2046  
 
 
                         
 单选题:(每题2分,共80分) 
 
1、在C语言中,数字029是一个() (2分)  
  A. 八进制数 
  B. 十六进制数 
  C. 十进制数 
  D. 非法数 
 
  参考答案: D  
2、算法具有5个特性,以下选项中不属于算法特性的是( )  (2分)  
  A. 有穷性  
  B. 简洁性  
  C. 可行性  
  D. 确定性  
 
  参考答案: B  
7、若t为double类型,表达式t=1,t+5,t++执行完后,t的值是_2.0_ (2分)  
  A. 1 
  B. 6.0 
  C. 2.0 
  D. 1.0 
 
  参考答案: C  
11、设有int I=10,j=10;则printf("%d,%d\n",++I,j--)的输出是  
 (2分)  
  A. 11, 10 
  B. 9 10 
  C. 10 9 
  D. 10,9 
 
  参考答案: A  
13、已知x=43,ch='A',y=0;则表达式(x > = y&&ch < 'B'&&!y)的值是  
 (2分)  
  A. 0 
  B. 语法错 
  C. 1 
  D. “假” 
 
  参考答案: C  
20、定义如下变量:  
int n=10  
则下列循环的输出结果是______  
 
while (n > 7)  
{  
n--;  
printf("%d\n",n);  
}  
 (2分)  
  A. 10 9 8 
  B. 9 8 7 
  C. 10 9 8 7 
  D. 9 8 7 6 
 
  参考答案: B  
21、当执行以下程序段时  
 
x=-1;  
do { x=x*x;} while(!x); (2分)  
  A. 循环体将执行一次 
  B. 循环体将执行两次 
  C. 循环体将执行无限次 
  D. 系统将提示有语法错误 
 
  参考答案: A  
30、设 int b=2;表达式b/(b*2)的值是________.  
 
  A. 0 
  B. 0.5 
  C. 0.500000 
  D. 0.000000 
 
  参考答案: A  
37、以下选项中合法的标识符是________。 (2分)  
  A. 1_1  
  B. 2013-1-1 
  C. _11  
  D. 1_ _ 
 
  参考答案: C  
38、有以下程序 #include void fun(char*c,int d) { *c=*c+1;d=d+1; printf("%c,%c,",*c,d); } main() { char b='a',a='A'; fun(&b,a); printf("%c,%c\n",b,a); } 程序运行后的输出结果是 (2分)  
  A. b,B,b,A  
  B. b,B,B,A 
  C. a,B,B,a  
  D. a,B,a,B 
 
  参考答案: A  
39、以下选项中,不能作为合法常量的是 (2分)  
  A. 1.23E+05 
  B. 1.23E+05 
  C. 1.234e0.5  
  D. 1.23E+00 
 
  参考答案: C  
40、设有定义int a;float b;,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876<空格> 854.0<回车>,a和b的值分别是 (2分)  
  A. 876和543.000000 
  B. 87和6.000000 
  C. 87和543.000000 
  D. 76和543.000000 
 
  参考答案: B  
 
 
 
 
 程序设计题(以下3题中任选2题作答,每题10分,共20分): 
1、编程序统计1~1000能被3整除的数的个数。  (10分) 
 
  参考答案: 
 main()  
{  
int a;  
int i=0;  
for(a=1;a < =1000;a++)  
{  
if(a%3==0)  
i=i+1;  
}  
printf("%d",i);  
 
}  
 
参考答案是:333  
 
333  
2、编程序求出1-6000以内能被23整除的整数之和。  (10分) 
 
  参考答案: 
 main()  
{  
int i;  
long num=0;  
for(i=1;i < =6000;i++)  
{  
if(i%23==0)  
num=num+i;  
}  
printf("\n%ld",num);  
}  
 
本题答案:780390  
 
 
                         
 单选题:(每题2分,共80分) 
 
1、以下说法中正确的是( )  
 (2分)  
  A. C语言程序总是从第一个的函数开始执行 
  B. 在C语言程序中,要调用的函数必须在main()函数中定义 
  C. C语言程序总是从main()函数开始执行 
  D. C语言程序中的main()函数必须放在程序的开始部分 
 
  参考答案: C  
2、以下叙述中错误的是( ) (2分)  
  A. 算法正确的程序最终一定会结束  
  B. 算法正确的程序可以有零个输出 
  C. 算法正确的程序可以有零个输入 
  D. 算法正确的程序对相同的输入一定有相同的结果 
 
  参考答案: B  
4、下面四个选项中,均是合法整型常量的选项是  
 (2分)  
  A. 160 -0xffff 011 
  B. -0xcdf 01a 0xe 
  C. -0x46a 2e5 0x 
  D. -0x48a 2e5 0x 
 
  参考答案: A  
6、以下选项中合法的字符常量是 (2分)  
  A. "B"(字符串常量) 
  B. '\010' 
  C. 68 
  D. D 
 
  参考答案: B  
7、设 int x=1, y=1; 表达式(!x||y--)的值是  
 
 (2分)  
  A. 0 
  B. 1 
  C. 2 
  D. -1 
 
  参考答案: B  
9、设A,B和C都是int型变量,且A=3,B=4,C=5,  
则下列 表达式中,值为0的表达式是:  
 (2分)  
  A. 'A'&&'B' 
  B. A < =B 
  C. A||B+C&&BC 
  D. ((A= 'A' && CH < = 'Z')? (CH +32):CH 
 
  参考答案: D  
11、以下程序的输出结果是  
main( )  
{ int a=12,b=12;  
printf("%d%d\n",--a,++b);  
} (2分)  
  A. 10 10 
  B. 12 12 
  C. 11 10 
  D. 11 13 
 
  参考答案: D  
12、以下程序的输出结果是  
main()  
{ char c='z';  
printf("%c",c-25);  
}  
 
 (2分)  
  A. a 
  B. Z 
  C. z-25 
  D. y 
 
  参考答案:  A  
22、若i为整型变量,则以下循环执行次数是  
for(i=2;i==0;) printf("%d",i--);  
 (2分)  
  A. 无限次 
  B. 0次 
  C. 1次 
  D. 2次 
 
  参考答案: B  
23、getchar函数的参数个数是( )。 (2分)  
  A. 1 
  B. 0 
  C. 2 
  D. 任意 
 
  参考答案: B  
 
 |