前言
今天是刷题第15天,放弃不难,但坚持一定很酷~
再刷一套模拟题
C语言百日刷题第十五天
- 前言
- 一、选择题
- 二、判断题
- 三、多选题
- 四、填空题
- 五、分析程序题
一、选择题
1.下列选项中,不属于开发一个C语言应用程序的具体实现步骤的是()
A、 启动开发工具
B、 编辑、编译
C、 组建
D、 运行程序
正确选项:A
2.下列选项中,关于main()函数叙述不正确的是()。
A、 一个完成的C语言程序中,有且只能有一个main()函数
B、 main()函数是程序的主入口,程序总是从main()函数开始执行
C、 如果没有声明main()函数,程序将从第1行开始执行
D、 main()函数可以有返回值,也可以没有返回值
正确选项:C
main函数是C语言的入口,没有Main函数,程序将无法进行
3.下列关于注释的描述中,错误的是()。
A、 C语言中的注释有两种类型:单行注释和多行注释
B、 所有的注释都可以嵌套使用
C、 单行注释用“//”符号表示,后面为被注释内容
D、 多行注释用“/”开头,以符号“/”结尾
正确选项:B
4.关于#include<stdio.h>这句代码,下列描述中错误的是()。
A、 “#”是预处理标志,用来对文本进行预处理操作
B、 include是预处理指令
C、 一对尖括号可以去掉
D、 stdio.h是标准输入输出头文件
正确选项:C
5.下列程序的输出结果是_______。
double d=3.2;int x=1.2,y;
y=(x+3.8)/5.0;
printf("%d\n",d*y);
A、 3
B、 3.2
C、 0
D、 3.07
正确选项:C
定义的x与y都是整型,使用int x = 1.2 会舍去小数点后面的部分,x实际数值为 1
所以,(1+3.8)/5 = 0.几,但是y也是整型,会舍去小数点后面的数,所以y=0,所以d*y的结果也为0。
6.下面程序运行后的输出结果是( )。
int a=1,b=0;
printf("%d",b=a+b);
printf("%d\n",a=2*b);
A、0,0
B、1,0
C、3,2
D、1,2
正确选项:D
打印的结果:
b=a+b=1+0=1
a=2b,此时b已经是1了,所以a=2b应该为2*1=2
7.以下程序运行后的输出结果是_____。
int x=011;
printf("%d\n",++x);
A、 12
B、 11
C、 10
D、 9
正确选项:C
在C语言中,二进制的数以0b开头、八进制的数以0开头,十六进制的数以0x开头
既然是八进制,那么我们转化为十进制:18+11=9
++x是先加一在取值使用,所以输出的是9+1=10
8.已知 int x=10, y=20, z=30; 以下语句执行后 ,x ,y ,z 的值是____。
if(x>y)
z = x;
x = y;
y = z;
A、 x = 10, y = 20, z = 30
B、 x= 20, y = 30, z = 30
C、 x =20, y=30, z = 10
D、 x = 20, y = 30, z = 20
正确选项:B
if语句默认只能执行一条语句,此题中x并不大于y,所以z = x这条语句不执行。
但是x= y 和 y=z是执行的,所以X=20,Y=30,而Z不变,还是30。
9.for(i=1;i<9;i+=1)
该循环共执行了多少次_______。
A、 7
B、 8
C、 9
D、 10
正确选项:B
i+=1等价于i=i+1 从1开始算。
共有i=1、2、3、4、5、6、7、8这八种情况。
所以共执行了八次循环。
10.下列字符串能作为变量名的是( )
A、3int
B、float
C、 _2xy
D、break
正确选项:C
变量名称设定的规矩就是第一个字不能是数字,并且你命名的变量名不能和C语言中的32个关键字相同。
11.以下说法中正确的是_______________。
A、 C语言程序总是从第一个定义的函数开始执行。
B、 在C语言程序中,要调用的函数必须在main( ) 函数中定义。
C、 C语言程序总是从main( ) 函数开始执行。
D、 C语言程序中的main( ) 函数必须放在程序的开始部分。
正确选项:C
C语言程序的入口就是main函数,不管main函数在哪里,C语言都是从main函数进入。
12.根据C语言的语法规则,下列_______是不合法标识符。
A、while
B、Name
C、Rern5
D、_exam
正确选项:A
变量名称设定的规矩就是第一个字不能是数字,并且你命名的变量名不能和C语言中的32个关键字相同。A和关键词while循环相同,所以不合法。
13.下面的变量说明中正确的是___________。
A、 int:a, b, c;
B、int a; b; c;
C、 int a, b, c
D、 int a, b, c;
正确选项:D
14.C语言用( )表示逻辑“真”值。
A、 True
B、 t 或 y
C、非零值
D、整型值0
正确选项:C
C语言规定0为假,非0为真,至于true则是布尔类型,但是C语言中没有布尔类型。
15.设有说明语句char a=\101;
则变量a________。
A、 包含4个字符
B、 包含3个字符
C、 包含2个字符
D、 包含1个字符
正确选项:D
char型变量只能装得下一个字符
16.以下程序段的输出结果是int a=12345678;printf("%4d\n",a);
()
A、12
B、34
C、1234
D、12345678
正确选项:C
%d是打印全部,%4d是打印4个宽度的数据,数据不足四个宽度就用空格补上,多了也只打印四个宽度的数据。
17.以下程序运行结束后,x和y的值分别为( )
main()
{ int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf(“%d %d”,x--,y);
}
A、 10 1
B、 9 9
C、 9 1
D、 8 2
正确选项:D
问最后的x和y的值,扫一眼循环就行了。循环结束的条件是x>8,那么x肯定是等于8的时候结束。ABC的x都比8大,只能选D
18.分析下面程序运行结果()
#include <stdio.h>
void main()
{ int y=10;
do{y--;}
while(--y);
printf("%d\n",y--);}
A、-1
B、 1
C、 8
D、 0
正确选项:D
只有当循环的控制表达式为0时,循环才结束,所以只能是0。
19.有以下程序段while 循环执行的次数是()
int k=0;
while(k==1)
k++;
A、无限次
B、 有语法错,不能执行
C、 一次也不执行
D、 执行1次
正确选项:C
K=1时控制表达式才为真,而前面设置的K=0,明显不符合k= 1,所以不符合循环开始的条件,但是语句并没有错误,所以一次循环也不执行。注意:在c语言中等于号是==而不是单个=,单个=的意思是赋值。
20.设int x,y,z ;
则执行语句x=(y=(z=10)+5-5)
后x, y和z的值是()
A、 10 15 10
B、 10 10 10
C、 10 10 15
D、 10 5 10
正确选项:B
x=(y=(z=10)+5-5) 括号内部的优先算,=是赋值的意思。
这段代码的意思是,先把10赋值给z,在把z+5-5的值赋值给y,最后把y的值赋值给x
所以xyz都为10
21.设a=1,b= -3,c=0
下面表达式为0的是 ()
A、b>a&&a<c
B、a-3‖‖(c=0)
C、(c>a)= =(b>5)
D、!a&&b‖‖a&&(c+1)
正确选项:A
&&是全真为真,一假全假。||是一真则真,全假为假。b=-3明显小于a=1,前面一句错了,则A直接错。B、D错的离谱,我解释下可能有疑问的C,(c>a)是错的,所以返回值是0,(b>5)也是错的,返回值也是0,所以(c>a)和(b>5)的返回值相同,所以C选项为真
22.若x,y均定义为int型,z为double型,以下不合法的scanf函数调用语句是()
A、scanf("%d%d,%lf",&x,&y,&z);
B、scanf("%x,%d,%lf",&x,&y,&z);
C、scanf("%d,%x,%lf",&x,&y,&z);
D、scanf("%d,%d,%x",&x,&y,&z);
正确选项:D
%x是16进制的占位符,一般是无符号整型使用
23.下面程序的输出结果是 ()
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;
case 3: a++; b++; }
printf("a=%d,b=%d\n",a,b); }
return 0;}
A、 a=1,b=0
B、 a=1,b=1
C、 a=0,b=1
D、 a=0,b=0
正确选项:A
x=1进入case 1 ;y=0进入第二个switch的case 0
case 0 是先把a+1再跳出来。所以此时a=1,b还是0
24.希望表示关系x≥y≥z,应使用C语言表达式()
A、 (x>=y)&&(y>=z)
B、 (x>=y) AND (y>=z)
C、(x>=y>=z)
D、 (x>=z)&(y>=z)
正确选项:A
25.运行完下列程序后,在屏幕上的内容是 ()
void main ()
{ int a=0;
a+=(a=12);
printf ("%d\n",a);
}
A、 0
B、 6
C、 12
D、 24
正确选项:D
()的运算优先级是最高的,所以是先把12赋值给a,而a+=(a=12)的意思是:
a=(a=12)+a,而此时a=12,所以相当于是a=12+12=24.
26.使用语句scanf("x=%f,y=%f",&x,&y);
输入变量x,y的值([]代表空格),正确的输入是()
A、1.25,2.4
B、1.25[]2.4
C、 x=1.25,y=2.4
D、 x=1.25[]y=2.4
正确选项:C
scanf函数的输入格式要和“”内部的保持严格一致,内部是什么样,输入的时候就要和它一样。
27.下面程序的运行结果是( )
#include<stdio.h>
void main()
{
int num=0;
while(num<=2)
{
num=num+1;
printf(“%d\n”,num);
}
}
A、1
B、1 2
C、1 2 3
D、1 2 3 4
正确选项:C
while循环的条件是num<=2,并且每循环一次,num+1,所以num只有0,1,2是小于等于2的所以只能循环三次,所以选有三个数的。
28.设有说明“int x=3,y=4;",则++x>y--?x:y
的值为( ).
A、4
B、1
C、2
D、3
正确选项:D
三目运算符a?b:c的意思是,如果a表达式对,则运行b否则运行c
++x是先加1,y—是先给值后减1,而x=3,3+1=4并不大于4,所以为加,执行:后的表达式,即输出y的值,而y在比较后要减一,此时为3
29.循环体内的continue语句的作用是:( )
A、 结束本次循环进行下次循环
B、 继续执行循环体中后面的语句
C、 跳出本层循环
D、 跳出所有的循环
正确选项:A
continue语句的作用就是结束本次循环后面的语句,直接开始下一次循环。
30.C语言程序能够在不同的操作系统运行,这说明C语言具有很好的____。
A、 适应性
B、 移植性
C、 兼容性
D、 操作性
正确选项:B
31.1972年,美国贝尔实验室的Dennis M.Ritchie在_____ 语言的基础设计出了C语言,被称为C语言的鼻祖。( )
A、 BASIC
B、 FORTRAN
C、 B
D、 ALGOL 60
正确选项:C
32.下列语言中不属于计算机语言的三大类的是()。
A、 机器语言
B、 脚本语言
C、 高级语言
D、 汇编语言
正确选项:B
33.C语言程序的执行,总是起始于______。
A、 程序中的第一条语句
B、 main函数
C、 本程序中的第一个函数
D、 包含的文件中的第一个函数
正确选项:B
34.C语言程序注释语句的格式是:( )
A、 以“/%”开始,“%/”结束
B、 以“/ * ”开始,“* /”结束
C、 以“/ * ”开始,“/ *”结束
D、 以“/ * ” 开始,“ * /”结束
正确选项:B
注释的两种方法:// 或者 / * * /
35.C语言编译程序的首要工作是_____。
A、 检查C语言程序的语法错误
B、 检查C语言程序的逻辑错误
C、 检查程序的完整性
D、 生成目标文件
正确选项:A
语法要是错了,根本没后面的事。
二、判断题
1、计算机不需要翻译就能直接识别的语言被称为汇编语言。
错
计算机直接识别的语言叫机器语言。
2、C语言只适用于系统软件的开发。()
错
3、机器语言是由二进制数0和1组成的一串指令。()
对
4、在C语言程序中,一个语句的结束用“;”来标记。()
对
5、switch的default子句可以省略不用。
对
6、若int a=2, b=5; printf(“a=%d,b=%d”,a,b);
输出正确的是: a=2,b=5。
对
三、多选题
1、C语言具有哪些特点?( )
A、 可移植性好
B、 运算符与数据类型丰富
C、 属于强类型语言
D、 语法检查严格
E、 简洁灵活
F、 结构化
正确选项:A、B、E、F
2、C语言的主要应用有哪些?()
A、 开发系统软件
B、 开发大型应用软件
C、 编写个人网页
D、 编写硬件设备的驱动程序
E、 开发游戏软件
F、 编写通信程序
G、 编写广告文案
正确选项:A、B、D、E、F
四、填空题
1、C语言程序的函数组成包括了两个部分,_____ 和 _______,后者被包含在一个花括号里。
函数头
函数体
2、从功能上看,scanf是______函数,printf是________函数,它们俩都带有参数。
输入
输出
五、分析程序题
分析下面程序,说出其功能
#include<stdio.h>
int main()
{
int m,n,i,j;
int max=0;
scanf("%d%d",&m,&n);
for(i=m;1;i++)
{
if(i%m==0&&i%n==0)
break;
}
for(j=1;j<=n;j++)
{
if(m%j==0 && n%j==0)
{
if(max<j)
max=j;
}
}
printf("%d *************%d\n",i,max);
return 0;
}
程序功能:输出输入的两个数的最小公倍数和最大公约数
第一个循环的作用:只有i可以同时整除m和n的时候才会执行break跳出循环。所以第一个循环的作用就是找到m和n的最小公倍数。
第二个循环的作用:找出可以同时被m和n整除的数,并且通过if语句,使max是最后的最大公约数。