C语言I博客作业11

一、本周教学内容&目标

第5章 函数 要求学生掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型。

二、本周作业头

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里
我在这个课程的目标是 <复习所学相关知识,准备期末考试>
这个作业在那个具体方面帮助我实现目标 <在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 
#include 

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循环语句以及使用嵌套内循环

伪代码:

开始
定义四个整型变量,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实验代码截图

贴图展示代码,不要复制。请给出名字标识。

C语言I博客作业11_第1张图片

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

裁判测试程序样例:

#include 

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 实验代码截图

C语言I博客作业11_第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博客作业11_第3张图片

自己代码截图

C语言I博客作业11_第4张图片

答:我和同学的代码有很大的不同
1.我用的代码是先利用while循环语句再用for循环语句判断并且进行循环,同学则是利用多个多个for循环以及利用pow函数求解。

第二张 (6-2 统计各位数字之和是5的数 )

同学代码截图 ||

C语言I博客作业11_第5张图片

自己代码截图
C语言I博客作业11_第6张图片

答:第二个同学
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

C语言I博客作业11_第7张图片

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

3.3.1 学习内容总结

C语言I博客作业11_第8张图片

3.3.2 学习体会

请回顾自己的本周的学习过程,描述学习感受,也可以提出你不理解的地方、对教师教学建议等。如果你有新的想法或者新的方法,请及时记录下来。

1.这周的pta作业难题感觉又变难了,做的时候老是没思路,就算在devc++上敲了代码。在PTA上还是会出现一些小毛病
2.pta上的练习大部分其实就是一些数学题,自己可以用数学思维解决他们,却老是一下子不知道怎么用代码的形式表示他们。
4.百度是个好东西,尤其是对于初学者来说!

你可能感兴趣的:(C语言I博客作业11)