专栏首页奔跑的键盘侠C语言——小学一年级题目解析(二)

C语言——小学一年级题目解析(二)

这是奔跑的键盘侠的第141篇文章

作者|我是奔跑的键盘侠

来源|奔跑的键盘侠(ID:runningkeyboardhero)

转载请联系授权(微信ID:ctwott)

搬砖继续……

第5题

上一期有提过if,else后面跟大括号的问题{},如果没有大括号,只执行第一句。

if成立的话,执行a=3,判断语句结束。也就是既要执行a=3,也要执行b=3。

if不成立的话,跳过a=3,判断结束。也就是只执行b=3。

显然,2>1,if不成立, 只执行b=3。输出结果a为首次赋值的2,b为第二次赋值3。

至于缩进,虽然if后面两行都有缩进,但并起不到大括号的作用。所以if,else语句务必要养成默认使用大括号的习惯,以减少不必要的麻烦。

#include "stdio.h"
int main()
{
int a=2,b=1;
if(a<b) 
a=3;
b=3;
printf("%d,%d",a,b);
}
C:\Users\Desktop\2019_943_10.c: In function 'main':
C:\Users\Desktop\2019_943_10.c:5:2: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
  if(a<b)
  ^~
C:\Users\Desktop\2019_943_10.c:7:3: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'
   b=3;
==========编译成功后开始运行==========
"C:\Users\Desktop\2019_943_10.exe"
Process started (PID=20680) >>>
2,3<<< Process finished (PID=20680). (Exit code 0)

================ READY ================

注意,按照题目里的缩进格式coding,虽可以编译成功,但是会有一个warning(红字部分)。

当然,如果把b=3的缩进取消(跟if对齐),编译错误就自动消失了。运行结果不变。

第6题

关于循环中的for, do...while,while, 应用有这么一个优先顺序:确定循环次数的,优先用for循环;至少要执行一次的,用do……while;其他场景再优先考虑while。

这个题目考察的是do...while的运行次序。do在前的,循环至少进行一次,然后才是while判断。

故直接输出x=x-2的值,1。接着,while判断(!0),非零为真,会再来一次do循环,而经过while的判断x=0了。

第二轮do,输出x=x-2的值,-2。while判断(!(-3)),负数为假,非负数为真,继续do循环,此时x=-3。

至此,可以发现while中的--x,每一轮会减少3。从0,-3,-6,-9……往下递减,while会一直成立。

死循环。

============

测试了一下代码,发现并没有死循环

而是输出了1 和-2,结束。

作为一名业余小白,情有可原吧,基础有待加强。网上科普了一下,关于数值的逻辑值,有这么一句话“非0即真”,也就是说只有0为False,其他数值都是True,然后!要再取个反。

额,慢慢消化一下。

#include <stdio.h>
int main()
{
int x=3;
do{
printf("%d\n",x-=2);
}while(!(--x));
return 0;
}
==========编译成功后开始运行==========
"C:\Users\wangchao\Desktop\ky\c_exam_test\2019_943_11.exe"
Process started (PID=4628) >>>
1
-2
<<< Process finished (PID=4628). (Exit code 0)

================ READY ================

第7题

do在前的,循环至少进行一次。

第一轮:x=1 while,非0即真:1为真,!1假,循环结束。

只循环一次。

#include <stdio.h>
int main()
{
int x=-1;
do{
x = x*x;
printf("%d",x);
}while(!x);
}
==========编译成功后开始运行==========
"C:\Users\wangchao\Desktop\ky\c_exam_test\2019_943_12.exe"
Process started (PID=10020) >>>
1<<< Process finished (PID=10020). (Exit code 0)

================ READY ================

第8题

这个一个概念理解的题目,关于数组的初始化。其实还没学到这一章节,简单翻了一下网上介绍,硬着头皮来讲一下吧。如果有谬误,请大家批评指正。

从一维数组说起,定义一维数组时可以指定数组长度:如果元素值只写了一半(至少要写一个值),后面一半默认为0。

如果不指定数组长度,那定义时大括号中元素值的个数就是数组的长度,说白了,还是变相的定义了数组的长度(让计算机自己去数定义了几个元素,这样也挺好的,不需要我们自己去数数再填写,更不会出错)。

总之,一维数组在定义的时候,就决定了数组的长度。

接着,说二维数组,关于第一维可以省略、第二维不可省略,我是这样理解的:

一个常见的场景,比如计算机等级考试报名信息统计表,有几个字段(姓名,性别,学号,考试科目)等等都是预设好的可以非常迅速的人工数出来(这个对应的是二维的长度,也就是列),等学生报名完,要统计报名情况。有多少人报名了??这个就是未知数了(对应的一维的长度,也就是有多少行,未知)。

在我们录excel表的时候,逐行录入,录到最后一张报名表,才知道总共有多少个人报名了(对应多少行,也就是一维的长度)。

大概就是这么个道理吧。

关于这道题目,首先可以排除A,二维长度不可省略;

然后C,2行4列,结果搞成了3行,错误;

关于B,D。乍一看没毛病,仔细看,才发现,D少了一个逗号;

选B。

可能有同学有疑问,D如果加上逗号,对不对?测试一看便知:

#include <stdio.h>
int main()
{
int i=0;
int j=0;
int a[][3]={{1,0,1},{},{1,1}};
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
==========编译成功后开始运行==========
"C:\Users\wangchao\Desktop\ky\c_exam_test\2019_943_13.exe"
Process started (PID=14860) >>>
1 0 1 
0 0 0 
1 1 0 
<<< Process finished (PID=14860). (Exit code 0)

================ READY ================

D如果加上逗号,就没毛病了。

本文分享自微信公众号 - 奔跑的键盘侠(runningkeyboardhero),作者:我是奔跑的键盘侠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C语言——小学三年级题目解析(一)

    a>0成立,进入if(b>0)循环,b>0不成立,走else,也就是a--,减完之后a为0。

    Ed_Frey
  • C语言——小学题目B卷解析(终)

    第6题,简单说明:系统有默认的转化规则,就是从精度底的转化为精度高的,避免计算时精度的丢失。coding一下:

    Ed_Frey
  • Python—微信好友云图怎么玩

    代码来源:https://www.cnblogs.com/taixiang/p/9124822.html

    Ed_Frey
  • 2016广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛 题解&源码

    Problem A: pigofzhou的巧克力棒 Description 众所周知,pigofzhou有许多妹子。有一天,pigofzhou得到了一根巧克力棒...

    Angel_Kitty
  • LeetCode 1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold

    ShenduCC
  • 吉林大学考研复试题目(牛客网)

    ​ 一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。如果这是一个小写字符,则它和字符'a’的距离与它的反码和字符'z’的距离相同;...

    Kindear
  • 牛客练习赛51 D 羊吃草

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    用户2965768
  • python元组,文件的操作

    新手刚刚开始学习python,如有写错或者写的不好的地方,请大家多多指导! python元组相加 a = (1,2) b = (3,4) a + b 元组运用乘...

    py3study
  • 解决Scrollview 嵌套recyclerview不能显示,高度不正常的问题

    我们先看一个效果,问题说的就是中间的Grid效果在Scrollview 嵌套recyclerview显示问题,在Android Api 24是好的,不过在5,1...

    xiangzhihong
  • Android 滑动效果高级篇(八)—— 自定义控件

    自定义控件,较常用View、ViewGroup、Scroller三个类,其继承关系如下:

    阳光岛主

扫码关注云+社区

领取腾讯云代金券