一、本周教学内容&目标
第5章 函数 要求学生掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型。
二、本周作业头
这个作业属于那个课程 | 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
", cnt);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
105 500
输出样例:
cnt = 6
1.1.1数据处理
介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。
数据表达:使用了整型变量a,m,n;使用了数组表达
数据处理:
表达式:if(tmp*tmp==N)
结构式:用了for循环语句以及使用嵌套内循环
伪代码:
开始
定义四个整型变量,n1和n2:完全平方数的范围,i:for循环内的控制循环变量,cnt:[n1,n2]范围内的完全平方数的数量;
输入:n1,n2;
令cut=0;
for循环判断n1到n2内的数是否为完全平方数;
自定义函数:IsTheNumber
定义四个整型变量tmp、flag、i,令tmp*tmp==N;flag用于判断是否运行正确,做标记;tmp用于表示用户输入数的平
方;i用于控制for循环
当tmp==N时
则运用数组a[10]={0}
外循环while:当n大于零时执行内循环
若yes→a[i]=a[i]+1;
num=num/10
for循环输入i=1-10,判断n%10是否等于i
继续判断若a[i]=>2
则返回flag=1;
退出内循环
返回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.
", a);
if (is(b)) printf("%d is counted.
", 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 ",count,sum);写成了printf("count = %d, sum = %d ",count,sum);
第一张 (6-1 统计某类完全平方数 )
同学代码截图 |<C语言I作业11 sun-梦 >|
自己代码截图
答:我和同学的代码有很大的不同
1.我用的代码是先利用while循环语句再用for循环语句判断并且进行循环,同学则是利用多个多个for循环以及利用pow函数求解。
第二张 (6-2 统计各位数字之和是5的数 )
同学代码截图 |<C语言I作业11 sun-梦 >|
自己代码截图
答:第二个同学
1.同学是先把void count_sum(int a, int b)函数下的情况先解决在解决int is(int number)的情况,而我刚好相反。
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 |
第五周 2551 | 200 | |
第7周 | 2821 | 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.百度是个好东西,尤其是对于初学者来说!