作者|我是奔跑的键盘侠
来源|奔跑的键盘侠(ID:runningkeyboardhero)
转载请联系授权(微信ID:ctwott)
想不出比较好的系列专题名称,暂且用《小学一年级题目解析》吧
第1题
if判断中的a++,先判断后自加,if不成立,但是依旧自加成6。
执行else 语句,先输出,后自减。输出的是6,但是输出完a的值是5。
#include "stdio.h"
int main()
{
int a=5;
if (a++>5) printf("%d\n",a);
else printf("%d\n",a--);
printf("The end value of a is %d.\n",a);
return 0;
}
==========编译成功后开始运行==========
"C:\Users\Desktop\2019_943.exe"
Process started (PID=14832) >>>
6
The end value of a is 5.
<<< Process finished (PID=14832). (Exit code 0)
================ READY ================
第2题
这题目考的比较鸡肋,看着眼花,但是没挖坑,所以很容易就找到第一个else中b<d这个分路,也就x=2这个答案。
关于if,else,有个坑,就是执行语句要用大括号{}括起来,不然的话只执行单行命令。
#include "stdio.h"
int main()
{
int a=1,b=3,c=5,d=4;
int x;
if(a<b)
if(c<d) x=1;
else
if(a<c)
if(b<d)x=2;
else x=3;
else x=6;
else x=7;
printf("%d\n",x);
return 0;
}
==========编译成功后开始运行==========
"C:\Users\Desktop\2019_943.exe"
Process started (PID=13648) >>>
2
<<< Process finished (PID=13648). (Exit code 0)
================ READY ================
第3题
关于switch,不知道是不是数据结构中讲的顺序链表,其中c存放的是地址,运行时,直接跳至case 2,未遇到break就会沿着链表顺序,继续下一个地址的操作,直到break才结束。也就是运行了case 2,case 3。
switch的设计比较特殊,记住即可。
#include "stdio.h"
int main()
{
int c=2;
switch(c)
{
case 4: c++;
case 2: c++;
case 3: c++;break;
case 5: c++;
}
printf("%d",c);
}
==========编译成功后开始运行==========
"C:\Users\Desktop\2019_943.exe"
Process started (PID=13040) >>>
4<<< Process finished (PID=13040). (Exit code 0)
================ READY ================
第4题
while在后,do循环至少做一次。
循环第一次:输出 i%8=2,而i的值i/8变成3;
循环第二次:输出 i%8=3,而i的值i/8变成0。
因为输出时没有\n换行符,所以输出的2和3在一起,也就是23。
#include "stdio.h"
int main()
{
int i=26;
do{
printf("%d",i%8);
i=i/8;
}while(i!=0);
}
==========编译成功后开始运行==========
"C:\Users\Desktop\2019_943.exe"
Process started (PID=21524) >>>
23<<< Process finished (PID=21524). (Exit code 0)
================ READY ================
-END-
© Copyright
奔跑的键盘侠原创作品 | 尽情分享朋友圈 | 转载请联系授权