#C语言作业11

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 ![作业](https://edu.cnblogs.com/campus/zswxy/SE2019-1/homework/10128)
我在这个课程的目标是 熟练掌握C语言程序设计,编程代码,学习新知识。
这个作业在那个具体方面帮助我实现目标 训练编程题,巩固新知识。完成作业。
参考文献 《C语言程序设计ll》

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
   }

1.1.1实验代码截图

1.1,2作业提交

1.1.3 造测试数据

输入数据 输出数据 说明
144 225 cnt=2 有两个完全平方数
105 500 cnt=6 有六个完全平方数
提交说明
A1:编译错误:有地方少打一个冒号
2.编译错误:变量打错了。
3.答案正确:修正whlie。好了

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

1.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
1.2.3PTA说明
编译错误:第10行中写成了=
2.编译错误:第12行中也写成了return 0
3.答案正确:第10行写成==,第12行写成return 1

2.代码互评

一,
ta

me

Q1:该同学用了嵌套语句用break跳出循环,而我只用了while语句
2.而且这同学用了两个if嵌在while里面,我只用了1个if,我的更为简洁明了。

3.学习总结

3.1学习进度条

这周所花时间 代码行 学到的知识点简介 目前比较迷惑的问题
第七周 19小时 286行 分支结构
第八周 15小时 338行 函数的定义和调用 暂无
第九周 18小时 422行 if-slse语句
第十周 20 小时 488行 switch no
第十一周 20小时 520行 while和do-while结构 对有些语句结构还有些陌生
第十二周 16小时 130行 熟悉使用while和do-while结构解决问题 目前还不太熟练
第十三周 15小时 120行 熟悉使用for结构,了解并掌握了break语句和continue语句 目前还不太熟练continue语句
第十四周 15小时 180行 熟悉使用循环结构 目前还不太熟练
第十五周 14小时 260行 熟悉函数,学会使用自定义函数 对数组不太了解,对函数不太熟练

3.2累积代码行和博客字数

时间 代码行 博客字数
第七周 556 1050
第八周 750 1390
第九周 980 1670
第十周 1050 1890
第十一周 1200 2200
第十二周 2094 2656
第十三周 2379 3170
第十四周 2879 3778
第十五周 3147 4156
3.3学习内容总结和感悟

3.3.1学习内容总结
学习的函数类型很多,还需多多巩固,加强锻炼。提高质量。
2.保持一颗求学的心。持之以恒。让自己做到更好。
3.巩固do-while语句运用,continue语句,调用函数的运用
作业越来越难,但我们还是坚持下来。
还是这句话,凡是不能杀死我的都能使我更加强大。

posted on 2019-12-06 21:23  魏乾豪  阅读(198)  评论(1编辑  收藏  举报

导航