C语言复习题.docx
《C语言复习题.docx》由会员分享,可在线阅读,更多相关《C语言复习题.docx(13页珍藏版)》请在冰豆网上搜索。
![C语言复习题.docx](https://file1.bdocx.com/fileroot1/2023-1/10/85f5563e-63e6-44a8-b39a-827af49fabe2/85f5563e-63e6-44a8-b39a-827af49fabe21.gif)
C语言复习题
C语言复习题
一、选择题
1、下列数据中,为字符串常量的是(C)
A、‘M’B、‘$you’C、”hello”D、basic
2、若y为int型变量,则执行以下语句后,y的值是(C)
y=8;y+=y-=y*y;
A、64B、-56C、-112D、-48
3、下面程序
#include
main()
{
intx,y,z;
x=2;
y=x++;
z=++x;
printf(“%d\t%d\t%d\n”,x,y,z);
}
运行后输出的数据是(A)
A、424B、422
C、244C、444
4、C语言提供合法的数据类型关键字是
A、DoubleB、shortC、integerD、Char
5、错误的转义字符是
A、'\091'B、'\\'C、'\0'D、'\''
6、scanf()函数称为
A、格式输入函数B、字符输入函数C、字符串输入函数D、无格式输入函数
7、getchar()和putchar()函数的头文件是
A、strio.hB、stdio.hC、math.hD、string.h
8、下列运算符中,只能用于整型数据的是
A、+B、-C、/D、%
9、若有定义:
inta=7;floatx=3.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是
A、2.750000B、0.00000C、3.500000D)、2.500000
10、设有定义intm=10;则以下错误的表达式是
A、m++=15B、m=m++C、256D、m
11、定义为void类型的函数,其含义是
A、调用函数后,被调用的函数没有返回值
B、调用函数后,被调用的函数不返回值
C、调用函数后,被调用的函数返回值为任意类型
D、以上说法都是错误的
12、有定义语句intw[5];则数组w占用多少个字节的内存单元
A、5B、10C、20D、40
13、如果x为float类型变量,则以下语句输出为
x=213.82631;
printf(“%4.2\n”,x);
A、宽度不够,不能输出B、213.82C、213.82631D、213.83
14、若运行时给变量x输入12,则以下程序的运行结果是
#include
main()
{intx,y;
scanf(“%d”,&x);
y=x>10?
x+10:
x-12;
printf(“%d\n”,y);
}
A、0B、22C、12D、10
15、下列程序输出的结果是
#include
main()
{
inta=9;
a+=a-=a+a;
printf(“%d”,a);
}
A、18B、9C、-18D、-9
16、若有说明:
inta[3][4];则对数组元素的非法引用是
A、a[0][2*1]B、a[0][4]C)、a[4-2][0]D、a[1][3]
17、以下不是C语言的特点的是()
A、C语言简洁、紧凑
B、能够编制出功能复杂的程序
C、C语言可以直接对硬件进行操作
D、C语言移植性好
18、以下不正确的C语言标识符是(D)
A、ABCB、abcC、a_bcD、ab.c
19、一个C语言程序是由(B)
A、一个主程序和若干子程序组成
B、函数组成
C、若干过程组成
D、若干子程序组成
20、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是(B)
A、有零个或多个输入
B、有零个或多个输出
C、有穷性
D、可行性
21、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为(C)
A、intB、floatC、doubleD、不确定
22、在C语言中,char型数据在内存中的存储形式是(D)
A、补码B、反码C、源码D、ASCII码
23、有如下程序,输入数据:
12345M678<cR>后(表示回车),x的值是(B)。
#include
main()
{
intx;
floaty;
scanf("%3d%f",&x,&y);
}
A、12345B、123C、45D、345
24、若有以下定义inta,b;floatx,则正确的赋值语句是(B)
A、a=1,b=2
B、b++;
C、a=b=5
D、b=int(x);
25、以下程序的执行结果是(A)
#include
{
inti=10,j=10;
printf("%d,%d\n",++i,j--);
}
A、11,10B、9,10C、11,9D、10,9
26、巳知字母A的ASCII码是65,以下程序的执行结果是(D)
#include
main()
{
charc1='A',c2='Y';
printf("%d,%d\n",c1,c2);
}
A、A,YB、65,65C、65,90D、65,89
27、下列运算符中优先级最高的是()
A、<B、十C、%D、!
=
28、判断char型变量cl是否为小写字母的正确表达式为(D)
A、’a’<=c1<=’z’B、(c1>=a)&&(c1<=z)
C、(‘a’>=c1)(‘z’<=c1)D、(c1>=’a’)&&(c1<=’z’)
29、字符串"a"在内存中占据的字节个数为(C)
A、0B、1C、2D、3
30、下面有关for循环的正确描述是(D)
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判定表达式
C、在for循环中,不能用break语句跳出循环体
D、for循环体语句中,可以包含多条语句,但要用花括号括起来
31、下面程序的运行结果是(C)
#include
main()
{
intnum=0;
while(num<=2)
{
num++;
printf(“%d,num);
}
}
A、1
B、12
C、123
D、1234
32、以下描述正确的是(C)
A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。
C、在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。
D、do-while循环中,根据情况可以省略while。
33、以下对二维数组a的正确说明是(C)
A、inta[3][];B、floata(3,4);
C、doublea[1][4];D、floata(3)(4);
34、若二维数组a有m列,则在a[j]前面的元素个数为(B)
A、j*m+i
B、i*m+j
C、i*m+j-1
D、i*m+j+1
35、下面不正确的字符串常量是(A)
A、'abc'B、"12'12"C、"0"D、""
36、以下选项中不合法的用户标识符是(A)
A、abc.cB、fileC、MainD、PRINT
37、在C语言中,逻辑值"真"的表示是用(C)。
A、trueB、整型值0C、非0整型值D、T
38、设C语言中,int类型数据占2个字节,则float类型数据占(D)个字节。
A、1B、2C、8D、4
39、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3'后,c2中的值为(A)。
A、DB、68C、不确定的值D、C
40、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()。
A、必须为大写
B、必须为下划线
C、必须为字母或下划线
D、可以是字母、数字和下划线中的任一种字符
41、一个C语言程序总是从(C)开始执行
A、书写顺序的第一个函数
B、书写顺序的第一条执行语句
C、主函数main()
D、不确定
42、设intx=3,y=4,z=5,则下列表达式中的值为0的是(D)
A、‘x’&&’y’B、x||y+z&&y-zC、x<=yD、!
((xz||1)
43、执行以下程序段后,i的值是(C)
inti=10;
switch(i+1)
{case10:
i++;break;
case11:
++i;
case12:
++i;break;
default:
i=i+1;
}
A、11B、13C、12D、14
44、语句while(!
e);中的条件!
e等价于(A)
A、e==0B、e!
=1C、e!
=0D、运行时出错
45、用inta[4]={1,2};对数组进行初始化后,数组元素a[3]的值是(B)
A、随机值B、0C、1D)、F
46、在执行charstr[10]=“china\0”;strlen(str)的结果是(A)
A、5B、6C、7D、9
47、用C语言编写的代码程序(B)
A、可立即执行B、是一个源程序C、经过编译即可执行D、经过编译解释才能执行
48、C语言中用于结构化程序设计的三种基本结构是(A)
A、顺序结构、选择结构、循环结构B、if、switch、breakC、for、while、do-whileD、if、for、continue
49、下列选项中,不能用作标识符的是(D)
A、_1234_B、_1_2C、int_2_D、2_int_
50、在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则(B)
A、称为函数的直接递归调用B、称为函数的间接递归调用
C、称为函数的循环调用D、C语言中不允许这样的递归调用
51、完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为(D)
A、连接、编译B、连接、运行
C、编译、运行D、编译、连接
52、下列说法正确的是(B)
A、一个c语言程序并非总是从主函数位置开始执行的
B、一个c语言程序有且只有一个主函数
C、函数可以嵌套定义,不可以嵌套调用
D、程序函数的位置不可以任意
53、下面是合法C语言标识符的是( D )
A、2A_K;B、_M+N;
C、–M3;D、AC_2;
54、下列格式符中,可以用于控制字符输出的是(D)
A、%dB、%f
C、%oD、%c
55、设x、y、z和k都是int型变量,则执行表达式x=(y=4,z=16,k=30)后,x的值是(C)
A、4;B、16;
C、30;D、50;
二、填空题
1、C语言是由函数构成的,作为程序入口和出口的函数是。
2、C语言规定标识符只能由字母、和三种字符组成。
3、将下列数学式改写成C语言的表达式:
a=b或a4、在内存中,二维数组存放的顺序是。
5、若有定义:
doublea[3][5];则数组a中第一个元素为a[0][0],最后一个元素为。
6、在C语言中,表示逻辑"真"值用1.
7、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是8。
8、若x是int型变量,则执行下面表达式后,x的值为12。
x=(a=4,6*2)
9、若k为int整型变量且赋值7,请写出赋值表达式k*=k+3的运算结果70。
10、scanf函数是一个标准库函数,它的函数原型在头文件stdio.h中。
11、getchar函数可以接收单个字符,输入数字也按字符处理。
12、在语句中,给变量赋值时,赋值语句必须以分号结尾。
13、当a=3,b=2,c=1时,表达式f=a>b>c的值是0
14、设x,y,z均为int型变量,请写出描述"x,y中有一个为负数"的表达式x<0&&y>=0||y<0&&x>=0
15、若a=6,b=4,c=3,则表达式a&&b||b-c的值是1
16、设x=3,y=-4,z=5,则表达式!
(x>y)+(y!
=z)||(x+y)&&(y=z)的值是1
17、设inta=5,c=32;floatb=2.5;,表达式b+c/a的值为8.5。
18、若x和a均是int型变量,则计算x=(a=4,6*2)后x的值是12。
19、设a=3,b=4,c=5。
则a+b>c&&b==c的值为0。
20、有如下程序段:
intk=10;while(k=0)k=k-1;则循环体语句执行0次。
三、阅读下列程序,分析程序结果。
1、#include
main()
{
inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j)
sum=sum+a[i][j];
printf("sum=%d\n",sum);
}
答:
功能:
出矩形阵a的主对角线上的元素之和。
输出结果:
27
2、#include
main()
{charch=’A’;
ch=(ch>=’A’&&ch<=’Z’)?
(ch+32):
ch;
printf(“%c”,ch);
}
答:
程序的运行结果是:
a
3、#include
main()
{intsum=0,i=11;
while(i<=10)
{
sum=sum+i;
i++;
}
printf(“%d”,sum);
}
答:
程序的运行结果是:
0
4、#include
voidfun(intn)
{
staticx=1;
x*=n;
printf("x=%d\n",x);
}
voidmain(void)
{
inti;
for(i=1;i<8;i++)
if(i%2)continue;
elsefun(i);
}
答:
程序执行结果:
x=2
x=8
x=48
答:
程序的运行结果是:
123
5、#include
main()
{inta,b;
a=5;
b=8;
p(a,b);
p(a+b,a);
}
p(intx,inty)
{
y=x+y;
printf(“%d%d”,x,y);
}
答:
程序的运行结果是:
5131318
6、#include
main()
{
inta,s,n,count;
a=2;
s=0;
n=1;
count=1;
while(count<=7)
{
n=n*a;
s=s+n;
++count;
}
printf("s=%d",s);
}
答:
求S=0+2+4+8+16+32+64+128和,程序执行结果:
s=254
7、#include
main()
{inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(″%d,%d,%d,%d″,i,j,m,n);
}
答:
输出结果:
9,11,9,10
8、#include
intfac(intn)
{staticintf=1;
f=f*n;
return(f);
}
main()
{inti;
for(i=2;i<=5;i++)
printf(“%d!
=%d\n”,i,fac(i));
}
答:
输出结果:
2!
=2
3!
=6
4!
=24
5!
=120
四、按要求编写程序
1、满足a^2+b^2=c^2的一组正整数a、b、c,称为勾股数组。
试用输出100以内的所有勾股数组。
2、从键盘给3×4的二维数组输入12个整数,求该数组各元素之和与最小的元素值。
3、求100至1000之间的所有素数。
4、编一函数用选择法或起泡法实现排序功能。
5、试编程判断输入的正整数是否既是5又是7的正倍数。
若是,则输出yes;否则输出no。
#include
main()
{intx;
scanf("%d",&x);if(x%5==0&&x%7==0)
printf("yes");else
printf("no");}
6、判断数m是否为素数(只能被1和它本身整除的整数)
#include
#include
main()
{intm,i,k;
scanf("%d\n",&m);
k=sqrt(m);for(i=2;i<=k;i++)
{if(m%i==0)
break;}
if(i>k)
printf("misaprimenumber!
\n");
7、编写程序,打印下列图案
*
**
***
****
*****
8、编一程序:
从键盘输入10个整数,计算并输出这10个数的平均数。
#include
main()
{inta[10],j;
floatave=0;
for(j=0;j<10;j++)
{scanf(“%d”,&a[j]);
ave=ave+a[j];
}
printf(“ave=%f”,ave/10);
}
9、通过键盘输入3*4矩阵,编写一个函数求所有元素中的最大值,其中主函数完成3*4矩阵的输入和最大元素的输出。
#include
main()
{intmax(intarray[][4]);;
intk,j,a[3][4];
for(k=0;k<3;k++)
for(j=0;j<4;j++)
scanf(“%d”,&a[i][j]);
printf("themaxis%d",max(a));
}
intmax(intarray[][4])
{intk,j,max;
max=array[0][0];
for(k=0;k<3;k++)
for(j=0;j<4;j++)
if(array[k][j]>max)max=array[k][j];
return(max);
}