C语言I作业11

一、本周作业头

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10132
我在这个课程的目标是 熟练掌握好C语言,培养自己的思维能力,同时加快敲代码速度。
这个作业在那个具体方面帮助我实现目标 可以帮助进行的字符编程的运用
参考文献 百度百科、CSDN博客、C语言程序设计、浮点数的精度问题

二、本周作业

1.PTA实验作业

1.1统计各位数字之和是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 = 这些整数的和

输入样例:

104 999

输出样例:

104 is counted.
count = 15, sum = 3720

裁判测试程序样例:

#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;
}

/* 你的代码将被嵌在这里 */

1.1.1数据处理

数据表达:第一个函数int s=0,t=0,int n;s表示各位数字之和,t表示该数的各位数。n表示输入的整数。第二个函数
用了 sum=0,count=0,i,int a, int b;sum表示满足上述要求整数的和,count表示满足上述要求整数的个数,i示循环起点,a,b表示区间。
数据处理:

int is( int n)
{
  int s←0,t←0;
  while n!←0
    t←n%10;
    n/←10;
    s+=t;
  }
  if(s←5)
  return 1;
  else
  return 0;
}
void count_sum( int a, int b )
{
  int sum←0,count←0,i;
  for i←a to b
    if(is(i)){
      count++;
      sum+=i;
    }
  }
  printf("count = %d, sum = %d",count,sum);
}

1.1.2实验代码截图

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

1.1.3 造测试数据

输入数据 输出数据 说明
a=1,b=1 count = 0, sum = 0 当a,b=1时为最小区间
a=104,b=999 104 is counted.count = 15, sum = 3720 104属于各位数字之和是否等于5
a=1,b=10000 count = 56, sum = 77770 当a=1,b=10000时为最大区间

1.1.4 PTA提交列表及说明

C语言I作业11_第2张图片
编译错误:忘记定义s,t。
编译错误:if(s==5)写成if(s=5).
编译错误:没有编写return 0;
答案错误:少写了一句n=n/10;
编译错误:忘了定义count,sum;
编译错误:忘了定义i.

1.2统计某类完全平方数

本题要求实现一个函数,判断任一给定整数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.2.1数据处理

数据表达:使用了int n,a,i;double m;int num[10]={0};n表示整型N的开根号,m表示浮点型N的开根号;a就是N,i表示循环起点
num[10]={0}表示数组长度为10底数为0.

数据处理:

int IsTheNumber ( const int N )
{
    int n,a,i;
    double m;
    int num[10]←{0};
    n←sqrt(N);
    m←sqrt(N);
    a←N;
    ifa==m*n
    while a!=0
    
        for i←0 to 9
        
            if a%10==i
                num[i]+=1;
                if num[i]==2
                    return 1;
                
            
            a←a/10;
        
    return 0;

1.2.2实验代码截图

C语言I作业11_第3张图片

1.2.3 造测试数据

输入数据 输出数据 说明
n1=105,n2=500 cnt = 6 在105 500这个区间之中有6个完全平方数
n1=1,n2=500 cnt = 7 在1 500这个区间之中有7个完全平方数
n1=1,n2=1000 cnt = 9 在1 1000这个区间之中有9个完全平方数

1.2.4 PTA提交列表及说明


编译错误:if(a%10==i)写成了if(a%10=i)
部分正确:a=a/10;放入了for循环内部。

2.代码互评

自己代码 同学代码
C语言I作业11_第4张图片 C语言I作业11_第5张图片

不同点:

1.我是通过m,n一个整型一个浮点型来表示N。而该同学直接开根号没分整型和浮点型。
1.在判定数组中的值是否为2时,我用了for语句去判定,而该同学用的if语句

自己代码 同学代码
C语言I作业11_第6张图片 C语言I作业11_第7张图片

不同点:

1.同样使用的是for循环,但他使用的是通过N=N/10的方式来进行判断。
2.该同学使用的判断的条件为temp[i%10]!=0而我使用的是num[i]==2.

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
10/8-10/12 5h 224 if-else语句和输入输出格式 变量的处理
10/13-10/18 12h 263 for循环语句,如何计算累加题 不知道什么时候用include
10/19-10/26 15h 334 如何编写自定义函数及更加熟练掌握for循环 自定义函数的使用
10/26-11/2 14h 355 如何使用逻辑表达式及else-if语句 如何去寻找else-if之间的关系
11/2-11/8 13h 284 如何使用switch语句 switch语句与for循环同用时的关系
11/9-11/15 16h 231 使用while语句以及字符型变量的输入输出,#include的使用 数组的使用
11/16-11/22 10h 203 使用循环的嵌套解决问题,以及break,continue语句 在多个循环中如何输出换行
11/23-11/29 12h 326 通过使用字符型变量进行解题 字符的输入与输出
11/30-12/6 15h 412 学习了如何使用全局变量和局部变量 实数的负零问题和误差问题

3.2 累积代码行和博客字数

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

3.3 学习内容总结和感悟

3.3.1 学习内容总结
C语言I作业11_第9张图片

3.3.2 学习体会
这周的作业相对而言有点难度,特别是那个一元二次方程的题;不断的提交修改,提交修改;写的人心态都快要崩了。其中牵扯到了一个没有学习的
知识点,那就是误差问题;浮点数的精度问题;通过百度最终找到了如何解决的方法。历尽千辛万苦终于写了出来。除此之外,也学习到了全局变量,
局部变量,静态变量,动态变量;而且又提到了自定义函数,通过两个题又重新的将自定义函数复习了一遍;发现之前还是有很多没有弄懂的问题,除
了自定义函数,这次还使用到了while语句以及for循环以及if语句。很好地帮助我复习了一遍之前所学习的知识点。

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