1、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是:答案:(C)
A、c=b=a;
B、(a=c)||(b=c);
C、(a=c)&&(b=c);
D、a=c=b;
2、程序
char c[5]={‘a’,’b’,’\0’,’c’,’\0’};
printf(“%s”,c);
的运行结果是:答案:(D)
A、'a''b'
B、abc
C、ab c
D、ab
3、将三个数排序需要比较______次。答案:(B)
A、2
B、3
C、4
D、不确定
4、请读程序片段(字符串内没有空格字符):
printf("%d ", strlen("ATS12"));
上面程序片段的输出结果是:答案:(B)
A、11
B、5
C、6
D、8
5、以下叙述中错误的是:答案:(D)
A、C程序必须由一个或者一个以上的函数组成。
B、函数调用可以作为一个独立的语句存在。
C、若函数有返回值,必须通过return 语句返回。
D、函数形参的值也可以传回给对应的实参。
6、当调用函数时,实参是一个数组名,则向函数传送的是:答案:(B)
A、数组的长度
B、数组的首地址
C、数组每一个元素的地址
D、数组每个元素的值
7、设变量x和y均已经正确定义并赋值。以下if语句中,在编译时将产生错误信息的是:答案:(C)
A、if(x++);
B、if(x>y
&&y!=0)x++;
C、if(x>0) x-- else y++;
D、if(y<0){;} else x++;
8、对两个字符数组a和b进行初始化
char a[]="ABCDEF";
char b[]={'A','B','C','D','E','F'};
则以下叙述正确的是:答案:(D)
A、a与b数组完全相同
B、a与b长度相同
C、a和b中都存放字符串
D、a数组比b数组长度长
9、设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的值为:答案:(C)
A、0
B、1
C、2
D、3
10、在一个C程序中:答案:(B)
A、main函数必须出现在所有函数之前;
B、main函数可以在任何地方出现;
C、main函数必须出现在所有函数之后;
D、main函数必须出现在固定位置
11、若变量已正确定义,以下非法的表达式是:答案:(B)
A、a/=b+c
B、a%(4.0)
C、a=1/2*(x=y=20,x*3)
D、a=b=c
12、下列说法中正确的是:答案:(D)
A、一个数组能够存储许多不同类型的值
B、数组的下标可以是float数据类型
C、如果初始化值列表中的个数少于数组的元素的个数,C编译器会自动补齐
D、初始化值列表中的值的个数多于数组元素的个数是错误的
13、表达式3.6-5/2+1.2+5%2的值是:答案:(D)
A、4.3
B、4.8
C、3.3
D、3.8
14、设有定义:int k=0;以下选项的四个表达式中与其他三个表达式的值不相同的是:答案:(A)
A、k++
B、k+=1
C、++k
D、k+1
15、在下列程序段中,枚举变量 c1的值是:
enum color {
red,yellow,blue=4,green,white}c1;
c1=yellow;
c1=white;答案:(D)
A、1
B、3
C、5
D、6
16、以下程序的输出结果为:
main( )
{
int i=010,j=10;
printf("%d,%d ",i++,j--);
}答案:(C)
A、11,9
B、9,10
C、8,10
D、9,9
17、以下错误的if语句是:答案:(C)
A、if(x>y) z=x;
B、if(x==y) z=0;
C、if(x!=y) printf("%d",x) else printf("%d",y);
D、if(x < y) { x++;y--;}
18、执行下面的程序段后,变量k中的值为
s[0]=k;
k=s[1]*10;答案:(A)
A、不定值
B、33
C、30
D、10
19、判断字符串a是否大于b,应当使用:答案:(D)
A、if (a>b)
B、if (strcmp(a,b))
C、if (strcmp(b,a)>0)
D、if (strcmp(a,b)>0)
20、下面不正确的字符串常量是:答案:(A)
A、'abc'
B、"12'12"
C、"0"
D、" "
21、请读程序:
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=%d,b=%d ",a,b);
}答案:(A)
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2,b=0
22、定义由n个指向整形数据的指针组成的数组p,其正确的方式为:答案:(C)
A、int p;
B、int (*p)[n];
C、int *p[n];
D、int (*p)( );
23、已知职工记录描述如下,在C中,系统为变量w分配( )字节的空间。
struct worker
{
int no;
char name[20];
char sex;
} w;答案:(A)
A、28
B、20
C、25
D、6
24、设有以下定义:
#define N 3
#define Y(n) ((N+1)*n)
则执行语句:z=2 * (N+Y(5+1));后,z的值为:答案:(C)
A、出错
B、42
C、48
D、54
25、有定义语句:int b;char c[10];,则正确的输入语句是:答案:(B)
A、scanf("%d%s",&b,&c);
B、scanf("%d%s",&b,c);
C、scanf("%d%s",b,c);
D、scanf("%d%s",b,&c);
26、设有说明 int (*ptr)();其中标识符ptr是:答案:(B)
A、是一个指向整形变量的指针
B、是一个指针,它指向一个函数值是int的函数
C、是一个函数名
D、定义不合法
27、语句for(a=0,b=0;b!=100&&a<5;a++)scanf("%d",&b);
scanf最多可执行次数为:答案:(C)
A、4
B、6
C、5
D、1
28、以下程序的输出结果是:
main()
{
int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d %d ",x--,y);
}答案:(D)
A、10 1 9 2
B、9 8 7 6
C、10 9 9 0
D、10 10 9 1
29、以下程序的输出结果为:int i;
void prt( )
{
for(i=5;i<8;i++)
printf("%c",'*');
8 printf(" ");
}
main( )
{
for(i=5;i<=8;i++) prt( );
}答案:(A)
A、***
B、*** *** *** ***
C、*** ***
D、* * *
30、设 int x=1, y=1; 表达式(!x||y--)的值是:答案:(B)
A、0
B、1
C、2
D、-1
31、以下程序的输出结果为:
#define ADD(x) x*x
main( )
{
int
a=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d);
}答案:(A)
A、d=70
B、d=80
C、d=140
D、d=700
32、若程序中定义了以下函数
double myadd(double a,double b)
{ return (a+b); }
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是:答案:(A)
A、double myadd(double a,b);
B、double myadd(double,double);
C、double myadd(double b,double a);
D、double myadd(double x,double y);
33、以下代码的输出结果为:
void fun(int x,int y)
{ int temp;
if(x < y)
{ temp = x ; x = y ; y = temp; }
}
main()
{
int a = 4,b = 3,c = 5;
fun(a,b);fun(a,c);fun(b,c);
printf("%d,%d,%d ",a,b,c);
}答案:(C)
A、3,4,5
B、5,3,4
C、4,3,5
D、5,4,3
34、下面程序的输出是:
fun3(int x)
{
static int a=3;
a+=x;
return(a);
}
main()
{
int k=2, m=1, n;
n=fun3(k);
n=fun3(m);
printf("%d ",n);
}答案:(C)
A、3
B、4
C、6
D、9
35、以下程序的输出结果是:
main()
{
int a=5,b=4,c=6,d;
printf("%d
",d=a>b?(a>c?a:c):(b));
}答案:(C)
A、5
B、4
C、6
D、不确定
36、现有一个函数的功能是求出一个元素在数组中的索引,以下该函数的声明正确的是:答案:(A)
A、int getIndex(int *a,int count,int n);
B、void getIndex(int a[],int count,int n);
C、int getIndex(int a[],int count);
D、void getIndex(int *a,int count);
37、有以下程序
main()
{
char ch[]="uvwxyz",*pc;
pc=ch;
printf(" %c ",*(pc+5));
}
程序运行后的输出结果是:答案:(A)
A、z
B、0
C、元素ch[5]的地址
D、字符y的地址
38、下面程序的功能是输出以下形式的金字塔图案是:
*
***
*****
*******
main()
{
int i,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++)
printf(" ");
for(j=1;j<=____;j++) printf("*");
printf(" ");
}
}
在下划线处应填入的是:答案:(B)
A、i
B、2*i-1
C、2*i+1
D、i+2
39、动态分配内存,定义一个int型的包含12个元素的数组,如下定义正确的是:答案:(A)
A、int *p = malloc(sizeof(int)*12);
B、int a[12] = malloc(12,sizeof,int);
C、int a[12] = calloc(12,sizeof(int));
D、int *p = calloc(sizeof(int)*12)
40、设变量定义为int
x,*p=&x;则&*p相当于:答案:(A)
A、p
B、*p
C、x
D、*&x
※ 判断题(共10题,每题2分)
1、增1减1运算符的前缀运算和后缀运算的表达式值是相同的。答案:(F)
正确
错误
2、若有定义和语句:int
a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++)
sum+=a[i][2-i];则sum=21。答案:(T)
正确
错误
3、假定int类型变量占用两个字节,若有定义:int
x[10]={0,2,4};,则数组x在内存中所占字节数是6。答案:(F)
正确
错误
4、若有定义:char *p(char a[10]);则p是函数名。答案:(T)
正确
错误
5、若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。答案:(F)
正确
错误
6、break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。答案:(T)
正确
错误
7、通过return语句,函数可以带回一个或一个以上的返回值。答案:(F)
正确
错误
8、直接访问就是直接利用变量的地址进行存取直接访问答案:(T)
正确
错误
9、函数strlen("ASDFG ")的值是7。答案:(F)
正确
错误
10、a=b=c=5可以理解为a=(b=(c=5))。答案:(T)
正确
错误