C语言I博客作业09
作业头
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-4 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11637 |
这个作业的目标 | 努力那个高分,再接再厉 |
这个作业在那个具体方面帮助我实现目标 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型。 |
参考文献 | B站 百度《C语言程序与设计》 |
学号 | 20209043 |
1.PTA实验作业(20分/题)
1.1 6-2 统计各位数字之和是5的数 (20分)
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。
函数接口定义:
int is( int number );
void count_sum( int a, int b );
裁判测试程序样例:
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.\n", a);
if (is(b)) printf("%d is counted.\n", b);
count_sum(a, b);
return 0;
}
/* 你的代码将被嵌在这里 */
1.1.1数据处理
数据表达:用了整型变量int,定义了是s,t,number,及I,s,c,等一些变量。
数据处理:在主函数的调用之下,先把数进行拆分,在进行累加并判断是否等于5,之后在此基础上计算满足要求的整数和整数和。
最后void函数之中printf表达出来。
先进行拆分while(number!=0){
t=number%10;
s+=t;
number=number/10;
}在进行判断
在计算出来for(i=a;i<=b;i++){
if(is(i)){
c++;
s+=i;
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 104 is counted. count = 15, sum = 3720 | 示例 |
1 666 | count = 21, sum = 3885 | 1和666的给各位数字之和不等于5,不满足第一个 |
104 221 | 104 is counted. 221 is counted. count = 8, sum = 1246 | 104和221都满足各位数字之和等于5 |
1.1.4 PTA提交列表及说明
编译错误:函数格式的一些要求,没有注意,比如函数声明没有加分号。
部分正确:在计算满足要求的数字之和和整数之和的判断出错,if(is(i)){},这里出错。
答案正确:完善之后,答案正确。
1.2 7-1 解一元二次方程 (10分)
1.2.1 数据处理
数据表达:使用双浮点精度double定义了a,b,c,d.
数据处理:按照题目要求进行编写,以免少情况。我是先把【bb-4a*c】先表示出来,在一步一步表示出来
if(a==0){
if(b==0){
if(c==0)
printf("无穷多解\n");
else
printf("无解\n");
}
else
printf("x = %.1g",fabs(-c/b));
}这是一部分
后面在真对一元二次方程求解
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
0 4.5 -3.6 | x = 0.8 | 题目样例 |
0 0 0 | 无穷多解 | 题目样例 |
-2 0.8 -0.06 | x1 = 0.1, x2 = 0.3 | 题目样例 |
1 -0.4 0.04 | x1 = x2 = 0.2 | 题目样例 |
-0.2 0.04 -0.01 | x1 = 0.1-0.2i, x2 = 0.1+0.2i | 题目样例 |
1.2.4 PTA提交列表及说明
编译错误:使用printf函数表达中,进行输出表达,括号太多,容易出现编译错误
部分错误:只有前面两个正确,运行正确答案是0,而我是-0,没有使用fabs来取绝对值。还有为什么要【if(d>0.0005)】【d<=0.0005&&d>=-0.0005】,这是周宽跟我说的,如果不这样写,很难对!!
答案正确:在tql的教导下,对了。
2.代码互评(5分)
同学1代码截图:
-----------分割线-------------
同学2代码截图:
-----------分割线-------------
自己的代码解图:
比较:
1.与同学1相比,同学的基础非常好,运用所学知识解题。我的方法行不通,我不知道如何确定三位数,还是四位等等更高的。而这个方法来源网上,运用了我没还没有学习的数组及指针。巧妙的将每位数储存在数组里。
2.同学2的方法真的看不懂,网上查询才知道if()中的是强制转化。再来for的嵌套。这次代码互评太难了!
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行学到的知识点 | 简介目前比较迷惑的问题 |
---|---|---|---|
11/1——11/8 | 15h | how(),sqrt() | 无 |
11/9——11/15 | 17h | 函数函数的被动定义 | |
11/16——11/22 | 18.5h | 分支结构 | 字节变量的使用 |
11/23——11/29 | 14h | switch的分支结构 | 无 |
11/30——12/7 | 12h | 熟悉使用while和do-while结构解决问题 | while与其他的套用 |
12/8——12/13 | 16h | for循环的嵌套 | 所学习的知识灵活运用 |
12/14-12/20 | 16h | 函数的相关知识 | 函数声明类型的使用和被调函数的应用 |