一、单项选择题(本大题共15小题,每小题2分,共30分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.函数调用语句“f((e1,e2),(e3,e4,e5))”中参数的个数是( )
A.1 B.2
C.3 D.5
2.不正确的标识符是( )
A._a2 B.2ai
C.a2_i D.INt
3.若int a={1,2,3},*p;则下列赋值语句中正确的是( )
A.p= B.*p=a;
C.*(a+1)=a; D.p=a+1
4. C程序在作逻辑运算时判断操作数真、假的表述中,正确的是( )
A.0为假,非0为真 B.只有1为真
C.-1为假,1为真 D.0为真,非0为假
5.若p1、p2都是指向整型的指针,p1已经指向数量x,要使p2也指向x,正确的是( )
A.p2=p1; B.p2=**p1;
C.p2= D.p2=*p1;
6.定义一个有4个元素的一维整型数组,正确的是( )
A.float a; B.int a={1,2,3,4,5};
C.int a={1,2,3}; D.int a={1}
7.若变量a,b已经正确定义并赋值,符合C语言语法的表达式是( )
A.a2+b B.a*a+b
C.a×a+b D.a a+b
8.算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为( )
A.算术运算、赋值运算、关系运算
B.算术运算、关系运算、赋值运算
C.关系运算、赋值运算、算术运算
D.关系运算、算术运算、赋值运算
9.表达式strcmp(“3.14”,“3.278”)的值是一个( )
A.非零整数 B.浮点数
C.0 D.字符
10.执行下列语句printf(“%d”,‘a’= =‘A’)后输出为( )
A.1 B.语法错
C.0 D.97
11.若数组定义为int a ;则下列哪个表达式是错误的?( )
A.*a B.a
C. D.++a
12.若定义char aP=“95”,b=“windows”;则语句printf(“%s”,strcry(a,b));的输出结果为( )
A.windows95 B.windows
C.95 D.95windows
13.求一个双精度实数的绝对值,应该调用函数( )
A.sqrt B.pow
C.abs D.fabs
14.表达式10%2值是( )
A.0 B.1
C.5 D.5.0
15.若变量已正确定义,表达式(j=3,j++)的值是( )
A.3 B.4
C.5 D.0
二、判断题(判断下列各题,正确的在题后括号内打“√”,错的打“×”。本大题共5小题,每小题2分,共10分)
16.主函数可以分为两个部分:主函数说明部分和主函数体。 ( )
17.函数的定义和函数的调用均可以嵌套。 ( )
18.在C语言中,当我们定义了数组int a;则数组元素的下标从1到5. ( )
19.在C语言中,“A”占两个字节,而‘A’占一个字节。 ( )
20.程序中定义的整型变量的初值都为0. ( )
三、程序填空题(本大题共2小题,共6个空格,每空4分,共24分)
请在每小题的空格中填上正确答案。错填、不填均无分。
21.下面程序调用swap函数交换a和b的值,并输出交换后的a和b的值。程序的输出结果是:After Call Function Swap 5,9.
#include<stdio.h>
void main(){
int x=9,y=5;
swap( ① );
printf(“After Call Function Swap %d, %d”,x,y);
}
swap( ② ){
int temp;
temp=*x;
③ ;
*y=temp; }
22. 输入一个正整数后,输出该数的位数。例如,若输入3576,则输出为4,输入为31678,则输出为5.
#include<stdio.h>
void main(){
int n,k=0;
scanf(“%d”, ④ );
while( ⑤ ){
k++;
n= ⑥ ;
}
printf(“%d\n”,k);}
四、程序分析题(本大题共2小题,每小题8分,共16分)
23.阅读下列程序段,简述其主要功能。
#include<stdio.h>
void main()
{
FILE*fpd1, *fpd2;
char ch;
fpd1=fopen(“d1.dat”,“r”);
fpd2=fopen(“d2.dat”,“w”);
while(fscanf(fpd1,“%c”,
if (ch>=‘A’ ch <=‘Z’‖ch>=‘a’ ch<=‘z’)
fprintf(fpd2,“%c”,ch);
fclose(fpd1);
fclose(fpd);
}
24.阅读下列程序段,简述其主要功能。
#include<stdio.h>
#include<string.h>
void main()
{
char ad,bd,*p,*q;
int m;
gets(a);
scanf(“%d”,
p=a;q=b;
for(p=p+m-1);*p!=‘\0’;p++,q++)
*q=*p;
*q=‘\0’;
printf(“%s\n”,b);
}
五、程序设计题(本大题共2小题,每小题10分,共20分)
25.写一个程序,读入一个3×3的矩阵,输出它的转置。(注:转置是将原矩阵的行列互换)
26.求出10到100之间的素数(只能被1和自身整除的数)并以每行一个素数的格式顺序写入文件su.dat.