C语言小练习(六)

C语言小练习(六)_第1张图片
人生这条路很长,未来星辰大海般璀璨,不必踌躇于过去的半亩方塘,那些所谓的遗憾,可能是一种成长,那些曾受过的伤,终会化作前路的光,总有一天你会明白,真正能治愈你的从来不是时间,而是你内心那段释怀和格局,只要你的内心不慌乱,连世界都难影响你,我们唯一应该厌倦的是那些暗淡无光的日子,改变自己的内心,把思想化作行动,拥有独立的人格,提升自己,幸福会如阳光一样出现在黎明破晓时刻,艰难困苦,玉汝于成。

Day06

  • 一.选择题

一.选择题

1.下列程序执行后,输出的结果为()

#define _CRT_SECURE_NO_WARNINGS 1
#include 
int cnt = 0;
int fib(int n)
{
	cnt++;
	if (n == 0)
		return 1;
	else if (n == 1)
		return 2;
	else
		return fib(n - 1) + fib(n - 2);
}
void main()
{
	fib(8);
	printf("%d", cnt);
}

A: 41 B: 67 C: 109 D: 177

答案:D
答题思路:只要当n的值不为0和1,那么就需要调用一次函数:
C语言小练习(六)_第2张图片
✅运行结果如下:C语言小练习(六)_第3张图片

2.在上下文和头文件均正确的情况下,以下程序的输出结果是()

#include 
int main()
{
	int x = 1;
	do
	{
		printf("%2d\n", x++);
	} while (x--);
	return 0;
}

A: 1 B: 无任何输出 C: 2 D: 陷入死循环

答案:D
答题思路:我们会发现程序进入到了死循环:C语言小练习(六)_第4张图片

3.下面的代码,执行之后i和j的值是什么()

int i = 1;
int j;
j = i++;

A: 1,1 B: 1,2 C: 2,1 D: 2,2

答案:C
答题思路:本题需要了解到前置++后置++,前置++使用规则是先+1,后使用,后置++的规则是先使用,后+1。

4.以下程序k的最终值是()

int i = 10;
int j = 20;
int k = 3;
k *= i + j;

A: 90 B: 50 C: 70 D: 30

答案:A
答题思路:本题需要弄清楚操作符的优先级。k *= 30; k = 30*3 = 90;

5.以下C程序的输出结果是()

#include 
#include 
int a = 1;
void test()
{
	int a = 2;
	a += 1;
}
int main()
{
	test();
	printf("%d\n", a);
	return 0;
}

A: 1 B: 2 C: 3 D: 4

答案:A
答题思路:如果函数中的局部变量和全局变量同名,那么在函数内部局部变量会屏蔽全局变量,使用的是局部变量。因此本题中test函数内全局变量a被局部变量a屏蔽,对a的修改不会对全局变量a带来任何影响。
✅运行结果如下:
C语言小练习(六)_第5张图片

6.下列描述中正确的是()
A :表示m>n为true或者mn&&m B :switch语句结构中必须有default语句
C :如果至少有一个操作数为true,则包含“||”运算符的表达式true
D :if语句结构中必须有else语句

答案:C
答题思路:表示m>n为true或者mm>n||m.
switch语句结构中不一定要有default语句.if语句结构中不一定要有else语句.

7.C 语言规定,在一个源程序中,main函数的位置()
A :必须在最开始
B :必须在系统调用的库函数的后面
C: 可以任意
D :必须在最后

答案:C

8.以下叙述不正确的是()
A: 一个C源程序可由一个或多个函数组成
B:一个C源程序必须包含一个main函数
C:C程序的基本组成单位是函数
D:在C程序中,注释说明只能位于一条语句的后面

答案:D
答题思路:C语言风格的注释: /* xxxxxxxxxxxxxxxxxx */
C++风格的注释:// xxxxxxxxxxx

9.以下叙述正确的是()
A :在C程序中,main函数必须位于程序的最前面
B :C程序的每行中只能写一条语句
C :C语言本身没有输入输出语句
D :在对一个C程序进行编译的过程中,可发现注释中的拼写错误

答案:C
答题思路:main函数可以放在任何位置。 C语言可以一行多语句,也可以一条语句写多行。C语言是给定了语法,输入输出是库函数提供的。注释中的错误是发现不了的。

10.在上下文及头文件均正常的情况下,执行如下代码, c 的值是()

int a = 0, c = 0;
do{
--c;
a = a-1;
}while(a > 0);

A:0 B:1 C:-1 D:死循环

答案:C
答题思路:由--c得到c=-1,由a = a-1得到a=-1,又a=-1跳出循环所以c=-1.

11.假定 x 和 y 为 double 型,则执行 x=2; y=x+3/2; 后y的值为()
A: 3.500000
B: 3
C: 2.000000
D: 3.000000

答案:D
答题思路:整数相除结果还为整数,因此,3/2的结果为1y=x+1=2+1=3,又ydouble类型的,所以,y的值为3.000000.

12.以下for循环的执行次数是()

for(int x = 0, y = 0; (y = 123) && (x < 4); x++);

A: 是无限循环
B: 循环次数不定
C: 4次
D: 3次

答案:C
答题思路:
C语言小练习(六)_第6张图片

13.若有定义语句:int year=1009,*p=&year;以下不能使变量 year 中的值增至 1010 的语句是()
A: *p+=1;
B: (*p)++;
C: ++(*p)
D: *p++

答案:D
答题思路:A、B、C三个选项中都是*p通过指针访问到year,然后对它的值进行了修改。D选项中对指针 p 先进行自增操作,这会将 p 指向下一个地址,但不会修改 year 的值。*p++;相当于*p;和p++;两步操作。
✅运行结果如下:C语言小练习(六)_第7张图片
C语言小练习(六)_第8张图片
C语言小练习(六)_第9张图片
C语言小练习(六)_第10张图片

14.选择表达式 11|10 的结果(本题数值均为十进制)()
A: 11
B: 10
C: 8
D: 2

答案:A
答题思路:对于两个数a和b,用按位或运算符求c = a|b;,需要先写出a和b的二进制位的补码形式,然后一一对比,只要当两个数a和b的对应的补码有一个为1的时候,按位或的结果就是1,否则为0。
在这里插入图片描述
所以,按位或之后的结果为11.

15.char a; int b; float c; double d;则表达式 a*b+d-c 值的类型为()
A float
B int
C char
D double

答案:D
答题思路:在四则混合运算中,数据类型不同时会遵守一定的转换规则先进行数据类型的自动转换再进行运算。转换规则如下:
C语言小练习(六)_第11张图片

好啦,第六天的练习到这里就结束啦!后期会继续更新C语言的小练笔,欢迎大家持续关注、点赞和评论!❤️❤️❤️

你可能感兴趣的:(c语言,算法,开发语言)