• C语言I博客作业11


    这个作业属于那个课程 C语言程序设计II
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/10098
    我在这个课程的目标是 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型
    这个作业在那个具体方面帮助我实现目标 理解函数的定义
    参考文献 C语言程序设计,中国大学慕课

    1.PTA实验作业

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

    }

    /* 你的代码将被嵌在这里 */
    输入样例:
    105 500
    输出样例:
    cnt = 6

    1.1.1数据处理

    数据表达:用int整形定义了i, a[100],b, count,j五个变量,其中a[100]是数组。这里开始判断是否是完全平方数,中间有判断是否有两个数字是一样的,就是用数组储存每次计算的结果,然后进行比较是否相等

        int IsTheNumber(const int N)
    {
        int i, a[100],b, count = 0,j;//定义整型变量
        i= N;
        b = sqrt(i); //对这个数开平方
        if (b*b==i)
        {
            while (i >0)
            {
                a[count] = i % 10;    //如果这个数是平方数,则继续执行,然后使用了while语句
                i =i/10;              //当i>0时,在用数组进行计算,储存每次结果,看是否相等
                for (j = 0;j < count; j++)
               {
                 if(a[count] == a[j])
                   return 1;
               }
               count++;
            }
        }
        return 0;  //最后输出结果
     }
    
    

    1.1.2实验代码截图

    1.1.3造测试数据

    输入数据 输出数据 说明
    105 500 cnt=6 例题上的
    140 463 cnt = 4 随机输入的数据测试

    1.1.4 PTA提交列表及说明


    1.由于少打了一个大括号,导致编译错误。
    2.条件使用错误,while语句判断哪里是大于等于0,应该是大于0,所以答案错误了。

    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.
    ", a);
    if (is(b)) printf("%d is counted.
    ", b);
    count_sum(a, b);
    
    return 0;
    

    }

    /* 你的代码将被嵌在这里 */
    输入样例:
    104 999
    输出样例:
    104 is counted.
    count = 15, sum = 3720

    1.2.1数据处理

    数据表达:运用整型int定义x,n=0;本题使用了while语句,if-else条件语句,for循环语句。

           int is( int number )
    {
    	int x,n=0;
    	while(number!=0)  //*判断这个数不能为0;然后在执行下面*//
    	{
    		x=number%10;  //*除以10取余*//
    		n=n+x;
    		number=number/10; //*取整*//
    	}	
    	if(n==5)  //*这个数各位数字之和是否等于5*//
    	{
    		return 1;//*是5,则返回1*//
    	}
    	else
    	{
    		return 0;//*不是5,返回0*//
    	}
    }
    void count_sum( int a, int b )
    {
    	int i,sum=0,count=0;
    	for(i=a;i<=b;i++)
    	{
    		if(is(i))
    		{
    			count++;//*满足条件的整数个数逐加*//
    			sum=sum+i;//*这些整数的和*//
    		}
    	}
    	printf("count = %d, sum = %d",count,sum);//*输出满足条件的个数,这些数的和*//
    }
    
              
    

    1.2.2实验代码截图

    1.2.3造测试数据

    输入数据 输出数据 说明
    104 999 104 is counted count = 15, sum = 3720 这个数有十五个,和为3720
    5 60 5 is counted. count = 6, sum = 165 随机输入的数据进行测试

    1.2.4 PTA提交列表及说明

    1.没有按照题目要求写,比如要定义int is( int number ),而我定义了例外一个字母。
    2.用了取余取整的方法。
    3.格式错误:在答案输出的那里等号两边要空格。

    二.代码互评

    我的代码 同学代码

    1.同学代码与我思路一样,但他使用的是do-while语句,我使用了while语句。
    2.同学2的代码与我们两个使用方法都不同,他采用的是数组,我们还没学的,说明他往提前学了,值得我们学习。
    3.其余的判断和求累积和是差不多的,算法也差不多。

    3.1 学习进度条

    日期 这周所花的时间 代码行 学到的知识简介 目前比较迷惑的问题
    第一周 6小时左右 40 学会一些符号的使用 开始感觉写代码太难,不知写它是干什么的所以很困惑
    第二周 11小时左右 70 会使用Markdown格式和一些基础的C语言知识 对代码错误找不出原因
    第三周 14小时左右 90 学会了基本语句和编写程序的列子、如if语句还有变量名称 有些格式不会及符号不会打
    第四周 25小时左右 120 for循环语句的使用以及数据处理的运算符 对格式问题不太明白、表达式有点不会和一些细节问题总是忽略
    第五周 40小时左右 150 函数的定义以及函数调用 不完全理解函数的使用,一些步骤有点迷糊
    第六周 30小时左右 130 分支结构、逻辑运算符、字符型数据以及if-else的嵌套结构 逻辑关系搞错,常误解题目意思
    第七周 40小时左右 150 switch语句的使用 switch与if-else的嵌套会有点混淆,格式还不太明白
    第八周 50小时左右 170 while语句和do-while的使用,以及它们和for语句的区别 对while语句的使用不是很熟悉
    第九周 40小时左右 140 continue语句和break语句的区别及用法 有点模糊,它们各自在哪里可用
    第十周 30小时左右 150 了解了一点函数 不清楚怎么使用
    第十一周 20小时左右 100 函数的定义和声明 函数的一些基本概念没理解透彻,还有很多变量很混淆

    3.2 累积代码行和博客字

    3.3学习内容总结和感悟

    3.3.1 学习内容主要总结

    3.3.2 学习体会

    .本周学习了函数的使用,以及函数的定义与声明,还有形参和实参的区别以及作用。

    .一些函数的说明,有作用域和生存期以及全局变量和局部变量,静态变量、自动变量等等。

    .本学期快要结束了,从开始学习C语言是一个懵逼状态到现在对C语言有了一定的了解,马上就要考试了,当现在看中国大学慕课时,会学到很多知识,也没有以前那样啥也不知道的状态。

    .在开学我制定的目标基本达到了,但我还是没有很好的学习C语言,有很多知识还不清楚和了解。这次题目有点难,我是寻找同学帮助完成的,他们用的方法是我们没学到的。

  • 相关阅读:
    SAP MM MIGO过账报错
    SAP MM MB5L事务代码'仅总计'选项初探
    SAP MM 巴西采购订单中的NCM Code
    SAP MM Storage Location Missing in MD04 Result?
    SAP MM 预留单据的历史修改记录?
    2018-8-10-上传代码-CodePlex
    2019-9-2-win10-uwp-九幽图床
    2018-2-13-win10-UWP-应用设置
    2018-2-13-win10-UWP-你写我读
    2018-2-13-win10-UWP-九幽登录
  • 原文地址:https://www.cnblogs.com/dengzhizhuo/p/11987110.html
Copyright © 2020-2023  润新知