一、本周教学内容&目标
第4章 循环结构 4.1-4.2 熟悉使用while和do-while结构解决问题。
二、本周作业头
这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | <C语言I作业011> |
我在这个课程的目标是 | <复习所学相关知识,准备期末考试> |
这个作业在那个具体方面帮助我实现目标 | <在PTA中多次使用嵌套循环,熟练运用> |
参考文献 | <<集美大学林丽老师>> C语言程序设计(第三版);百度 |
三、本周作业
1.PTA实验作业
2.代码互评
3.学习总结
四、作业格式
1.PTA实验作业(20分/题)
请再此处列出自己的排名图片
从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下:
1.1 题目名1 (6-1 统计某类完全平方数 (20分))
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。
裁判测试程序样例:
#include <stdio.h> #include <math.h> int IsTheNumber ( const int N ); int main() { int n1, n2, i, cnt; scanf("%d %d", &n1, &n2); cnt = 0; for ( i=n1; i<=n2; i++ ) { if ( IsTheNumber(i) ) cnt++; } printf("cnt = %d\n", cnt); return 0; } /* 你的代码将被嵌在这里 */
输入样例:
105 500
输出样例:
cnt = 6
1.1.1数据处理
介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。
数据表达:使用了整型变量a,m,n;使用了数组表达
数据处理:
表达式:if(tmp*tmp==N)
结构式:用了for循环语句以及使用嵌套内循环
伪代码:
int IsTheNumber ( const int N ) { int a[10] = {0}; int n=N; int tmp = (int)sqrt(n); int flag = 0; if(tmp*tmp==N) { int i,num=0; while(n) { i = n%10; a[i]++; n/=10; num++; } for(i=0; i<10; i++) { if(a[i]>=2) { flag = 1; break; } } } return flag; }
1.1.2实验代码截图
贴图展示代码,不要复制。请给出名字标识。
1.1.3 造测试数据
输出你的程序面向各种测试数据结果,除了题目给出的测试数据,可以自己再造其他临界数据,越多越好,并加上必要说明
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt = 6 | 有6个数满足条件 |
100 500 | cnt = 7 | 有7个数满足条件 |
200 880 | cnt = 5 | 有5个数满足条件 |
500 1000 | cut=2 | 有2个数满足条件 |
1.1.4 PTA提交列表及说明
根据PTA提交列表,简要描述调试程序碰到的问题及解决办法
1.部分正确:返回值写成0,应该为flag。
1.2 题目2(6-2 统计各位数字之和是5的数 (20分)
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于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.\n", a); if (is(b)) printf("%d is counted.\n", b); count_sum(a, b); return 0; } /* 你的代码将被嵌在这里 */
输入样例:
104 999
输出样例:
104 is counted. count = 15, sum = 3720
1.2.1 数据处理
介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。
数据表达:int is(int number)函数内,定义了两个整型变量和sum和flag分别代表输入的数的每一位数字和每一位数字加起来的和;在void count_sum( int a, int b )函数内,定义了三个整型变量i,count,sum分别代表满足is函数的数和满足is函数的数的个数,i用于控制循环。
数据结构:
结构式:函数int is(int number)使用了while循环结构和if语句;函数void count_sum( int a, int b )使用了for循环语句和if语句的嵌套结构。
伪代码
开始 ; 定义sum,flag两个整型变量, 若满足is函数则相应的输出数据; 自定义int is( int number )函数; 定义t和s分别代表输入的数的每一位数字和每一位数字的和; 若该数不等于零 则循环将该数的每一位数字拿出且求和; 若是所求的和等于五 则返回1; 否返回0; 自定义void count_sum( int a, int b )函数 定义三个整型变量i,count,sum 使用for循环输入[a,b]间的每一个数 如果输入的数满足is函数 则计数器+1; 且求满足is函数的数的和; 结束 ;
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
100 500 | count = 15, sum = 3720 | 满足条件的整数有15个,整数和为3720 |
104 999 | 104 is counted. count = 15, sum = 3720 | 满足条件的整数有15个,整数和为3720 |
50 100 | count = 1, sum = 50 | 满足条件的整数有1个,整数和为50 |
200 800 | count = 6, sum = 2244) | 满足条件的整数有10个,整数和为3100 |
1.2.4 PTA提交列表及说明
根据PTA提交列表,简要描述调试程序碰到的问题及解决办法
1.答案错误: printf("count = %d, sum = %d\n",count,sum);写成了printf("count = %d, sum = %d\n",count,sum);
第一张 (6-1 统计某类完全平方数 )
同学代码截图 |<C语言I作业10 ylimhs阿浩>|
自己代码截图
答:我和同学的代码有很大的不同
1.我用的代码是利用两个循环语句再用if语句判断。
2.同学代码在后面解决输出NONE的情况, 而我选择在开头就解决这个问题。
第二张 (6-2 统计各位数字之和是5的数 )
同学代码截图 |<C语言I作业10 karoko>|
自己代码截图
答:第二个同学
1.同学运用的是定义函数再利用两个for循环解决问题,而我则是定义字符数函数再利用while语句
3.学习总结(15分)
$3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | |
---|---|---|---|---|
第六周 | 8小时 | 300行 | 常用的数学函数,if-else语句,for语句,自定义函数 | 不会用自定义函数 |
第七周 | 7小时 | 400行 | 二分支结构和用char输入字符 | 对于字符型的代码有点看不懂 |
第八周 | 10小时 | 420行 | 多分支结构,switch语句 | switch语句用得有点混乱 |
第九周 | 13小时 | 450行 | 自定义函数的用法,怎样用一个算法来运算多个式子 | if语句的嵌套不明白是怎样分支的 |
第十周 | 18小时 | 500行 | 多分支结构、字符型数据类型和逻辑运算符 | 目前不太熟练并且字符型还没熟悉 |
第十一周 | 12小时 | 600行 | 熟悉多分支结构switch语句的使用 | switch后的表达式是否有要求 |
第十二周 | 8小时 | 620 | do-while语句和while,for语句的区别 | continue不知道怎么去用 |
第十三周 | 10小时 | 650 | break、continue的用法以及它们之间的关系 | 为什么在for循环前都要m=1; |
第十四周 | 10 | 600 | 学习了穷举算法(在一定限定范围内可以先运算所有的可能) | 对于穷举算法的源程序2还是不太懂 |
第十五周 | 16 | 650 | 怎样判断素数,熟悉循环的嵌套 | 对于嵌套循环的运用还是不太熟练 |
3.2 累积代码行和博客字数(5分)
时间 | 博客字数 | 代码行数 |
---|---|---|
第4周 | 585 | 300 |
第6周 | 1366 | 400 |
第7周 | 2209 | 420 |
第8周 | 4100 | 400 |
第9周 | 6212 | 500 |
第10周 | 8133 | 550 |
第11周 | 10510 | 600 |
第12周 | 13031 | 620 |
第13周 | 15899 | 630 |
第14周 | 17000 | 600 |
第15周 | 19571 | 650 |
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
请回顾自己的本周的学习过程,描述学习感受,也可以提出你不理解的地方、对教师教学建议等。如果你有新的想法或者新的方法,请及时记录下来。
1.这周的pta作业难题感觉又变难了,做的时候老是没思路,就算在devc++上敲了代码。在PTA上还是会出现一些小毛病
2.pta上的练习大部分其实就是一些数学题,自己可以用数学思维解决他们,却老是一下子不知道怎么用代码的形式表示他们。
4.百度是个好东西,尤其是对于初学者来说!