• C语言I博客作业09


    1.作业头

    这个作业属于哪个课程 班级的链接
    这个作业要求在哪里 作业要求链接
    这个作业的目标 掌握自定义函数的各种用法
    学号 20208945
    1.PTA实验作业

    1.1 题目名1
    PTA 6-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
    ", cnt);
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    1.1.1数据处理

    数据表达:让n=N,b=一个数字每位上的数,m=一个数开根号后的值,并且定义了一个int型的大小为10的数组p,同时该数组所有的元素均被初始化为0。
             伪代码如下: int n=N;
                         int b;
                         int p[10]={0};
                         int m=sqrt(n);
    数据处理:利用while循环将一个数的每位数字上的值求出来,并且相同的数值用数组p储存,然后用for镶套if语句判断,最后解决问题。
             伪代码如下: if(m*m==n){
                           while(n!=0){
                                 b=n%10;
                                 p[b]++;
                                 n/=10;
                                 }
                         for(int i=0;i<=9;i++){
                              if(p[i]>1)
                            return 1;
                            }
                        }
    
    

    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    105 500 cnt = 6 成功输出
    138 354 cnt=2 成功输出

    1.1.4 PTA提交列表及说明

    说明:1.答案错误:while语句判断条件弄错了,没有处理题目后面的要求。
         2.答案正确:进行了改正。
    

    1.2 题目2
    PTA作业6-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.
    ", a);
        if (is(b)) printf("%d is counted.
    ", b);
        count_sum(a, b);
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */
    

    1.2.1 数据处理

    数据表达:int is(int number)中定义a为数的位数数值,s为各位数数值之和。
            代码如下:int a,s=0;a=number%10;s=a+s;
    数据处理:函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。
            代码如下:
    int is(int number)
    {
    	int a,s=0;
    	while(number!=0)
    	{
    		a=number%10;
    		number=number/10;
    		s=a+s;
    	}
    	if(s==5)
    	return 1;
    	else
    	return 0;
    }
    void count_sum(int a,int b)
    {
    	int m=0,sum=0;
    	for(int i=a;i<=b;i++)
    	{
    		if(is(i)!=0)
    		{
    		m++;
    		sum=sum+i;
    		}
    	}
    

    1.2.2 实验代码截图

    1.2.3 造测试数据

    输入数据 输出数据 说明
    104 999 104 is counted. count = 15, sum = 3720 成功输出正确结果
    399 480 count = 2, sum = 811 成功输出正确结果

    1.2.4 PTA提交列表及说明

    说明:1.编译错误:定义了两个函数衔接有问题,int is(int number)中没有定义a,void count_sum(int a,int b)中调用int is(int number)错误。
         2.答案正确:改正后正确。
    

    2.代码互评
    找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。

    PTA作业6-1
    同学代码截图

    同学代码截图

    自己代码截图

    对比说明:同学的代码和我的代码都有共同之处都运用了for语句嵌套循环,都使用了数组计数的方法,虽然我做出来了,但我花费的时间非常多,我还是不能理解数组。

    3.学习总结

    3.1 学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第八周10.19-10.25 8 5 如何打开编译器 我该怎么学习c语言
    第九周10.26-11.1 10 54 学会如何提问 c语言怎么才能学好
    第十周11.2-11.7 48 138 for语句,数据的类型 为什么作业这么麻烦
    第十一周11.8-11.14 51 256 for语句的应用,如何自己定义函数 怎样去理解题意,自己定义的函数如何符合题意去调用
    第十二周11/15-11/21 49 528 学习了分支结构,switch语句,以及简单数组定义 如何正确的理解题目意思,怎样解读问题
    第十三周11/22-11/28 50 656 学习了分支结构,switch语句,以及简单一维数组 怎样用所学的知识更简单的解决问题
    第十四周11/29-12/5 56 689 学习了新的循环结构while语句 怎样用所学的知识更简单的解决问题
    第十五周12/6-12/12 78 1026 学习了镶套循环break,continue 为什么老师布置的作业这么难
    第十五周12/13-12/19 80 1268 学习了函数的各种定义及其用法 为什么老师布置的作业这么难

    3.2 累积代码行和博客字数
    1.累积代码行:4973
    2.博客字数:26405

    3.3 学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会
    这一周的学习体会,这一周学习真的累,临近期末了,为什么作业这么难,考试这么难的话我真的不行了,平常作业还可以问问室友,查查资料,用时间慢慢把作业磨出来,可如果考试这样的话……唉,c语言学习全在于努力码代码呀,用时间去堆积才能得到提升,继续努力吧。

  • 相关阅读:
    装饰
    统一软件开发过程之2:用例文本书写
    统一软件开发过程之1:创建领域模型
    工厂方法
    volatile
    中介者
    建造者
    C#委托,事件与回调函数
    控件资源嵌入
    装饰
  • 原文地址:https://www.cnblogs.com/dongrgg/p/14159308.html
Copyright © 2020-2023  润新知