C语言——小学三年级题目解析(一)
- 2019 年 11 月 1 日
- 筆記
来源|奔跑的键盘侠(ID:runningkeyboardhero)
转载请联系授权(微信ID:ctwott)
搬砖继续^^
三年级,程序阅读题
第1题
a>0成立,进入if(b>0)循环,b>0不成立,走else,也就是a–,减完之后a为0。
答案:
a=0
末尾要打一个回车换行符。
编码运行一下看:
#include <stdio.h> int main() { int a=1,b=-1; if(a>0) if(b>0) a++; else a--; printf("a=%dn",a); return 0; }
Process started (PID=18796) >>>
C:Users2019_943_31.c: In function 'main':
C:Users2019_943_31.c:6:4: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
if(a>0)
^
<<< Process finished (PID=18796). (Exit code 0)
==========编译成功后开始运行==========
"C:Users2019_943_31.exe"
Process started (PID=8464) >>>
a=0
<<< Process finished (PID=8464). (Exit code 0)
================ READY ================
出现一个warning,是警告我们要用{ }来写if后面的语句。
不得不说,上面的coding习惯是不好的习惯,if及else只会执行后面一个分号语句。如果有接连2个分号语句,而你又没用括号,那默认只会执行第一个分号语句,第二个分号直接跳过。
第2题
attr[10]对应的是字母f,i–,一直到i=1为止,也就是从f54e32c2ba这个方式遍历字符。
if判断语句,判断值介于a和z之间的,也就是小写字母并且不等于a,z。显然就是fecb了,但是每个字符都要换行,答案:
f
e
c
b
b后面记得写个换行符。
coding如下:
#include <stdio.h> int main() { char attr[15]={"1ab2c23e45f"}; int i; for(i=10;i>0;i--){ if(attr[i]>'a'&&attr[i]<'z'){ printf("%cn",attr[i]); } } return 0; }
==========编译成功后开始运行==========
"C:Users2019_943_32.exe"
Process started (PID=11992) >>>
f
e
c
b
<<< Process finished (PID=11992). (Exit code 0)
================ READY ================
第3题
直接看main函数,i从1开始,每次加1直到i=5,循环5次;
然后看循环里面的内容,也就是func函数执行5次。
func函数再看一下,j=0, ++j后输出1;循环下去呢??
每次都跟首轮一模一样??显然不是。
这就涉及到static关键字的用法了。
存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。
也就是说赋值j为0,只一次。第二轮循环不会再赋值0了。而是接着上一轮的结果继续。
答案:
12345
这题没有换行符。
#include <stdio.h> void func(); int main() { int i; for(i=1;i<=5;i++){ func(); } return 0; } void func() { static int j=0; ++j; printf("%d",j); }
==========编译成功后开始运行==========
"C:Users2019_943_33.exe"
Process started (PID=8304) >>>
12345<<< Process finished (PID=8304). (Exit code 0)
================ READY ================
-END-
© Copyright
奔跑的键盘侠原创作品 | 尽情分享朋友圈 | 转载请联系授权