一、填空
1、表达式4‖3‖2‖1的值为(A
)
A.1 B.2 C.3 D.4
2、C程序的执行顺序是(D
)
A、从第一条语句开始B、从程序开头开始C、从第一个函数开始D、从主函数开始
3、C程序的基本构成单位是(B
)
A、子程序B、函数C、过程D、函数和过程
4、下列字符序列中,不可用做C语言标识符的是(B
)
A、abc123
B、no.1
C、_ok
D、_123_
5、试分析以下程序的正确执行结果(A
)
main( )
{ char
a,b;
a=’0’ ;
b=’5’;
printf(“%d,%d,%c,%c\n”,a,b,a,b);
}
其中,在ASCII字符集中,数据1的序号为49。
A、48,53,0,5
B、0,5,48,53
C、49,54,0,5
D、0,5,49,54
6、下列程序的输出结果是(D
)
main( )
{ int
i=2;
i+=i-=i+i;
printf(“%d\n”,i);
}
A、2
B、4
C、-2
D、-4
7、用scanf(“%d,%d”,&x,&y)输入数据时,下列输入方式中正确的是(A
)
A、123,456
B、123 456
C、123;456
D、123/456
8、以下程序的执行结果是(B
)
main( )
{ int a=2,b=-1,c=1;
if(a= =b+c)
printf(“$$$$\n”);
else
printf(“@@@@\n”);
}
A、$$$$ B、@@@@
C、有语法错误,不能正确执行D、@$@$
9、以下程序段,执行结果是(A
)
a=-1;
do
{
a=a*a;
}
while(!a);
A、循环执行一次B、循环执行两次C、有语法错误D、程序无终止运行
10、以下程序的运行结果为(D
)
main( )
{
int i,sum;
i=sum=0;
while(i<=100)
sum+=i;
i++;
printf(“1+2+3+……+100=%d”,sum);
}
A、0
B、5050
C、1
D、程序无终止运行
11、以下定义数组的语句中正确的是(D
)
A、int a(10); B、int
a[0];C、int a[4][n]; D、int
b[10][10];
12、设有如下程序片段,则其运行结果为(C
)
main( )
{
int i , a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf(“%d”,a[i][2-i]);
}
A、1 5
9
B、1
4
7
C、3
5
7
D、3
6
9
13、假定x和y为double型,则表达式x=2,y=x+3/2的值是(D
)
A、3.500000
B、3
C、2.00000
D、3.00000
14、x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是(B
)
A、INPUT
x,y,z;B、scanf(“%d%d%d”,&x,&y,&z);
C、scanf(“%d%d%d”,x,y,z);D、read(“%d%d%d”.&x,&y,&z);
15、设A,B,C,D,m,n均为int型变量,且A=5,B=6,C=7,D=8,m=2,n=2,则逻辑表达式(m=A>B)&&(n=D>D)运算后,n的值为(C
)
A、0
B、1
C、2
D、-3
16、阅读以下程序:
main()
{
int
x;
scanf(“%d”,&x);
if(x--<5)
printf(“%d\n”,x);
else
printf(“%d\n”,x++);
}
程序运行后,如果从键盘上输入5,则输出结果是(B
)
A、-3
B、4
C、5
D、6
17、假定w,x,y,z,m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=xz?x:z:w
则该程序执行后,m的值是(A
)
A、4
B、3
C、2
D、1
18、假定int类型变量占用四个字节,若有定义:int x[10]={0,2,4},则数组x在内存中所占字节数是(D
)
A、3
B、12
C、20
D、40
19、以下程序的输出结果是(A
)
main()
{
int
A[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf(“%d%d%d%d\n”,A[0][3],A[1][2],A[2][1],A[3][0]);
}
A、0650
B、1470
C、5430
D、输入值不定
20、以下程序的输出结果是(C
)
main()
{
int i,A[10];
for(i=9;i>=0;i--)
A[i]=10-i;
Printf(“%d%d%d”,A[2],A[5],A[8]);
}
A、258
B、741
C、852
D、369
21、整型变量X和Y的值相等,且为非0值,则以下选项中,结果为零的表达式是(D
)
A、x||y
B、x&&y
C、x*y
D、!(x=y)
22、表达式:10!=9的值是(D
)
A、true
B、非零值C、0
D、1
23、在C语言中,运算对象必须是整型数的运算符是(A
)
A、%
B、\
C、%和\
D、**
23、设int
a=12,则执行完语句a+=a-=a*a后,a的值是(D
)
A、522
B、264
C、144
D、-264
24、若有定义和语句:
char s[10];s="abcd"; printf("%d\n",s);
则结果是(D
)
A、输出abcd
B、输出 a
C、输出 adcb
D、编译不能通过
25、若执行下面的程序从键盘输入3和4,则输出是(B
)
main()
{ int a,b,s;
scanf("%d%d",&a,&b);
s=a;
if (a;
s=s*s;
printf("%d\n",s);
}
A、14
B、16
C、18
D、20
26、下面的程序是(D
)
#include
main()
{ int x=3,y=0,z=0;
if (x=y+z) printf("****");
else printf("####");
}
A、有语法错误不能过通过编译B、输出****
C、可能通过编译,但是不能通过连接,因而不能运行D、输出####
27、以下程序的输出结果是(A
)
main()
{ char
str[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str));
}
A、6
B、7
C、11
D、12
28、设a=1,b=2,c=3,d=4,则表达式:a>b?a:c的结果为(A
)
A、4
B、3
C、2
D、1
29、设有语句int
a=3;则执行了语句a+=a-=a*a;后,变量a的值是(D
)
A、3
B、0
C、9
D、-12
30、不能把字符串:Hello!赋给数组b的语句是(B
)
A) char
b[10]={'H','e','l','l','o','!'};
B) char
b[10];b="Hello!";
C) char b[10];strcpy(b,"Hello!");D) char b[10]="Hello!";
31、C语言中while和do
while循环的主要区别是(A
)
A、do while 的循环至少无条件执行一次
B、while的循环控制条件比do
while的循环控制条件严格
C、do while 可以从外部转到循环内
D、do while的循环体不能是复合语句
32、在定义int a[2][3];之后,对a的引用正确的是(C
)
A、a(1,2)
B、a[1,3]
C、a[1>2][!1]
D、 a[2][0]
33.有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量 a的值为1,b的值为3,c的值为2,则正确的数据输入方式是(D
)。
A)132↙B)1,3,2↙C)a=1 b=3
c=2↙D)a=1,b=3,c=2↙
34.C语言对嵌套if语句的规定是:else总是与(A
) 。A)其之前最近的if配对B)第一个if配对C)缩进位置相同的if配对D)其之前最近的且尚未配对的if配对35.对下述程序,(
A
)是正确的判断。main ( )
{ int x,y;
scanf(“%d,%d”,&x,&y);
if
(x>y)
x=y;y=x;
else
x++;y++;
printf(“%d,%d”,x,y);
}
A)有语法错误,不能通过编译B)若输入3和4,则输出4和5
C)若输入4和3,则输出3和4
D)若输入4和3,则输出4和5
36.若有定义:int
a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是(C
)。A)①和②B)②和③C)①和③D)③和④37.下面程序段int k=2;
while (k=0)
{printf(“%d”,k);k--;}
则下面描述中正确的是(C
)。A)while循环执行10次B)循环是无限循环
C)循环题语句一次也不执行D)循环体语句执行一次38.若有说明:int
a[3][4]={0};则下面正确的叙述是(D
)。A)只有元素a[0][0]可得到初值0
B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0
D)数组a中每个元素均可得到初值039.下面是对s的初始化,其中不正确的是(D
)。A)char
s[5]={“abc”};
B)char
s[5]={‘a’,’b’,’c’};
C)char s[5]=”
”;
D)char
s[5]=“abcdef”;40.下面程序段的输出结果是(B
) 。char c[5]={‘a’,’b’,’\0’,’c’,’\0’}
printf(“%s”,c);
A)’a’’b’B)ab
C)ab c
D)abc
41.判断字符串a和b是否相等,应当使用(D
) 。A)if (a==b)
B)if (a=b)
C)if
(strcpy(a,b))
D) if (strcmp(a,b)==0)
42.判断字符串a是否大于b,应当使用(D
)。A)if
(a>b)
B)if (strcmp(a,b))
C)if (strcmp(b,a)>0)
D)if
(strcmp(a,b)>0)
43.若用数组名作为函数调用的实参,传递给形参的是(A
)。A)数组的首地址B)数组中第一个元素的值C)数组中的全部元素的值D)数组元素的个数44.若int
i=10;执行下列程序后,变量i的正确结果是(D
) 。
switch (i)
{
case 9: i+=1 ;
case 10: i+=1 ;
case 11: i+=1 ;
default : i+=1 ;
}
A)10
B)11
C)12
D)13
45.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是(C
) 。A)(x>=1) &&
(x<=10) && (x>=200) && (x<=210)
B)(x>=1) | |
(x<=10) | | (x>=200) | | (x<=210)
C)(x>=1) &&
(x<=10) | | (x>=200) && (x<=210)
D)(x>=1) | |
(x<=10) && (x>=200) | | (x<=210)
46.执行下列程序片段时输出结果是( C
) 。int x=13,y=5;
printf(“%d”,x%=(y/=2));
A)3
B)2
C)1
D)047. 表达式(D
)的值是1。A、3%5
B、3/5.0
C、3/5
D、3<5
48. 在C
语言程序中,在函数内部定义的变量称为(D
)。 A、全局变量B、全程变量C、外部变量
D、局部变量49. 以下程序的输出结果是(D
)main(){ int a, b;for(a=1, b=1; a<=100;
a++){
if(b>=10) break;if (b%3= =1){ b+=3; continue; }}printf(“%d\n”,a);}A)
101 B) 6 C) 5 D) 450、以下程序的输出结果(A)
#include
main()
{
int
i=10,j=10;
printf("%d,%d\n",++i,j--);
}
A、11,10
B、9,10
C、010,9
D、10,9
二、填空
1、C语言的基本数据类型是____整型________、____实型_______、____字符型_______。
2、C语言的三种基程序结构是____顺序_______、____选择__________、_____循环 _____。
3、‘A’字符的ASCII码值是__65___。
4、表达式5%3的值为__2____, 5/3的值为__1____。
5、表达式12345 = = 12345/3*3的值为1
。
6、int i=6,j=6;执行printf(“%d,%d”,(ⅰ+ +),( + +j));的输出为6,7
。
7、表达式4﹥10?5>3?(4,2):3:(6,7)的值为7
。
8、函数的自身调用称为___递归_____调用。
9、英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为___68_
____。
10、strlen函数的功能是___
求字符创长度
____
11、strcpy函数的功能是___
实现字符串复制
___
___
12、strcat函数的功能是__
实现字符串连接
___。
13、C语言中循环控制语句有三种分别是___ for
____、_____while
____、____
__do……while_______。
14、C语言的数据类型大致分为基本类型、构造类型、空类型、____
___指针类型__。
15、C语言的标识符只能用三种字符表示分别是___数字
__、_____字母 ____、____下划线 _____。
16、表达式 !10! = 1的值是_______1_____________。
17、“20的C语言表达式是_____20<=30_______________。
18、设int i = 5;则循环语句while (i > = 1) i - -;执行后,i的值为_____0__________。
19、能表述“20”或“x20&&x<30||x
。
20、函数的传值方式分为
和两种
21、执行语句“k=x++&&y++||z++;”(各变量当前值均为1)后,变量k、x、y、z值依次为1、2、2、1
22、语言的逻辑运算符包括&&
||
!
23、假使实形变量a、b的值分别1和3,表达式a+b/2的值是 2.5
24、C语言数组的下标总是从
0开始,不可以为负数
三、程序阅读题
1、执行以下程序后,输出‘#’号的个数是6
。
#include
main()
{int
i,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++) putchar(’#’);
2、以下程序运行后的输出结果是yes
。
main()
{int a=1,b=3,c=5;
if(c=a+b) printf(”yes\n”);
else
printf(”no\n”);
}
3、下面程序段的运行结果是ABCchar a[10]="abcdef";
char b[10]="ABC";
strcpy(a,b);
puts(a);
4、以下程序运行后的输出结果是20,0。
main()
{ int
x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf(“%d,%d \n”,x,y);
}
5、以下程序运行后的输出结果是2,3。
void fun(int x,int y)
{
int t;
t=x;x=y;y=t;
}
main()
{ int x=2,y=3;
fun(x,y);
printf(“%d,%d\n”,x,y);
}
6、程序输出结果为:0
#include
main()
{ double d=3.2;
int x,y;
x=1.2;
y=(x+3.8)/5.0;printf("%d \n", d*y);
}
7、有以下程序main()
{ int m=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d\n",n++,++m);
}程序运行后的输出结果是
12353514
8、写出以下程序运行的结果。main ( )
{
int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“%d,%d,%d,%d”,i,j,m,n);
}
程序运行后的输出结果是
9,11,9,10
9、写出下面程序的运行结果。
#include
main()
{ int num=0;
while(num<=2)
{ num++;printf("%d ",num);}
}
程序运行后的输出结果是
1 2 3
10、下面程序的运行结果是:
#include
main()
{int
i;
for(i=1;i<=5;i++)
switch(i%5)
{case
0:printf("*");break;
case
1 :printf("#");break;
default
:printf("\n");
case
2 :printf("&");
}
}程序运行后的输出结果是
#&
&
&*
11、#include
main()
{int i, s=0;
for
(i=0; i<10; i++)
s=s+2;
printf(“%d”,
s);
}
程序输出结果为:
20
12、#include
main()
{
float
a =
5.4;
int
b, c=25,
d;
b =
a * 3;
d =
c/10;
printf("b=%d, d=%d\n",
b,
d);
}
程序输出结果为:
b=16,d=2
四、编写程序
1、将10个整数存入数组,找出其中最大值和最小值
2、用冒泡算法实现将数组中的元素按从小到大的顺序排列。(函数实现)
3、打印杨辉三角前十行
4、求3*3矩阵对角线上元素之和
5、输入一个字符串,判断是否为回文字符串,例如“ABCBA”就是一个回文字符串。
6、自定义函实现求字符串的长度。
7、自定义函数实现求字符串的复制。
8、自定义函数实现求字符串的连接。
9、用函数实现输出所有的水仙花数
10、用函数实现输出1000以内所有完数
11、输入n和k,求n和k年之间的闰年(用自定义函数实现)
12、用递归调用实现求n的阶乘
13、输入n和k,求1的k次方+2的k次方+3的k次方+……n的k次方。(用嵌套调用实现)
14、用选择算法实现将数组中的元素按从小到大的顺序排列。(函数实现)
五、简答题
1、C语言中分为哪4大类数据类型?
答:基本类型,构造类型,指针类型和空类型
2、i++ 和++i的区别
答:i++是先赋值在自增,++i是先自增在赋值
++i 和
i++,在单独使用时,就是
i=i+1。
而
a = ++i,相当于 i=i+1; a = i;
而
a = i++,相当于 a = i; i=i+1;
3、循环结构的控制语句有哪些
答:for循环,while循环,do……while循环
4、while和do while的区别是什么
答:while是先判断再循环,do……while是先循环在判断,
while可以一次也不循环,do……while最少会循环一次
5、continue 和break的区别
答:continue是放弃执行循环体内continue一下语句,直接进行下一次循环,
而break是跳出离他最近的循环,即如果有多层循环,跳出他所在的那层循环,
简单的说,continue是跳出本次循环,而break是跳出本层循环
6、简述函数参数传递的方式有哪几种?并介绍他们的区别。
答:
参数传递有值传递和地址传递两种,他们的区别主要有两个方面:
第一:值传递的参数为基本的数据类型而地址传递的参数类型为指针与数组
第二:值传递是实参将至传递给形参,形参的改变不影响实参,形参会临时分配存储空间
而地址传递时实参将值传递给形参,形参的改变会影响实参,形参不会临时分配存储空间,而是和
实参共享存储空间。
7、简述常用字符串处理函数有哪几个?并解释其功能。
答:strlen 求字符串的长度
strcpy 字符串复制
strcmp 字符串比较大小
strcat 字符串连接