这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2019-3/homework/10126 |
我在这个课程的目标是 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 |
这个作业在那个具体方面帮助我实现目标 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 |
参考文献 | 百度,课本 |
1.PTA实验作业
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;
}
/* 你的代码将被嵌在这里 */
1.1.1数据处理
数据表达:运用了函数接口int is( int number );
void count_sum( int a, int b );
函数参数:count_sum,is
数据处理:
int is(int a)
{
定义整型c,d;
定义sum=0;
while(a!=0) {/*循环条件*/
c=a%10;
sum=sum+c;
a=a/10;
}
if(sum==5){/*判断是否符合sum=5*/
return 1;
}else{
return 0;
}
}
void count_sum( int e, int b )
{
定义整型i;
定义sum=0;
定义count=0;
for(i=e; i<=b; i++){
if(is(i)) {
count++; /*进行累加*/
sum=sum+i;
}
}
输出sum,count;
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
104 999 | 104 is counted. count = 15, sum = 3720 |
题中数据 |
100 100 | count = 0, sum = 0 | 题中数据左侧 |
165 450 | count = 9, sum = 2610 | 题中数据右侧 |
1.1.4 PTA提交列表及说明
提交列表说明:
编译错误:编写时没注意空格,并且将/变成了%。
1.2 题目: 解一元二次方程
请编写程序,解一元一次方程 ax
2
+bx+c=0 。
要求:
若a=0,则解一元一次方程。
若方程有唯一解,则输出方程的根;
若方程无解,则输出“无解”;
若方程有无穷多解,则输出“无穷多解”。
若a≠0,则解一元二次方程。
若Δ>0,则输出方程的两个不等的实根;
若Δ=0,则输出方程的两个相等的实根;
若Δ<0,则输出方程的两个共轭的虚根。
所有实数均以%g输出。
1.2.1 数据处理
数据表达:定义浮点型a,b,c,x,x1,x2,real,n
数据处理:
输入浮点型a,b,c,x;
if(-EPS<=a&&a<=EPS){/*判断a的值*/
if(b!=0){
x=-c/b;
输出x值/*利用fabs来将x转化为正值*/
}else{
if(c!=0)
输出无解;
else
输出无穷多解;
}
}else{
定义浮点型x1,x2;
if(b*b-4*a*c>EPS){
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
输出x1,x2的值;/*利用fabs来将x1,x2转化为正值*/
}else if(-EPS<=(b*b-4*a*c)&&(b*b-4*a*c)<=EPS){
x1=(-b)/(2*a);
x2=x1;
输出x1,x2;/*利用fabs来将x1,x2转化为正值*/
}else{
定义浮点型real,n;
real=(-b)/(2*a);
n=fabs(sqrt(4*a*c-b*b)/(2*a));
输出x1,x2;
}
}
end for
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
0 4.5 -3.6 | x = 0.8 | 有解 |
6 2.1 3.2 | x1 = 0.175+0.709019i, x2 = 0.175-0.709019i | 两个共轭的虚根 |
2 3.2 1.6 | x1 = 0.8+0.4i, x2 = 0.8-0.4i | 两个共轭的虚根 |
1.2.4 PTA提交列表及说明
提交列表说明:
部分正确:没注意实数不能与0做比较,我多次修改我的代码仍能错误。后通过助教邓博文的代码知道了实数不能与0比较。
并且通过他的代码我学会了fabs的用法。
2.代码互评
同学代码截图
自己代码截图
1我和第一位同学的相对于第二位来说较简单。
2我们所使用的方法有所不同,所设置的变量多少不相同。
3我们都是通过循环的嵌套来运行程序。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
2/12~8/12 | 8h | 130 | 各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 | 不太会用其函数 |
3.2 累积代码行和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第一周 | 1000 | 25 |
第二周 | 2600 | 40 |
第三周 | 3500 | 150 |
第四周 | 3000 | 60 |
第五周 | 3500 | 80 |
第六周 | 3600 | 80 |
第七周 | 3000 | 100 |
第八周 | 3000 | 110 |
第九周 | 3000 | 120 |
第十周 | 3000 | 130 |
第十一周 | 3000 | 130 |
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
本次pta编程题我感觉比较难。
学习函数后我掌握了更多的代码使用方法。
在做pta编程题中我学习到了新的代码,我认为通过阅读别人的代码来学习新的知识使自己提高也是一种方法。
但我觉得我需要继续学习,要走的更前。