C语言——小学三年级题目解析(二)
- 2019 年 11 月 12 日
- 筆記
作者|我是奔跑的键盘侠
来源|奔跑的键盘侠(ID:runningkeyboardhero)
转载请联系授权(微信ID:ctwott)
搬砖继续……
终于,到了A卷最后一期了,不容易啊。
这期可能解析稍微详细了一点,耗费时间精力不少,B卷可能会简略一些。大家如果有问题可以留言。
年级只是代表题型,难度不做区分。规则:
一年级:选择题;
二年级:填空题;
三年级:阅读题;
四年级: 编程题。
第4题

首先定义了几个变量,sum=0,初始化一个6×6的二维数组、整型。
然后两层嵌套循环输入数组的值,先第一行6个,再第二行……
一句话:根据用户输入的整数,构造了一个6×6的二维数组。
后面一个两层for循环,是用来求和的,sum=sum+array[i][j]。看清楚i,j的始末,也就知道了是求哪些元素的和了。
i从1开始,也就是第二行,到5结束,也就是从第二行到第六行;
j从0开始到5,也就是所有的列。
if语句,i==j是对角线上的元素,对应的是1,1;2,2;3,3;4,4;5,5;这5个元素。而i+j==5,是另外一个对角线,对应的1,4;2,3;3,2;4,1;5,0
画个图吧,更形象一点:

也就是图中的黄色单元格的值,与深灰色单元格的值求和。
一句话:数组中对角线元素之和(不含左上角、右上角两个元素)。
答案就不整理了,只要能讲明白都OK。
第5题

p1=a,等价于p1=&a[0],p1+2,也就是&a[2],所以第一个输出就是4+换行符.
而p1=a+2,等价于p1=&a[0]+2=&a[2],再次输出时又后移了2位到&a[4],输出6+换行符.
而p2是指向了"computern"这个字符串,+2要后移两位,输出自然就是
mputer+换行符。最后这个换行符是字符串中n引发的。
编译运行一下看
#include <stdio.h> int main(){ int a[]={2,3,4,5,6}; int* p1; char* p2="computern"; p1=a; printf("%dn",*(p1+2)); p1=a+2; printf("%dn",*(p1+2)); printf("%s",p2+2); return 0;}
==========编译成功后开始运行==========
"C:Users2019_943_132.exe"
Process started (PID=32308) >>>
4
6
mputer
<<< Process finished (PID=32308). (Exit code 0)
================ READY ================
第6题

i从10开始一直到98,共89个数字,都是二位数,i/10就相当于取十位上的数字
i/10, 10个1,10个2……10个8,9个9。
i/10%10, 接着上一步继续取余,结果一样的说,还是十位上的数。
i%10,也就是取个位数。
说白了就是个位+十位==4的数,输出

#include <stdio.h> int main(){ int i; for(i=10;i<99;i++){ if(i/10%10+i%10==4){ printf("%dn",i); } } return 0;}
==========编译成功后开始运行==========
"C:Users2019_943_133.exe"
Process started (PID=15888) >>>
13
22
31
40
<<< Process finished (PID=15888). (Exit code 0)