2022-2023-1 20221424 《计算机基础与程序设计》第6周学习总结

2022-2023-1 20221424 《计算机基础与程序设计》第6周学习总结

作业信息

这个作业属于哪个课程 <班级的链接>(如2022-2023-1-计算机基础与程序设计
这个作业要求在哪里 <作业要求的链接>(如2022-2023-1计算机基础与程序设计第一周作业)
这个作业的目标 Polya如何解决问题,简单类型与组合类型,复合数据结构,查找与排序算法,算法复杂度,递归,代码安全
作业正文 https://www.cnblogs.com/Yu-Hongruojir/p/16773604.html

教材学习内容总结

  • How to solve it:理解问题,设计方案,执行方案,分析与回顾
  • 算法的概念与简单设计
  • 查找算法,排序算法,递归算法
  • 信息隐藏,抽象,命名,测试思想
  • 由关键词if、else、switch等为代表的条件控制语句
  • 逻辑运算

教材学习中的问题和解决过程

  • 问题:在很早以前,我尝试写过一元二次方程求根的程序,代码如下:
点击查看代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
	printf("一元二次方程ax^2 + bx + c = 0求根计算器\n");
	float a, b, c, x1, x2, x, m;
	printf("请输入a:");
	scanf(" %f", &a);
	printf("请输入b:");
	scanf("%f", &b);
	printf("请输入c:");
	scanf("%f", &c);
	m = b * b - 4 * a * c;

	if (a == 0 & b == 0)
	{
		printf("该式错误");
		system; "pause";
	}

	else if (a == 0)
	{
		printf("此方程不是一元二次方程\n");
		x = -c / b;
		printf("计算中......\n");
		printf("x = %f", x);
		system; "pause";
	}	

	else if(m < 0)
	{
		printf("方程无解\n");
		system; "pause";
	}

	else
	{
		x1 = (- b + sqrt(m)) / (2 * a);
		x2 = (- b - sqrt(m)) / (2 * a);
		printf("计算中......\n");
		printf("x1 = %f\n", x1);
		printf("x2 = %f\n", x2);
	}

	return 0;
}
其中第十七行是“if (a == 0 & b == 0)”,我的本意是a=b=0。但学了逻辑运算后,我知道了“逻辑与”的符号其实是&&。但是我的代码并没有出错,运行结果也是正常,想知道原因。
  • 问题解决方案:通过观看带你学C带你飞相关视频得知,在C语言中,若一个式子成立,其输出结果为1。如果我在上面的程序中输入a=b=0,则“a= =0”输出为1,“b= =0”输出也为1。if语句的本质是括号里面的表达式输出1,则执行后面的语句。如果我代码是“&&”,则两个式子逻辑与输出仍然是1,即1&&1=1。而“&”符号其实是按位与,1&1=1。故代码能正常执行。(属于是歪打正着了)

代码调试中的问题和解决过程

  • 问题:如图

  • 问题解决方案:while语句后加了分号,加分号表示空语句。

上周考试错题总结

无错题

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第三周 200/385 3/7 13/45
第四周 150/535 2/9 17/52
第五周 170/705 2/11 15/67
第六周 300/1005 6/17 20/87
  • 计划学习时间:18小时

  • 实际学习时间:20小时

  • 改进情况:数组部分的作业有很大难度,我应该更加钻研。

参考资料

posted @ 2022-10-09 20:35  烟火-人间  阅读(7)  评论(0编辑  收藏  举报