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

  • 2019 年 11 月 1 日
  • 筆記

这是奔跑的键盘侠的第146篇文章 作者|我是奔跑的键盘侠

来源|奔跑的键盘侠(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

奔跑的键盘侠原创作品 | 尽情分享朋友圈 | 转载请联系授权