✅1. 下面代码执行的结果是:( )
A.1 2 3 4 5 6 7 8 9 10
B.5 5 5 5 5 5 5 5 5 5
C.死循环的打印5
D.0 1 2 3 4 5 6 7 8 9
答案:C
解析:if (i = 5)
中i = 5
是一次赋值而不是一次判断,所以每次循环 i 都被重新赋值为5,会死循环的打印5✅ 2.关于if语句说法正确是:( )
A.if语句后面只能跟一条语句
B.if语句中0表示假,1表示真
C.if语句是一种分支语句,可以实现单分支,也可以实现多分支
D.else语句总是和它的对齐的if语句匹配答案:C
解析:
A:错误,if之后可以跟多条语句,跟多条语句时需要使用{}括起来
B:错误,0表示假,非零
表示真,即除了1其它的数字也能表示真
D:不一定,要看具体的代码,如果代码不规范,可能没有对齐,比如:
上述else虽然是和外层if对齐,但是会和内部if进行匹配
✅3.关于switch说法不正确的是:( )
A.switct语句中的default子句可以放在任意位置
B.switch语句中case后的表达式只能是整形常量表达式
C.switch语句中case子句必须在default子句之前
D.switch语句中case表达式不要求顺序答案:C
解析:A:正确,可以放在任意位置,但是一般建议最好还是放在最后
B:正确,case语句后一般放整形结果的常量表达式或者枚举类型,枚举类型也可以看成是一个特殊的常量
C:错误,没有规定case必须在default之前,一般case最好放在default之前
我们看到
default
在case
语句前面,但是还是优先匹配case
语句,不会因为default
语句在前面就先匹配它D:正确,但一般还是按照次序来
✅4.func(1) = ( )
A.30
B.20
C.16
D.0
答案:D
switch
的每个case
之后如果没有加break
语句,当前case
执行结束后,会继续执行紧跟case
中的语句
func(1)
可知,在调用func
时形参a
的值为1,switch(a)<==>switch(1)
,case 1
被命中,因为该switch
语句中所有分支下都没有增加break
语句,因此会从上往下顺序执行,最后执行default
中语句返回✅5.
switch(c)
语句中,c不可以是什么类型( )
A.int
B.long
C.char
D.float答案:D
解析:
switch
语句中表达式的类型只能是:整形和枚举类型
char
类型也是属于整型家族的,因为字符在存储的时候存储的是ASCII码值
D选项为浮点类型
,不是整型和枚举类型✅6.下面代码的执行结果是什么( )
A.secondthird
B.hello
C.firstsecond
D.hellothird
答案:D
解析:
switch语句时多分支的选择语句,switch中表达式结果命中那个case,就执行该case子项,如果case子项后没有跟break语句,则继续往下执行
请看以下注解:
即:先在内部
switch
的default
位置打印hello
,紧接着在外部case2
中打印third
✅7.写代码将三个整数数按从大到小输出
例如:
输入:2 3 1
输出:3 2 1
代码演示:
✅8.写一个代码打印1-100之间所有3的倍数的数字
代码演示:
运行结果:
解题思路:
- 3的倍数一定能够被3整除,因此i%3==0表达式成立时,则i一定是3的倍数
- 要输出1~100之间的3的倍数,那只需要从1~100循环100次即可,每次拿到i之后,用i%3==0检测
如果成立:i是3的倍数,输出
如果不成立:i不是3的倍数✅9.给定两个数,求这两个数的最大公约数
例如:
输入:20 40
输出:20
代码演示:
最大公约数:即两个数据中公共约数的最大者
求解的方式比较多,暴力穷举、辗转相除法、更相减损法、Stein算法算法此处主要介绍:辗转相除法
思路:
例子:18和24的最大公约数
第一次:a = 18 b = 24 c = a%b = 18%24 = 18
循环中:a = 24 b=18
第二次:a = 24 b = 18 c = a%b = 24%18 = 6
循环中:a = 18 b = 6
第三次:a = 18 b = 6 c=a%b = 18%6 = 0
循环结束
此时b中的内容即为两个数中的最大公约数✅10.编写程序数一下 1到 100 的所有整数中出现多少个数字9
代码演示:
运行结果:
思路:
- 给一个循环从1遍历到100,拿到每个数据后进行一下操作
- 通过%的方式取当前数据的个位,检测个位数据是否为9
如果是,给计数器加1
通过/的方式取当前数据的十位,检测十位数据是否是9,
如果是,给计数器加1
循环一直继续,直到所有的数据检测完,所有9的个数已经统计在count
计数中✅11.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
代码演示:
运行结果:
思路:
- 从题目表达式可以分析出
该表达式主要由100项,奇数项为正,偶数项为负- 设置一个循环从1~100,给出表达式中的每一项:
1.0/i
, 注意此处不能使用1,否则结果全部为0
然后使用flag
标记控制奇偶项,奇数项为正,偶数项为负
然后将所有的项相加即可✅12.求10 个整数中最大值
代码演示:
运行结果:
思路:
- 定义一个数组
- 使用max标记数组中的最大值,采用循环的方式依次获取数组中的每个元素,与max进行比较,如果arr[i]大于 max,更新max标记的最大值,数组遍历结束后,max中保存的即为数组中的最大值
✅13.实现一个函数来交换两个整数的内容
代码演示:
运行结果:
思路:
题目比较简单,此处只需要清楚传值和传指针的区别即可
传值:形参是实参的一份拷贝,函数运行起来后,形参是形参,实参是实参,形参和实参没有任何关联性,改变形参时,不会对实参造成任何影响
传地址:形参是实参地址的一份拷贝,形参指向的实体是实参,对形参解引用后,拿到的内容就是实参,因此对形参解引用之后的内容进行修改,改变的就是实参