C语言I博客作业09


这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2020-2/
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11589
这个作业的目标 熟练掌握各种类型函数和语句
学号 20208961

1.PTA实验作业(20分/题)

1.1 题目名1:6-1 统计某类完全平方数 (20分)

题目内容描述:
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。
输入样例:
105 500
输出样例:
cnt = 6

1.1.1数据处理

数据处理:本题定义了整型变量,s,n,m,h。以及定义了一个数组a[10]。
数据表达:表达式:
                s=n%10;
                n=n/10;
                n==m;
                a[s]>=2
                case 0: a[0]++; break;
                case 1: a[1]++; break;
                case 2: a[2]++; break;
                case 3: a[3]++; break;
                case 4: a[4]++; break;
                case 5: a[5]++; break;
                case 6: a[6]++; break;
                case 7: a[7]++; break;
                case 8: a[8]++; break;
                case 9: a[9]++; break;
流程结构:该题使用了if-else语句,switch语句,for语句。

1.1.2实验代码截图


1.1.3 造测试数据

1.1.4 PTA提交列表及说明


提交列表及说明:

答案错误:返回值出现错误,我直接在判断a[s]中相等的个数后就直接返回1和0,导致错误。
所定义的变量出现错误,又重新定义了一个变量i判断相等个数导致错误。
编译错误:N=N/10;这里编译错误[Error] assignment of read-only parameter 'N'
部分正确:开始没使用switch语句而是直接for判断n的位数后在判断相等个数但是出现了sample 全是3位数的错误。

1.2 题目2:7-1 解一元二次方程 (10分)

题目内容描述:
解一元二次方程
请编写程序,解一元一次方程

一元二次方程的求根公式为:

要求:
若 a=0,则为一元一次方程。
若 b≠0,则方程有唯一解,输出这个解;
若 b=0,c≠0,则方程无解,输出“无解”;
若 b=0,c=0,则方程有无穷多解,输出“无穷多解”。
若 a≠0,则为一元二次方程。
若 Δ>0,则方程有两个不等的实根,输出这两个根;
若 Δ=0,则方程有两个相等的实根,输出这两个根;
若 Δ<0,则方程有两个共轭的虚根,输出这两个根。

1.2.1数据处理

数据处理:该题定义了双精度浮点型变量a,b,c,x,x1,x2,i,sum,n,m,h;
数据表达:表达式:
    sum=b*b-4*a*c;
    x1=(-b+sqrt(sum))/(2*a);
    x2=(-b-sqrt(sum))/(2*a);
    h=-b/(2*a);
    n=sqrt(-sum)/(2*a);
    m=-sqrt(-sum)/(2*a);
    x=-c/b;
    b==0&&c==0
    b==0&&c!=0
    b!=0&&c!=0
    h==-0
    n>=0&&m>=0
    if(x1==-0) x1=0;
    if(x2==-0) x2=0;
    x1 = %g%gi, x2 = %g+%gi
    x1 = %g+%gi, x2 = %g+%gi
    x1 = %g+%gi, x2 = %g%gi
流程结构:使用了if-else语句。

1.2.2实验代码截图


1.2.3 造测试数据

1.2.4 PTA提交列表及说明


提交列表及说明:

部分错误:sum>=0这里出现错误,同时输出的格式也出现错误将%g写成了%.1lf,
没有判断防止出现-0的情况,同时没有判断精确度导致出现误差。
编译错误:将x1 = %g%gi写成了,x = %.1lf+%.1lf,导致错误,多编译了几个变量。
答案错误:在测试虚根时将虚根公式写错写成了x1=sqrt(sum)/a;x2=-sqrt(sum)/a;

2.代码互评(5分)

同学代码截图1

同学代码截图2

自己代码截图:


不同之处:
1.我使用了switch语句判断它没有,而是他们用的for语句。
2.我使用switch语句依次判断1-10组数组中每个数字的个数,比较繁琐。而第一位同学直接采用n[num%10}判断
很清晰明了。第二位同学则采用flag=0做标识。
3.我定义的变量过多,他们定义的变量较少,基本上都是直接用表达式代替。

3.学习总结(15分)

3.1 学习进度条(5分)

3.2 累积代码行和博客字数(5分)

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结

3.3.2 学习体会
感受:
1.这次的作业感觉比较的难,相对于前几周所用的时间也更长一点。对于很多题目都出现了较多的题目。
如在做第一题的函数题时我是先判断N的位数后将位数用数组装起来,在用数组判断相等个数。如
count++;int a[count];for(j=1;j<=count;j++){但是错了,所以这里就有点不太明白。
2.对于数组还存在较多疑惑,如a[10]={};一定要取值10吗?
3.if嵌入语句这里还是会出现较多问题不如在做第一道编程题时总是会出现x1=0+-0.3i的现象就是加减这里
存在一点困惑。
收获:
1.对于switch语句的运用更加的熟练了。
2.对于使用数组判断相等个数也更加的了解,对于数组的运用相对于上周也更加熟练。
3.对于嵌入语句的使用也更加熟练。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM