C. a>10&&a<15
D.!(a<=10)&&!(a>=15)
8.设x,t均为int型变量,则执行语句“x=10;t=x&&x>10;”后,
t的值为(D)
A.不定值.10 C
9. 若int i=10; 执行下列程序后,变量i的正确结果是( A )。
【
switch ( i )
{ case 9: i+=1;
case 10: i+=1;
case 11: i+=1;
default : i+=1; }
A、13
B、12
C、11
D、10
10. 在下面的条件语句中(其中s1和s2表示是C语言的语句),
只有一个在功能上与其它三个语句不等价,它是( D )。
A、if (a) s1 ; else s2;
B、if (a= =0) s2; else s1;
C、if (a!=0) s1; else s2;
D、if (a= =0) s1; else s2;
11.假定所有变量均已正确定义,则下列程序段运行后y的值是
(A)"
int a=0,y=10;
if(a=0) y--;
else if(a>0) y++;
else y+=y;
.11 C
12.假定所有变量均已正确定义,则下列程序段运行后x的值是
(B)。
a=b=c=0; x=35;
if(!a) x--;
else if(b);
if(c) x=3;
》
else x=4;
.4 C
13. C语言对嵌套if语句的规定是:else语句总是与(D )配对。
A) 其之前最近的if B) 第一个if
C) 缩进位置相同的if D) 其之前最近的且尚未配对的if
14.在C语言语句中,用来决定分支流程的表达式是(A)。
A.可用任意表达式 B.只能用逻辑表达式或关系表达式C.只能用
逻辑表达式 D.只能用关系表达式
语言中用(B)表示逻辑“真”。
A. true
B. 整数值1
C.&
D.非零整数值 D. false
16、若k是int型变量,且有下面的程序段:
int k;
k= -3;
if (k<=0) printf(“####”);
else printf(“&&&&”);
上面程序段的输出结果是(A)
A、####
B、&&&&
C、####&&&&
D、有语法错误,无输出结果
17. main()
{ int x=0,a=0,b=0;
switch(x){
case 0: b++;
case 1: a++;
case 2: a++;b++;}
printf(“a=%d,b=%dn”,a,b);}
该程序的输出结果是D
A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2
18. 以下程序的输出结果是:(C)
main()
(
{ int x=-10,y= 1,z=1;
if(x
if(y<0) z=0;
else z=z+1;
printf(“%dn”,z);
}
A. 0
B. 1
C. 2
D. 3
19. 以下程序段的输出结果是(B)
int a=10,b=50,c=30;
if(a>b)
,
a=b;
b=c;
c=a;
printf("a=%2d b=%2d c=%2dn",a,b,c);
A) a=10 b=50 c=10 B) a=10 b=30 c=10
C) a=50 b=30 c=10 D) a=50 b=30 c=50
四、循环结构
*1.在C语言中,下列说法中正确的是(D)。
A) do-while语句构成的循环不能用其它语句构成的循环来代替。
)
B) do-while语句构成的循环只能用break语句退出。
C) do-while语句构成的循环在while后的表达式非零时结束循
环。
D) do-while语句构成的循环,在while后的表达式为零时结束循
环。
2. break语句不能出现在(D)语句中
A. switch C. while D. if…else
*3.对于break语句和continue语句的说法错误的是(B)
A)break语句不能用于循环语句和switch语句之外的任何其他语
句中。
B)break和continue也可以用于if语句中
C) continue语句只结束本次循环,而不是终止整个循环的执行。
D) break语句是结束整个循环过程,不再判断执行循环的条件是
否成立。*
4.语句while(!y);中的表达式!y等价于A
A)y==0 B)y!=1 C)y=!0 D) y==1
5.若有“int a=1,x=1;”,则循环语句“while(a<10) x++; a++;”
的循环执行(A)
A.无限次
B.不确定次次次
6. 有以下程序段
int k=0
while(k)k++;
则while循环体执行的次数是C
A) 无限次B) 有语法错,不能执行
C) 一次也不执行D) 执行1次
!
7. 下列循环语句中有语法错误的是( D )
A while(x=y) 5;
B while(0) ;
C do 2;while(x= =b);
D do x++ while(x= =10);
*8.当运行时输入:abcd$abcde,下面程序的运行结果是B
#include<>
main()
{ while(putchar(getchar())!='$');
printf("end");
}
A)abcd$abcde B)abcd$end C)abcdend D
abcd$abcdeend …
9. 以下程序段( A)
x=-1;
do { x=x*x; }
while(x>0);
A. 是死循环
B. 循环执行一次
C. 循环执行二次
D. 有语法错误
10. 下面程序段执行后的结果为: ( B )
)
int sum=0, n=10;
do { sum=sum+n;
n++; }
while(n<10)
、
printf(“%d,%d”,sum,n)
A.0, 10
B. 10, 11
C. 0, 11
D. 以上结果都不对
11.对以下程序段的叙述正确的是___A____.
int x=1;
do
{ x= -1*x; }
while(!x)
A) 是死循环B) 循环执行一次C)循环执行二次D)有语法错误
12.循环“for(i=0,x=1;i=10&&x>0;i++);”的循环执行(A)。
A.无限次
B.不确定次次次
】
13.执行语句{for(j=0;j<=3;j++) a=1;}后变量j的值是C.
A)0 B) 3 C)4 D) 1
14.有如下程序
main()
{ int i,sum=2;
for(i=1;i<=3;i+=2) sum+=i;
printf(“%dn”,sum);}
该程序的执行结果是A
A) 6 B) 3 C) 死循环D) 4 *15、执行语句”for ( i=0;
i++<3 ; ) ;”后,变量i的值为( C )。}
A、2
B、3
C、4
D、5
16.设x和y均为int型变量,则执行以下的循环后,y的值为
(D)。for(y=1,x=1;y<=50;y++)
{
if(x>=0) break;
if(x%2==1) {x+=5;continue;}
x-=3;
}
~
五数组
1. 以下对一维数组a的正确说明是:D
A)char a(10);B) int a[];
C)int k=5,a[k];D)char a[3]={‘a’,’b’,’c’};
2.以下能对一维数组a进行初始化的语句是: ( C)
A. int a[5]=(0,1,2,3,4,)
B. int a(5)={}
C. int a[3]={0,1,2}
D. int a{5}={10*1}
3.在C语言中对一维整型数组的正确定义为D。
A)int a(10); B)int n=10,a[n];
C)int n;a[n]; D)#define N 10
—
int a[N];
4、已知:int a[10]; 则对a数组元素的正确引用是( D )。
A、a[10]
B、a[]
C、a(5)
D、a[0]
5. 执行下面的程序段后,变量k中的值为C
A) 不定值B) 33 C) 30 D) 10
int k=3, s[2];
s[0]=k; k=s[0]*10;
*6. 下列说法中错误的是 C
A 构成数组的所有元素的数据类型必须是相同的
B 用指针法引用数组元素允许数组元素的下标越界
:
C 一维数组元素的下标依次是1、2、3……
D 定义数组时的长度可以是整型常量表达式
7.若有以下数组说明,则数值最大的和最小的元素下标分别是
(B)。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
,12 ,11 ,11 ,12
8.若有以下数组说明,则i=10;a[a[i]]元素数值是(B)。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
9. 假定int类型变量占用两个字节,其有定义:int
x[10]={0,2,4};,则数组x在
内存中所占字节数是D
A) 3 B) 6 C) 10 D) 20
¥
11.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一
维的大小为: ( B)
A. 2
B. 3
C. 4
D.无确定值
12.以下定义语句中,错误的是( D)
A) int a[]={1,2}; B) char *a;
C) char s[10]=“test”; D) int n=5,a[n];
13.下面程序段的输出结果是: ( C)
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
for (i=0;i<3;i++)
…
printf("%d ",x[i][2-i]);
A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 9
14.对二维数组的正确定义是(C)
a[ ] [ ]={1,2,3,4,5,6}; a[2] [ ]={1,2,3,4,5,6};
a[ ] [3]={1,2,3,4,5,6}; a[2,3]={1,2,3,4,5,6};
15.已知int a[3][4];则对数组元素引用正确的是__C___
A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1)
六、函数
语言中函数返回值的类型是由A决定的.
[
A)函数定义时指定的类型B) return语句中的表达式类型
C) 调用该函数时的实参的数据类型D) 形参的数据类型
2. 在C语言中,函数的数据类型是指( A )
A 函数返回值的数据类型 B. 函数形参的数据类型
C 调用该函数时的实参的数据类型 D.任意指定的数据类型
*3.C程序中函数返回值的类型是由A决定的.
A)函数定义时指定的函数类型B) 函数中使用的最后一个变量的类
型
C)调用函数时临时确定D) 调用该函数的主调函数类型
*4. C语言规定,简单变量做实参时,它和对应形参之间的数据传
递方式为( B)
A. 由系统选择
B. 单向值传递
C. 由用户指定传递方式
D. 地址传递
5. 在函数调用时,以下说法正确的是(B)
A.函数调用后必须带回返回值
B.实际参数和形式参数可以同名
C.函数间的数据传递不可以使用全局变量
D.主调函数和被调函数总是在同一个文件里
*6. 在C语言程序中,有关函数的定义正确的是( B )。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可以嵌套
D.函数的定义和函数的均可以嵌套
*7. 以下对C语言函数的有关描述中,正确的是( A)。
A.在C语言程序中,调用函数时,如函数参数是简单变量,则只
能把实参的
值传递给形参,形参的值不能传送给实参
语言函数既可以嵌套定义又可递归调用
语言函数必须有返回值,否则不能使用函数
D.在C语言程序中有调用关系的所有函数必须放在同一个源程序
文件中*语言中对函数的描述正确的是 C .
A)可以嵌套调用,不可以递归调用B) 可以嵌套定义
C)嵌套调用,递归调用均可D)不可以嵌套调用
9.以下叙述中正确的是A
A) 构成C程序的基本单位是函数
)
B) 可以在一个函数中定义另一个函数
C) main()函数必须放在其它函数之前
D) 所有被调用的函数一定要在调用之前进行定义
10.用数组名作为函数调用时的实参时,传递给形参的是A。
A)数组首地址B)数组第一个元素的值
C)数组全部元素的值D)数组元素的个数
11.有一函数的定义如:void fun(char *s){……},则不正确的函
数调用是( D )。()
{char a[20]=”abcdefgh”;
fun(a);
—
……
}
()
{ char a[20]=”abcdefgh”;
fun(&a[0]);
……
}
()
{ char a[20]=”abcdefgh”;
char *p=a;fun(p);
,
……
}
()
{char a[20]=”abcdefgh”;
fun(a[]);
……
}
13、函数的功能是交换变量x 和y 中的值,且通过正确调用返回
交换的结果。能正确执行此功能的函数是( D )。 A 、funa(int *x,
int *y) { int *p;
*p=*x ; *x=*y; *y=*p; }
C 、func(int *x, int *y) { int *p;
p=x;x=y; y=p;
}
14. 有如下程序
int func(int a,int b)
{ return(a+b);} ·
main()
{ int x=2,y=x,z=8,r;
r=func(func(x,y),func(y,z)); printf(“%d n”,r); } 该程序的
输出的结果是 C
A) 12 B) 13 C) 14 D) 15
*15. 以下程序的输出结果是 B
int a, b; void fun()
{ a=100; b=200; } !
main()
{ int a=100, b=100;
fun();
pri ntf(“%d %d n ”, a,b); }
A) 100200
B) 100100
C) 200100
D) 200200
*16. 下列说法中正确的是:( A )
$
B 、funb(int x , int y)
{ int t;
t=x; x=y; y=t;
D 、fund(int *x, int *y) ,
{ int t;
t=*x; *x=*y; *y=t; }
A.局部变量在一定范围内有效,且可与该范围外的变量同名。
B.如果一个源文件中,全局变量与局部变量同名,则在局部变量
范围内,
局部变量不起作用。
C.【
D.局部变量缺省情况下都是静态变量。
E.函数体内的局部静态变量,在函数体外也有效。
17. 在C语言中,表示静态存储类别的关键字是: (C)
A) auto B) register C) static D) extern
18.未指定存储类别的变量,其隐含的存储类别为(A)。
A)auto B)static C)extern D)register
七、结构体
1. 若有以下说明语句:
struct student
(
{ int num;
char name[ ];
float score;
}stu;
则下面的叙述不正确的是: ( D )
A. struct是结构体类型的关键字
B. struct student 是用户定义的结构体类型
C. num, score都是结构体成员名
D. stu是用户定义的结构体类型名
2.若有以下说明语句:
|
struct date
{ int year;
int month;
int day;
}brithday;
则下面的叙述不正确的是__C___.
A) struct是声明结构体类型时用的关键字
B) struct date 是用户定义的结构体类型名
C) brithday是用户定义的结构体类型名
D) year,day 都是结构体成员名
[
*3. 已知:(设整型2字节,字符型1字节,浮点型4字节)
struct
{ int i;
char c;
float a;
}test;
则sizeof(test)的值是D。
A) 4 B) 5 C) 6 D) 7
4. 以下对结构变量stul中成员age的非法引用是B
struct student
;
{ int age;
int num;
}stu1,*p;
p=&stu1;
A) B) C) p->age D) (*p).age
*5. 有如下定义
struct person{char name[9]; int age;};
s truct person class[10]={“Tom”,17,“John”,19,
“Susan”,18,“Adam”,16,};
)
根据上述定义,能输出字母A的语句是( B )
A) printf(“%cn”,class[3].name);
B) printf(“%cn”,class[3].name[0]);
C) printf(“%cn”,class[3].name[1]);
D) printf(“%cn”,class[2].name[3]);
6.存放100个学生的数据、包括学号、姓名、成绩。在如下的定
义中,不正确的是( B )。
A.struct student
{int sno;
char name[20];
…
float score;} stu[100];
B. struct student stu[100]
{int sno;
char name[20];
float score};
C. struct
{ int sno;
char name[20];
float score;} stu[100];
D. struct student
|
{int sno;
char name[20];
float score;};
struct student stu[100];
*7.设有定义语句“struct {int x; int y;} d[2]={{1,3},{2,7}};”则
“printf(“%dn”,d[0].y/d[0].x*d[1].x);”输出的是( D )。
8.已知:struct sk
{ int a;
float b;
}data, *p;
<
若有p=&data,则对data中的成员a的正确引用是(C )。
A、(*p).
B、p->
C、(*p).a
D、设有如下定义:
struck sk
{ int a;
float b;
}data;
int *p;
若要使P指向data中的a域,正确的赋值语句是C
A) p=&a B) p=; C) p=&; D)*p=;
10.设有以下说明语句:
·
typedef struct stu
{ int a;
float b;
} stutype;
则下面叙述中错误的是(D)。
A、struct是结构类型的关键字
B、struct stu是用户定义的结构类型
C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名
~
八.指针
1.语句int *p;说明了 C 。
A)p是指向一维数组的指针
B)p是指向函数的指针,该函数返回一int型数据
C)p是指向int型数据的指针
D)p是函数名,该函数返回一指向int型数据的指针
2. 变量的指针,其含义是指该变量的:( B)
A. 值
B. 地址
C. 名
D.一个标志
3.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋
值表达式是
( A)
A) pb=&x B) pb=x C) *pb=&x D) *pb=*x
【
4、已知:int a, *p=&a 则下列函数调用中错误的是( D )。
A、scanf(“%d”,&a);
B、scanf(“%d”,p);
C、printf(“%d”,a);
D、printf(“%d”,p);
5.对于同类型的指针变量,不可能进行的运算是(C)。
B.=
C.+
D.==
6. 对于基类型相同的两个指针变量之间,不能进行的运算是C
A) < B) = C) + D) -
7.下列不正确的定义是(A)。
*p=&i,i; *p,i;
C.int i,*p=&i i,*p;
8. 若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:
(D)
A)p=q B)*p=*q C)n=*q D)p=n
9. int *p,a=10,b=1; p=&a a=*p+b;
执行该程序段后,a的值为C
A) 编译出错B) 10 C) 11 D) 12
10.有语句:int a[10],;则B是对指针变量p的正确定义和初始
化。
A)int p=*a; B)int *p=a; C)int p=&a D)int *p=&a
11.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是
( C )。
[p] [a] C.*(p+2) +2
12. 若指针变量p指向整型数组a[10]的首地址, 即p=a ; 则下列
数组元素a[i](0
*
A. p+i
B.&( a+i)
C. *(a+i)
D. *(p+i*2)
int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;
则数值为9的表达式是B
A) *P+9 B) *(P+8) C) *P+=9 D) P+8
14.若有以下定义,则不能表示a数组元素的表达式是( B)。
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
A.*p [10] C.*a [p-a]
*15.已知int a[5],*p=a;下面的叙述中正确的是A。
]
A) p+1与a+1等价B) p[1]与*p等价
C) *(p+1)与a+1等价D) p[1]与a++等价
16. 若有以下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为4的表达式是( C)
A) *p+4 B) *(p+4) C) *(p+3) D) p+3
17. 下面程序的输出结果是C
A) 0 B) 1 C) 2 D) 输出错误
main()
{ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
》
p=a;
printf(“%dn”,*p+1);
}
18. 执行语句char c[10]={ ”abcd”},*pc=c; 后,*(pc+4)的值
是(B)
A) “abcd” B)’0’ C) ‘d’ D) 不确定
19.下列函数的功能是A。
void fun(int *p1,int *p2)
{ int p;
p=*p1;*p1=*p2;*p2=p;
}
…
A) 交换*p1和*p2的值B) 语法正确,但无法交换*p1和*p2的
值
C) 交换*p1和*p2的地址D)有语法错误
发表评论