2022-2023-1 20221312 《计算机基础与程序设计》第八周学习总结
作业信息
班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08
作业目标:面向对象,面向过程,顶点,指针,编译器定义,翻译过程,继承,多态
作业正文:2022-2023-1 20221312 《计算机基础与程序设计》第八周学习总结 - 221421李旻奇 - 博客园 (cnblogs.com)
教材学习内容总结
学习了《计算机科学概论》第九章,对翻译过程有了初步的理解,明白了面向对象和面向过程与他们的侧重,面向对象侧重于对象和他们在问题中的交互,而面向过程则不是这样,知晓了设计过程中头脑风暴是设计方案的主要来源,经过过滤等步骤得出方案,因此计算机不是闭门造车的科学需要交流,再次重新理解了一次编译过程以及区分了编译器和解释器的区别,有一次深刻理解了Java是设计出来而不是发展出来这种说法,其具有极高的可移植性,甚至Java能被编译成一种标准的机器语言——字节码,并以JVM运行它,最后这次学习的重点是是了解了泛型,但没有理解深刻不敢妄下定论。
其次在学习C语言过程中最值得称道的是声明器,指针的学习中我认为最能代表“精髓”两个字的就是它,比如说为什么数组特别是多维数组的命名要变成那种模样,就是为了使C语言中使用与声明形式一致尤其是声明器中优先级的设置是我见过的最好的设计,它的出现完全解释了指针数组与数组指针的命名方式与区别。令人叹为观止。
教材学习中的问题和解决过程
问题一:目前还无法理解是如何使用指针来访问和修改五维数组的各个元素的
解决:暂无解决,目前仍在学习中
问题二:int *func(char*,double)与int(*func)(char*,double)的区别
解决:经过分析得到第一个是一个函数声明且函数返回一个指针,而第二个是一个指针声明指向了一个函数;
代码调试过程中的问题和解决过程
我发现我在写循环嵌套和逻辑判断中有很大的问题
解决:可以等价一个嵌套的循环为一个逐个尝试的矩阵可能会比较好理解
问题:
在一起盗窃案中,法官对涉及到的四名犯罪嫌疑人A,B,C,D进行了审问.
A说:“罪犯在B,C,D三人之中.”
B说:“是C偷的.”
C说:“在A,D中间有一人是罪犯.”
D说:“B说的是事实.”
经查证,四人中有两人说了假话,两人说了真话。你能找出真正的罪犯吗?
我写的:
#include<stdio.h>//lmq
int main()
{
int A, B, C, D;
int a, b, c, d;
for (A = 0; A <= 1; A++)
{
for (B = 0; B <= 1; b++)
{
for (C = 0; C <= 1; C++)
{
for (D = 0; D <= 1; D++)
{
a = B || C || D;
b = C || !B;
c = (A + D == 1);
d = !B || C;
if (a + b + c + d == 2 && A + B + C + D == 1)
{
printf("%d,%d,%d,%d\n", A, B, C, D);
if (A)
printf("A是罪犯.\n");
if (B)
printf("B是罪犯.\n");
if (C)
printf("C是罪犯.\n");
if (D)
printf("D是罪犯.\n");
}
}
}
}
}
return 0;
}
我发现问题很大首先是便量的命名问题不注意大小写使程序无法运行
再次是逻辑判断的失误导致结果出错如
此为修改了循环后的结果,我未能判断出B与D的条件应该使用与运算而不是或运算