这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 |
学号 | 20208988 |
1.PTA实验作业(20分/题)
1.1统计某类完全平方数 (20分)
题目内容描述:本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
1.1.1数据处理
数据表达:定义了整型数组n[10] 和整型变量num,a,i,N,其中n[10] 和num,a,通过运算赋值,i随着循环累加,N通过主函数传递。
数据处理:使用了if语句,for循环和while循环。表达式如下:
n[10]={0}
num=N
a=sqrt(N)
if(a*a==num)
while(num!=0)
n[num%10]++
num/=10
for(int i=0;i<10;i++)
if(n[i]>1)
1.1.2实验代码截图
1.1.3 造测试数据
1.1.4 PTA提交列表及说明
1.答案错误:数据读取后的判断不完整,只能相邻两位进行比较,引用数组解决问题。
2.答案错误:改变代码从单个变量到数组使用不熟练。
3.部分正确:忘记数组下标由0开始。
1.2 解一元二次方程 (10分)
题目内容描述:
1.2.1 数据处理
数据表达:定义了浮点型变量 a,b,c,x,x1,x2,A。其中a,b,c通过外设输入,x.x1,x2,A,通过运算赋值。
数据处理:使用了if-else语句和if语句的嵌套。表达式如下:
if(a==0)
if(b!=0)
x=-c/b
if(x==-0)
if(b==0&&c!=0)
if(b==0&&c==0)
A=pow(b,2)-4*a*c
if(A>0)
x1=(-b+sqrt(A))/(2*a)
x2=(-b-sqrt(A))/(2*a)
if(x1==-0) x1=0
if(x2==-0) x2=0
if(fabs(x1-x2)<0.0001)
if(A==0)
x=-b/(2*a)
if(A<0)
A=-A
x=-b/(2*a)
x1=sqrt(A)/(2*a)
x2=-sqrt(A)/(2*a)
if(x==-0)
if(x1<0&&x2>0)
1.2.2 实验代码截图
1.2.3 造测试数据
1.2.4 PTA提交列表及说明
1.部分正确:只考虑到了a为零时的部分情况。
2.部分正确:方程解为-0情况未排除,使用if语句排除。
3.部分正确:对于判别式小于0的情况输出格式错误,加入if语句对虚根进行区分。
4.部分正确:函数根的精度问题,对于相差极小的根视为相等而我忽略了这个问题,使用if语句解决问题。
2.代码互评(5分)
同学代码截图1.
同学代码截图2.
自己代码截图:
1.定义的变量不同。
2.第一位同学使用了switch语句,逐个读取存储,而我使用了下标读取存储。
3.第二位同学使用了flag作为标识和返回值,使得代码更严谨,
3.学习总结(15分)
3.1 学习进度条(5分)
3.2 累积代码行和博客字数(5分)
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
本周学习了各种类型函数的定义、调用和申明,以及变量的作用域、生存周期和存储类型
3.3.2 学习体会
1.花费大量的时间学习理论知识,是学好C语言的基础。
2.大量实践是融会贯通的必要条件。
3.自学深度不够,未能发散思维,对于学习过的知识已经可以较为熟练地使用,但是仍有许多问题需要临时查阅资料或询问他人。
4.阅读他人优秀代码是学习C语言的一个不错的方法。
5.对于没学的知识点,自学程度不够,导致有些题没有写题思路