一、表格
问题 | 答案 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10132 |
我在这个课程的目标是 | 学习好C语言,熟练掌握编译代码的相关技巧,解决自己所遇到的问题 |
这个作业在那个具体方面帮助我实现目标 | 学习各种类型函数的定义、调用和申明,以及一些变量作用域 |
参考文献 | 百度,C语言程序设计,《C Primer Plus》 |
二、本周作业
1.PTA实验作业
1.1 题目名1 统计各位数字之和是5的数
题目内容:
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。
函数接口定义:
int is( int number );
void count_sum( int a, int b );
函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。
函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。最后按照格式
count = 满足条件的整数个数, sum = 这些整数的和
进行输出。题目保证0<a≤b≤10000。
裁判测试程序样例:
#include <stdio.h>
int is( int number );
void count_sum( int a, int b );
int main()
{
int a, b;
scanf("%d %d", &a, &b);
if (is(a)) printf("%d is counted.
", a);
if (is(b)) printf("%d is counted.
", b);
count_sum(a, b);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
104 999
输出样例:
104 is counted.
count = 15, sum = 3720
1.1.1数据处理
int is( int number )
定义函数
while(number!=0)
当number不等于零的时候开始进行循环
x=number%10;
y=y+x;
number=number/10;
用于计算各位数字之和是否等于5
if(y==5)
如果各位数字之和等于5,则进行 return 1;否则则返回return 0;
void count_sum( int a, int b )
定义函数
定义整型变量sum,count,i
for(i=a;i<=b;i++)
从最小值a开始进行循环一直到小于等于b的值
if(is(i))
判断是不是符合题意
如果是则进行累加,并且进行值的总和进行累加
最后进行输出count以及sum的值
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 验证题目所给数据 | |
66 888 | count = 15, sum = 3720 | 随机验证一组数据 |
203 401 | 验证特殊数据 |
1.1.4 PTA提交列表及说明
提交列表说明:
1.编译错误:有一句语句忘记打上“;”,将 number=number/10改正为 number=number/10;
2.答案正确:。。。。
1.2 题目2 解一元二次方程() *
题目内容:
请编写程序,解一元一次方程 ax^2+bx+c=0。
要求:
若a=0,则解一元一次方程。
若方程有唯一解,则输出方程的根;
若方程无解,则输出“无解”;
若方程有无穷多解,则输出“无穷多解”。
若a≠0,则解一元二次方程。
若Δ>0,则输出方程的两个不等的实根;
若Δ=0,则输出方程的两个相等的实根;
若Δ<0,则输出方程的两个共轭的虚根。
所有实数均以%g输出。
输入样例1
0 4.5 -3.6
输出样例1
x = 0.8
输入样例2
0 0 3.6
输出样例2
无解
输入样例3
0 0 0
输出样例3
无穷多解
输入样例4
-2 0.8 -0.06
输出样例4
x1 = 0.1, x2 = 0.3
输入样例5
-3 1.2 -0.12
输出样例5
x1 = x2 = 0.2
输入样例6
-0.2 0.04 -0.01
输出样例6
x1 = 0.1-0.2i, x2 = 0.1+0.2i
提示:注意实数的负零问题和误差问题。
1.2.1数据处理
先进行浮点型变量的定义a, b, c, x1, x2, x,delt=0;
输入a,b,c的值
if (a==0)
判断a是否等于零
if (b!=0&&c!=0||b!=0&&c==0)
分b不等于零c不等于零以及b不等于零c等于零情况讨论
if (x==-0)
如果X==-0则进行输出-x,否则进行输出x
if (b==0&&c!= 0)
如果b==0,c!= 0则进行输出无解
if (b==0&&c==0)
如果b==0,c== 0则进行输出无穷多解
else
if (delt<0)
如果delt<0则进行输出虚根的值x1,x2
if (delt > 0.000001)
如果delt > 0.000001则进行输出x1,x2的值
否则进行x1=x2的值的输出
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
0 4.5 -3.6 | x = 0.8 | 验证题目所给数据 |
0 0 3.6 | 无解 | 验证题目所给数据 |
0 0 0 | 无穷多解 | 验证题目所给数据 |
-2 0.8 -0.06 | x1 = 0.1, x2 = 0.3 | 验证题目所给数据 |
-0.2 0.04 -0.01 | x1 = 0.1-0.2i, x2 = 0.1+0.2i | 验证题目所给数据 |
1.2.4 PTA提交列表及说明
提交列表说明:
部分正确:这道题一开始写的时候感觉不难啊,就是要分的情况有点多,所以在按照自己的想法开始写完的时候一运行出现了部分正确这种结果,在反复修改之后发 现是自己运算的程序中printf输出语句中有一些表达不准确,将if(b==0)改正为if(b==0&&c!=0)一修改完就多对了测试点,在devc++上反复实验发现自己有关虚根这一方面表达不准确,而且题目中注意实数的负零问题和误差问题这一句话也没有注意到,最后在同学的帮助之下完成了这一道题。
答案正确:。。。
2.代码互评
同学代码一:
自己代码一:
代码比较:
1.总的来说我与同学前面的思路是差不多的,只是变量定义的名字不一样而已。
2.在后一半中,我是直接进行了for的循环语句,开始计算题目所需要的数据;而同学的则是对a是否大于b进行了判断,如果a大于b的值则在进行一次运算,就是把a与b的值进行交换一下。
同学代码二:
自己代码二:
代码比较:
1.我和同学的总的思路是一样的,只是在后面的编写代码中书写出来的方式不一样罢了。
2.我们的不同点在于我们算各位数字之和方法上有一点小区别,我用的是while语句进行运算,而同学的是用do-while语句进行运算,记得老师说过do-while语句会先运行一次在进行判断,不管怎么样循环总会运行一次。而我的代码则是只有在满足条件的时候才会运行。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周(9.19-3.27) | 四天 | 40 | Hello world编程和Markdown语法 | 对待大部分内容都不理解 |
第二周(9.25-10.4) | 四天 | 35 | 华氏度与摄氏度的转换 | 不理解数据类型 |
第三周(10.8-10.11) | 三天 | 90 | if-else语句、格式化输入语句 | 分不清整型变量和浮点型变量 |
第四周(10.15-10.17) | 三天 | 100 | 有关for循环体的运用 | 有时候不清楚循环体是什么 |
第五周(10.22-10.25) | 三天 | 130 | 使用自定义函数来编程和生成乘方表和阶乘表 | 不知道如何调试函数以及在哪里设置断点 |
第六周(10.30-11.2) | 四天 | 180 | 分支结构、字符型数据类型 | 对待字符型题目还是不能够准确理解 |
第七周(11.06-11.08) | 三天 | 190 | 学会多分支结构switch语句的使用 | 有时不能准确理解case后的有些语句 |
第八周(11.13-11.15) | 三天 | 200 | 学会使用while和do-while结构解决问题 | 不能准确判断while的循环条件 |
第九周(11.20-11.22) | 三天 | 195 | 学会break、continue的使用以及循环的嵌套 | 有时候对循环条件判断错误 |
第十周(11.26-11.27) | 两天 | 215 | 熟悉并且练习循环结构的使用 | 有时候不能准确判断运用哪一种结构较为简单 |
第十一周(12.04-12.06) | 三天 | 220 | 熟悉各种类型函数的定义、调用和申明以及一些变量 | 有一些变量类型不能很好区分 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
1.在这一周我们主要学习了各种类型函数的定义、调用和申明,以及一些变量作用域和存储类型。
2.在本周中我们对以前学习的定义函数进行了一些相关的复习,比如怎么定义函数以及格式,例如:函数类型 函数名 (形式函数表)//{ // 函数实现过程 //}。
3.我们接着又学习了有关全局变量以及局部变量的定义以及作用范围。把定义在函数内部的变量称为局部变量,局部变量的作用范围局限于所在函数内部;定义在函数外而不属于任何函数的变量称为全局变量,全局变量的作用范围是从定义函数开始到程序所在的文件结束。
4.在这次作业的第一题中居然运用到了有关数组的内容,但是我们还没有学到,自己对待数组也是在很懵的,由此可以看出自己要尽量赶在老师前面去提前熟悉课本内容,这样也会方便自己写作业。期末考试加油啊!