华侨大学08-09学年第1学期 《C语言程序设计》 补考试卷
专业(班级) ____________________ 考试时间 2 0 0 9 年 2 月 15 日 学 号 ________________________ 姓名___________ 成绩______ 注意:请将所有答案写在答卷上! 一、选择题(60分,每题2分) (1)下列叙述中错误的是()。
A)计算机不能直接执行用C语言编写的源程序
B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件 C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行
(2)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。 A)大写字母 B)连接符 C)数字字符 D)下划线 (3)以下叙述中错误的是()。
A)C语言是一种结构化程序设计语言
B)结构化程序有顺序、分支、循环三种基本结构组成 C)使用三种基本结构构成的程序只能解决简单问题 D)结构化程序设计提倡模块化的设计方法
(4)对于一个正常运行的C程序,以下叙述中正确的是()。 A)程序的执行总是从main函数开始,在main函数结束
B)程序的执行总是从程序的第一个函数开始,在main函数结束 C)程序的执行总是从main函数开始,在程序的最后一个函数中结束
D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 (5)若有代数式 ,(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是( )。 A) sqrt(abs(n^x+e^x))
B) sqrt(fabs(pow(n,x)+pow(x,e))) C) sqrt(fabs(pow(n,x)+exp(x))) D) sqrt(fabs(pow(x,n)+exp(x)))
(6) 设有定义:int k=0; ,以下选项的四个表达式中与其他三个表达式的值不相同的是( )。 A)k++ B)k+=1 C)++k D)k+1 (7)有以下程序,其中%u表示按无符号整数输出( )。 #include
unsigned int x=0xFFFF; printf(“%u\\n”,x); }
程序运行后的输出结果是
A)-1 B)65535 C)32767 D)0xFFFF (8)设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是( )。 A) if(x++); B) if(x>y&&y!=0); C) if(x>y) x-- D) if(y<0) {;} else y++;
(9)以下选项中,当x为大于1的奇数时,值为0的表达式( )。 A) x%2==1 B)x/2 C) x%2!=0 D) x%2==0
(10)以下叙述中正确的是( )。
A)break语句只能用于switch语句体中
B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环 C)break 语句只能用在循环体内和switch语句体内
D)在循环体内使用break语句和continue语句的作用相同 (11) 有以下程序 #include
int k=5,n=0; do {
switch(k){
case 1:
case 3: n+=1; break; default: n=0; k--; case 2:
case 4: n+=2; k--; break; }
printf(\}while( k>0&&n<5); }
程序运行后的输出结果是( )。
A)2345 B)0235 C)02356 D)2356 (12) 有以下程序 #include
for(i=1;i<4;i++) {
for(j=i;j<4;j++) printf(“%d*%d=%d “,i,j,i*j); printf(“\\n”); } }
程序运行后的输出结果是( )。
A) 1*1=1 1*2=2 1*3=3 B) 1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 2*2=4 2*3=6 3*1=3 3*3=9 C) 1*1=1 D) 1*1=1
1*2=2 2*2=4 2*1=2 2*2=4
1*3=3 2*3=6 3*3=9 3*1=3 3*2=6 (13) 以下合法的字符型常量是()。
A)”\\x13” B)”\\018” C)”65” D)”\\n” (14)在C语言中,函数返回值的类型最终取决于()。
3*3=9 A)函数定义时在函数首部所说明的函数类型 B)return语句中表达式值的类型
C)调用函数时主函数所传递的实参类型 D)函数定义时形参的类型
(15)已知大写字母‘A’的ASCII码是65,小写字母‘a’的ASCII码是97,以下不能将变量c中存储的大写字母转换为对应小写字母的语句是()。
A)c=c-32 B)c=c+32 C)c=c-?A?+?a? D)c=(?A?+c)-?a?+1 (16)有以下函数 int fun(char *s) { char *t=s;
while(*t++); return(t-s); }
该函数的功能是()。
A)比较两个字符的大小
B)计算s所指字符串占用内存字节的个数 C)计算s所指字符串的长度 D)将s所指字符串复制到字符串t中
(17)设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是()。 A)float *p=1024; B)int *p=(float x); C)float p=&x; D)float *P=&x; (18)有以下程序
#include
int n,*p=NULL; *p=&n;
printf(“Input n:”);
scanf(“%d”,&p); printf(“output n:”); printf(“%d\\n”,p); }
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,其中正确的语句是()。
A)int n,*p=NULL; B)*p=&n; C)scanf(“%d”,&p) D)printf(“%d\\n”,p);
(19) 以下程序中函数f的功能是:当flag为1时,进行有由小到大排序;当flag为0时,进行由大到小排序。 #include
void f(int b[], int n,int flag) {
int i,j,t;
for(i=0;i } } void main(void) { int a[10]={5,4,3,2,1,6,7,8,9,10},i; f(&a[2],5,0); f(a,5,1); for(i=0;i<10;i++) printf(\} 程序运行后的输出结果是()。 A)1,2,3,4,5,6,7,8,9,10, B)3,4,5,6,7,2,1,8,9,10, C)5,4,3,2,1,6,7,8,9,10, D)10,9,8,7,6,5,4,3,2,1, (20)有以下程序 void f(int b[]) { int i; for(i=2;i<6;i++) b[i]*=2; } void main(void) { int a[10]={1,2,3,4,5,6,7,8,9,10},i; f(a); for(i=0;i<10;i++) printf(“%d,”,a[i]); } 程序运行后的输出结果是()。 A)1,2,3,4,5,6,7,8,9,10, B)1,2,6,8,10,12,7,8,9,10 C)1,2,3,4,10,12,14,16,9,10, D)1,2,6,8,10,12,14,16,9,10, (21)有以下程序 #include typedef struct{int b, p;}A; void f(A c) { int j; c.b+=1; c.p+=2; } void main(void) { int i; A a={1,2}; f(a); printf(“%d,%d\\n”,a.b,a.p); } 程序运行后的输出结果是()。 A)2,3 B)2,4 C)1,4 D)1,2

