C语言I博客作业11

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 C语言I博客作业11
我在这个课程的目标是 熟练掌握C语言
这个作业在哪个具体方面帮助我实现目标 熟练掌握了各种循环结构,并且学会了自定义函数
参考文献 Markdown基本语法 集美大学林丽老师

一.PTA实验作业

1. 统计某类完全平方数

题目内容描述:本题要求实现一个函数,判断任一给定整数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)数据处理

 数据表达:
     用了整形变量x,m;
     用m来找完全平方数的范围内的整数
     使用了数组

数据处理:伪代码

  开始

  int IsTheNumber ( const int N );//N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0

  int main()
      {
          int n1, n2, i, cnt;//定义整形变量n1,n2, i, cnt

          scanf("%d %d", &n1, &n2);
          cnt = 0;//cnt初始化为0
          for ( i=n1; i<=n2; i++ ) {//循环n1到n2次
           if ( IsTheNumber(i) )//自定义函数IsTheNumber(i)
                      cnt++;//cnt累加
                  }
           printf("cnt = %d\n", cnt);//输出cnt

    return 0;//返回值为0
    }

 #include <stdio.h>
 int IsTheNumber ( const int N )
 {
      int x,m;//定义x,m
      x=(int)sqrt(N);//x定义为整形的根号N
      m = x*x;
      if (m == N)//如果m=N
         {
             int num[10]={0};//定义了一个int型的大小为10的数组nums,同时该数组所有的元素均被初始化为0
             int i;
             while(m>0)//当m>0时
                  {
                        for(i = 0;i<=9;i++)//循环9次
                           {
                                if (m%10 == i)//如果m除以10的余数=i
                                   {
                                         num[i]=num[i]+1;//
                                         if (num[i]==2)//如果数组i=2
                                            {
                                                 return 1;//返回值为1
                                            }
                                    }
                            }
                          m=m/10;//m等价于m/10
                    }
              }
   return 0;//返回值为0
   }

(2)实验代码截图


(3)造测试数据

输入数据 输出数据 说明
144 225 cnt = 2 有两个完全平方数
105 500 cnt = 6 有六个完全平方数
100 200 cnt = 3 有三个完全平方数

(4)PTA提交列表及说明

提交列表说明

 编译错误:第9行中0那里没有加{}
 答案正确:在第9行中加上了{}

2.统计各位数字之和是5的数

题目内容描述:一个函数判断给定正整数的各位数字之和是否等于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)数据处理

 数据表达:用了整型变量t, s = 0
         运用了自定义函数,for循环结构和if结构
         用sum表示和,count表示符合的个数

数据表达:伪代码

 开始

 int is( int number );//is自定义函数
 void count_sum( int a, int b );//定义整形变量a,b来接收主函数传入的值

 int main()
 {
     int a, b;//整形变量a,b

     scanf("%d %d", &a, &b);
     if (is(a)) printf("%d is counted.\n", a);//如果自定义函数is(a)返回来的值不为0
     if (is(b)) printf("%d is counted.\n", b);//输出b
     count_sum(a, b);

     return 0;//返回值为0
 }

 int is(int number)//is自定义函数
 {
     int t, s = 0;//整形变量t,s
     while (number != 0)//当数值不等于0时
     {
         t = number % 10;//t的值为数值除以10取余
         number = number / 10;//数值等于原数值除以10的商
         s = s + t;//s的值为s和t的和
     }
     if (s == 5)//如果s等于5
     {
         return 1;//返回值为1
     }
     return 0;//返回值为0
 }
 void count_sum(int a, int b)//自定义函数void count_sum(定义整形变量a,b来接收主函数传入的值)
 {
      int n,count = 0, sum = 0;//定义整形变量n,count=0,sum=0
      scanf("%d%d", &a, &b);
      for (n = a; n <= b; n++)//循环a到b次
         {        
           if (is(n))//自定义函数is(定义整形变量n来接收主函数传入的值)
             {
                count++;//累加
                sum = sum + n;//sum的值为sum和n的和

              }        
         }
     printf("count = %d, sum = %d\n", count, sum);//输出count,sum
  }

(2)实验代码截图


(3)造测试数据

输入数据 输出数据 说明
104 203 104 is counted.203 is counted. count = 6, sum = 813 符合条件的整数有6个,整数和为813
104 104 104 is counted. count = 1, sum = 104 符合条件的整数有1个,整数和为104
104 999 104 is counted. count = 15, sum = 3720 符合条件的整数有15个,整数和为3720

(4)PTA提交列表及说明

提交列表说明

 1.编译错误:第10行中写成了=
 2.编译错误:第12行中也写成了return 0
 3.答案正确:第10行写成==,第12行写成return 1

二.代码互评

同学代码:

同学代码:

自己代码:

比较

 (1)第一份代码用了自定义函数定义了5个变量,代码行数38行,用数N的每一位数按1~9数字的个数一个个进行统计,
 (2)第二份代码先定义一个整型数组,使其初始化,用if语句中一数为另一数的平方数判断是否为完全平方数,在利用数组的原理判断是否有两个相同的数
 (3)第三份代码定义了4个变量,同时也定义了整型数组,先使用了if语句后使用for语句
周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第四周 7小时 100行 在屏幕上显示Hello World!
第五周 8小时 100行 求华氏温度对应的摄氏温度
第六周 21小时 400行 如何用 MinGW-w64 来编译C程序
第七周 24小时 478行 运用if语句完成各种数学程序 对于&&的用法不了解,现在操作不熟练
第八周 20小时 349行 掌握使用for循环语句实现指定次数的循环程序设计
第九周 23小时 264行 学会使用自定义函数 目前不太熟练
第十周 22小时 167行 熟悉多分支结构、字符型数据类型和逻辑运算符 还没有完全熟悉
第十一周 18小时 150行 熟悉多分支结构switch语句的使用
第十二周 16小时 130行 熟悉使用while和do-while结构解决问题 目前还不太熟练
第十三周 15小时 120行 熟悉使用for结构,了解并掌握了break语句和continue语句 目前还不太熟练continue语句
第十四周 15小时 180行 熟悉使用循环结构 目前还不太熟练
第十五周 14小时 260行 熟悉函数,学会使用自定义函数 对数组不太了解,对函数不太熟练

2. 累积代码行和博客字数

时间 博客字数 代码行数
第四周 525 50
第五周 645 100
第六周 645 400
第七周 2659 478
第八周 3586 597
第九周 4769 698
第十周 5897 787
第十一周 6289 897
第十二周 7594 1056
第十三周 8679 1170
第十四周 9879 1278
第十五周 13547 1456

3 .学习内容总结和感悟

(1)学习内容总结

(2) 学习体会

学习c语言有一段时间了,越是学到后面越难,上周总结了循环结构,并且知道了这两个语句的区别,增加了一项编码技巧,这周学习了自定义函数,又学到了新的C语言知识,现在编代码时没有以前那么吃力了,但是仍然不太熟练,而且题目也越来越难了,我还欠缺很多的锻炼,也欠缺很多知识,我以后还需要更努力的去练习,花更多的时间在这里,朝着我的目标前进

posted @ 2019-12-05 17:22  软4杨宇  阅读(273)  评论(7编辑  收藏  举报