200606
一、 单选题(每小题2分,共30分)
1. 下列表示中,不是C语言合法字符常量的是 (1) 。
A. ‘\0xff’ B. ‘\65’ C. ‘$’ D. ‘\x2a’
A. ‘\0xff’ B. ‘\65’ C. ‘$’ D. ‘\x2a’
2. 设有如下定义:
float y=3.45678;
int x;
则下列表达式中能实现将y中数值保留至小数点后2位,小数点后第3位四舍五入的表达式是 (2) 。
A. y=(y*100+0.5)/100.0 B. x=y*100+0.5, y=x/100.0
C. y=y*100+0.5/100.0 D. y=(y/100+0.5)*100.0
float y=3.45678;
int x;
则下列表达式中能实现将y中数值保留至小数点后2位,小数点后第3位四舍五入的表达式是 (2) 。
A. y=(y*100+0.5)/100.0 B. x=y*100+0.5, y=x/100.0
C. y=y*100+0.5/100.0 D. y=(y/100+0.5)*100.0
3. 下列表示中,能在C语言中正确定义三个整型变量a、b、c,且能给它们均赋值5的是 (3) 。
A. int a=b=c=5; B. int a,b,c=5;
C. int a=5,b=5,c=5; D. a=b=c=5;
C. int a=5,b=5,c=5; D. a=b=c=5;
4. 设有数学命题“当整数a的值为奇数时,表达式的值为真,否则为假”,则下列C语言表达式中,不能满足该数学命题要求的是 (4) 。
A.a%2==1 B. !(a%2) C. !(a%2==0) D. a%2
A.a%2==1 B. !(a%2) C. !(a%2==0) D. a%2
5. 执行下列程序段后,变量i的值是 (5) 。
int i=1;
switch(i){ case 0: i+=1;
case 1: i+=1;
case 2: i+=1;
default: i+=1;
}
A. 1 B. 2 C. 3 D. 4
int i=1;
switch(i){ case 0: i+=1;
case 1: i+=1;
case 2: i+=1;
default: i+=1;
}
A. 1 B. 2 C. 3 D. 4
6. 在C语言中,break语句 (6) 。
A. 能用在C源程序中的任何位置 B. 只能用在循环体内
C. 只能用在循环体内或switch语句中 D. 可用作函数内的任一语句
C. 只能用在循环体内或switch语句中 D. 可用作函数内的任一语句
7. 设有程序段:
int x=10;
整型常量合法要求 while (x=0) x=x-1;
则下列叙述中正确的是 (7) 。
A. while循环执行10次 B. 循环是无限循环
C. 循环体语句一次也不执行 D. 循环体语句只执行一次
int x=10;
整型常量合法要求 while (x=0) x=x-1;
则下列叙述中正确的是 (7) 。
A. while循环执行10次 B. 循环是无限循环
C. 循环体语句一次也不执行 D. 循环体语句只执行一次
8. 在C语言中,数组名可作为实在参数传递给函数的形式参数,此时,作为实在参数的数组名被处理为 (8) 。
A. 该数组的长度 B. 该数组的元素个数
C. 该数组中元素的值 D. 该数组的首地址
A. 该数组的长度 B. 该数组的元素个数
C. 该数组中元素的值 D. 该数组的首地址
9. 以下关于函数定义的叙述中,正确的是 (9) 。
A. 构成C语言源程序的基本单位之一是函数定义
A. 构成C语言源程序的基本单位之一是函数定义
B. 所有被调用的函数必须在调用之前定义
C. main函数的定义必须放在其他函数定义之前
D. 定义main函数时,main函数的函数体内必须至少包含一条语句或声明
C. main函数的定义必须放在其他函数定义之前
D. 定义main函数时,main函数的函数体内必须至少包含一条语句或声明
10. 设有下列程序段:
struct person{char name[9]; int age; };
struct person class[10]={“John”,17, “Paul”,19, “Mary”,18, “adam”,16};
则下列选项中,能打印出字母“M”的语句是 (10) 。
A. printf(“%c\n”,class[3].name);
B. printf(“%c\n”,class[3].name[1]);
C. printf(“%c\n”,class[2].name[1])
D. printf(“%c\n”,class[2].name[0])
struct person{char name[9]; int age; };
struct person class[10]={“John”,17, “Paul”,19, “Mary”,18, “adam”,16};
则下列选项中,能打印出字母“M”的语句是 (10) 。
A. printf(“%c\n”,class[3].name);
B. printf(“%c\n”,class[3].name[1]);
C. printf(“%c\n”,class[2].name[1])
D. printf(“%c\n”,class[2].name[0])
11. 以下能将字符串“good!”正确地存放在字符数组s中,或使指针变量s能正确地指向这个字符串的是(11) 。
A. char s[5]={‘g’, ‘o’, ‘o’, ‘d’, ‘!’};
A. char s[5]={‘g’, ‘o’, ‘o’, ‘d’, ‘!’};
B. char s[5];s=“good!”;
C. int s[5]=“good!”;
D. char *s;s=“good!”;
C. int s[5]=“good!”;
D. char *s;s=“good!”;
12. 若有语句:
char s1[10],s2[10]=“books”;
则下列表示中,能正确地将字符串“books”赋给数组s1的是 (12) 。
A. s1={“books”} B. strcpy(s1,s2)
C. s1=s2 D. strcpy(s2,s1)
char s1[10],s2[10]=“books”;
则下列表示中,能正确地将字符串“books”赋给数组s1的是 (12) 。
A. s1={“books”} B. strcpy(s1,s2)
C. s1=s2 D. strcpy(s2,s1)
13. 以下正确的函数说明语句是 (13) 。
A. int fun(int a, b) B. float fun(int a; int b)
C. double fun() D. int fun(char a[][])
A. int fun(int a, b) B. float fun(int a; int b)
C. double fun() D. int fun(char a[][])
14. 设有说明语句
char *s=“abcd”;
则执行s+=2后,*s的内容是 (14) 。
char *s=“abcd”;
则执行s+=2后,*s的内容是 (14) 。
A. a B. b C. c D. cd
15. 下列对typedef的叙述中,错误的是 (15) 。
A. 用typedef可以增加新类型
B. 用typedef可以定义各种类型名,但不能用来定义变量
C. 用typedef只是将已存在的类型用一个新的标识符来代表
D. 使用typedef有利于程序的通用和移植
A. 用typedef可以增加新类型
B. 用typedef可以定义各种类型名,但不能用来定义变量
C. 用typedef只是将已存在的类型用一个新的标识符来代表
D. 使用typedef有利于程序的通用和移植
二、填空题(每空1分,共20分)
1. 一个C语言源程序是由若干个(1) 组成的;C语句的分隔符是(2) 。
2. 程序的三种基本控制结构分别是(3) 、选择和(4) 。
3. 数学表达式“”所对应的C语言表达式为(5) 。在C程序中要计算这样的表达式,通常必须包含头文件(6) 。
4. 在C语言中,声明变量的格式为:
存储类别 类型名 变量名表;
其中,变量有四种存储类别,它们分别是(7) 、register、extern和(8) 。
存储类别 类型名 变量名表;
其中,变量有四种存储类别,它们分别是(7) 、register、extern和(8) 。
5. 若有定义:“int a[3][4]={{1,2,3},{4,5},{6,7,8}}; ”,则执行该说明语句后,a[1][2]=(9) ,a[2][1]=(10) 。
6. 在C程序中,若有函数定义如下:
void f()
{ static int i;
… }
其中,void表明函数f(11) ;而i是一个(12) 整型变量。
void f()
{ static int i;
… }
其中,void表明函数f(11) ;而i是一个(12) 整型变量。
7. 在C语言程序设计中,预处理命令行必须以(13) 开头,该命令是在 (14) 被处理的。
8. 若一结构的成员项是指向本结构类型的结构指针,则称该结构为(15) 。定义这种结
构类型的一般形式如下:
struct node { int data;
(16) next;
};
struct node { int data;
(16) next;
};
9. 在C语言源程序中,函数内部说明局部变量时若缺省了存储类型,则该变量的存储类型为(17) ;定义一个函数时,若缺省该函数返回值的类型,则默认返回值为 (18) 型。
10. 设有以下说明语句:
struct student { int x;
int *y;
};
int dt[4]={1,2,3,4};
struct student a[4]={10, &dt[3], 20, &dt[2], 30, &dt[1], 40, &dt[0]}, *p=a;
则表达式++p->x的值为(19) ,表达式*(++p)->y的值为(20) 。
struct student { int x;
int *y;
};
int dt[4]={1,2,3,4};
struct student a[4]={10, &dt[3], 20, &dt[2], 30, &dt[1], 40, &dt[0]}, *p=a;
则表达式++p->x的值为(19) ,表达式*(++p)->y的值为(20) 。
三、 阅读程序写出结果(每小题4分,共20分)
1. 下列程序的运行结果是 。
#include <conio.h>
main()
{ int s=0,n=135;
do{ s+=n%10;
n/=10;
}while(n);
printf(“%d\n”,s);
getch();
}
#include <conio.h>
main()
{ int s=0,n=135;
do{ s+=n%10;
n/=10;
}while(n);
printf(“%d\n”,s);
getch();
}
2. 下列程序的运行结果是 。
#include <conio.h>
void f(int x,int y)
#include <conio.h>
void f(int x,int y)
{ int t;
t=x;x=y; y=t;
}
main( )
{ int a=1,b=100;
f(a,b);
printf (“%d,%d\n”,a,b);
getch();
}
t=x;x=y; y=t;
}
main( )
{ int a=1,b=100;
f(a,b);
printf (“%d,%d\n”,a,b);
getch();
}
3. 以下程序运行的结果是 。
#include <stdio.h>
#include <conio.h>
main()
{ int i;
for(i=0;i<3;i++)
#include <stdio.h>
#include <conio.h>
main()
{ int i;
for(i=0;i<3;i++)
printf("%3d ",f(i));
getch();
}
f(int x)
{ int y=0;
static int z=1;
y++,z++;
return(x+y+z);
}
getch();
}
f(int x)
{ int y=0;
static int z=1;
y++,z++;
return(x+y+z);
}
4. 下面程序段运行的结果是__________________。
#include <conio.h>
#include <stdio.h>
main()
{ int i=1,j=0,m=1,n=1;
switch(i)
#include <conio.h>
#include <stdio.h>
main()
{ int i=1,j=0,m=1,n=1;
switch(i)
{ case 1:m++;n++;
case 2:switch(++j)
{ case 1:m++;break;
case 2:n++;
}
case 3:m++;break;
case 4:n++;
}
printf("%d,%d\n",m,n);
getch();
}
case 2:switch(++j)
{ case 1:m++;break;
case 2:n++;
}
case 3:m++;break;
case 4:n++;
}
printf("%d,%d\n",m,n);
getch();
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论