C语言I作业11

吃可爱长大的小学妹 提交于 2019-12-06 16:40:56
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 C语言I作业11
我在这个课程的目标是 复习之前学过的语法知识,并学会运用
这个作业在那个具体方面帮助我实现目标 归纳,总结自己的解题错误,进一步了解自己的学习情况
参考文献 百度

1.PTA实验作业

1.1统计某类完全平方数

本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。

函数接口定义:

    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

数据表达
定义整形变量m,n,j,i
m作为判断任意整数N的开方;
把N赋值给n;
用i,j用于for循环;
数据处理(伪代码)

        int IsTheNumber(const int N)
    {
    定义变量 m,n,i,j;
    n=N;
       m=(int)sqrt(N);//将平方数开方
         if (m*m==n)//判断是否是平方数
    {
          int f[10]={0};//取0-9的数作为位数,用数组作为表头
           while (n>0)
      {
          j=n%10;//取个位数
        for循环;
          { 
           f[i]++;//如果取的个位数与i相等,就在数组对应的表头那里都加一
           if (f[i]>1)//题目上说至少两个相等的数,所以要大于1
           {
              return 1;//返回1
    
       n/=10;//取下一位数
     }
 返回0;
  结束;
   }

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
105 500 cnt=6
130 190 cnt=1
99 199 cnt=3

1.1.4 PTA提交列表及说明


*编译错误:
1.sqrt打成了sprt导致编译出错;
2.sqrt前面的int没有括号;

1.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

数据表达:
定义了s,t,n,sum,count;
s用来判断给定正整数的各位数字之和是否等于5;
count用来记录满足条件的整数个数
sum用来记录这些整数的和
数据处理:
整型变量:int is(int n)

            int a=0,b=0;
            while (n!=0)
        
               b = n % 10;提出个位数
               n /= 10;取下一位数
               a += b;整和
        
              if (a == 5)判断整和数是否等于5

              void count_sum(int a, int b)
        
                定义变量sum = 0, count = 0, i;
               for循环;
             
               if (is(i))//以is函数的if为条件来进行判断
              
               count++;//计数满足的个数
                 sum += i;//整数的和
               结束;

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
104 999 104 is counted.count = 15, sum = 3720 样例
5 555 5 is counted.count = 21, sum = 3885
99 999 count = 15, sum = 3720

1.2.4 PTA提交列表及说明


*编译错误:
1.最后结尾的时候打了个return 0;
2.void count_sum下划线打错了;

2.代码互评

同学的代码:

我的代码:

1.该同学使用了do-while语句
2.该同学使用了if(a>b)进行判断,我没有进行他的这一步
3.他的代码从定义上和我较大的差异,我感觉我的代码更加清晰简洁。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较困惑的地方
第六周 18h 120 如何用 MinGW-w64 来编译C程序
第七周 20h 160 学习了if-else语句 运用的还不是特别熟练
第八周 22h 180 掌握使用for循环语句实现指定次数的循环程序设计
第九周 20h 200 学会使用自定义函数 不是很了解自定义函数
第十周 22h 210 学习多分支结构、字符型数据类型和逻辑运算符 对于字符型数据类型不怎么明白
第十一周 20h 150 学习使用switch语句的运用 还不是很能很熟悉的运用
第十二周 24h 220 学习使用while语句 do-while还不是很熟悉
第十三周 29h 300 学习使用continue语句和嵌套循环 对于一些较难的题目还是不能理解并运用
第十四周 33h 320 复习之前学过的知识 基础知识不牢固
第十五周 36h 360 学习使用函数和自学数组 对数组还是不清楚

3.2 累积代码行和博客字数

时间 博客字数 代码行
第六周 1003 120
第七周 1260 145
第八周 1461 169
第九周 1812 210
第十周 2013 235
第十一周 2161 246
第十二周 2300 260
第十三周 2600 300
第十四周 2641 320
第十五周 2900 360

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

期末了,也差不多都要结课了,但是感觉学习到的知识并不多,而且思路也不清晰,也不知道怎么回事,还有马上就要考试了,先把基础复习好吧
只有基础知识扎实了,才能往下面走。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!