C语言I博客作业11


这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 C语言I作业11
我在这个课程的目标是 学会使用函数,熟练函数类型
这个作业在那个具体方面帮助我实现目标 在PTA的练习中逐渐熟练语句用法,和对知识的自我总结上
参考文献 集美大学林丽老师百度文库、C语言程序设计

1.PTA实验作业

1.1 题目名1

统计某类完全平方数

本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
输入样例:105 500
输出样例:cnt = 6

1.1.1数据处理

数据表达:b代表余数;i,j用于循环;a用于判断i是否满足条件,它们都是整型变量;

数据处理:
{
    int n1, n2, i, cnt;   定义变量n1,n2,i,cnt的类型
	
    scanf("%d %d", &n1, &n2);   输入n1,n2
    cnt = 0;  对cnt对进行赋值
    for ( i=n1; i<=n2; i++ )   进行循环直到n1等于n2为止
    {
        if ( IsTheNumber(i) )   当满足函数条件
            cnt++;    cnt累计
    }
    printf("cnt = %d\n", cnt);  输出cnt

    return 0;   结束
}
int IsTheNumber ( const int N )    函数头
{
    int i,s[10],a,b=0,j;  定义变量i,a,b,i,j,数组s
    i=N;   将i赋值给N
    a=sqrt(i);   a等于根号i
    if(a*a==i)   当i等于a的平方
    {
        while(i>0)   当i>0时
        {
            s[b]=i%10;  用s[b]来存放i除以10的余数
            i=i/10;     i等于i除以10
            for(j=0;j<b;j++)    进行循环
            {
                if(s[b]==s[j])   当s[b]等于s[j]时

                return 1;     返回1
            }
            b++;    累加b
        }
    }
    return 0;  返回0
}

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
46 572 7 46和572之间满足条件的数有7个
400 900 5 400和900之间满足条件的数有5个
10 700 8 10和700之间满足条件的数有10个

1.1.4 PTA提交列表及说明

* 编译错误:忘记打分号,通过看错误提示发现错误并改正的;
* 编译错误:忘记打分号,通过看错误提示发现错误并改正的;

1.2题目名2

统计各位数字之和是5的数

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

函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。最后按照格式
输入样例:104 999
输出样例:104 is counted.count = 15, sum = 3720

1.2.1数据处理

*数据表达*:
s用来计算各数字之和是否等于5;t代表余数;n为输入数;count为满足条件的整数个数, sum为这些整数的和;
*数据处理*:
int is( int number );
void count_sum( int a, int b );     自定义函数

int main()
{
    int a, b;   定义a,b变量

    scanf("%d %d", &a, &b);   输入a,b
    if (is(a)) printf("%d is counted.\n", a);  如果返回值不为0,则输出a is counted.
    if (is(b)) printf("%d is counted.\n", b);  如果返回值不为0,则输出b is counted.
    count_sum(a, b);  自定义函数

    return 0;   结束
}
 int is( int n)
{
    int s=0,t=0;  定义s,t并对其赋值为0
    while(n!=0)   当n不等于0时一直循环
    {
        t=n%10;   t等于n除以10的余数
        n/=10;    n等于n除以10
        s+=t;     s等于s加t
    }
    if(s==5)     如果s等于5
    return 1;    返回1
    else   否则
    return 0;   返回0
    }
void count_sum( int a, int b )
{
    int sum=0,count=0,i;    定义sum,count,i变量
    for(i=a;i<=b;i++)      进行循环,直到i等于b为止
    {
        if(is(i))   如果满足函数is(i)
        {
            count++;  count进行累加
            sum+=i;   sum等于sum加i
        }
    }
printf("count = %d, sum = %d\n",count,sum);   输出count,sum
}

1.2.2实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
66 222 count=8 sum=1246 在66到222之中count为8,sum为1246
77 999 count=15 sum=3720 在77到999之中count为15,sum为3720
221 776 221 is counted count=8 sum=2695 在221到776之中count为8,sum为2695,221 is counted

1.2.4 PTA提交列表及说明

*编译错误:把双引号打成中文版,通过调试发现的,并改正;

2.代码互评

自己代码

同学代码:

* 该同学定义的变量与我的不同;
* 该同学先用i计算余数,再存放到数组中;而我直接用数组存放余数;
* 我在取余后再次使用for循环来判断是否满足条件,该同学用s[i]=2来判断;

自己代码

同学代码

* 该同学定义的变量与我的不同;
* 该同学用了do-while语句来循环语句,而我用的是while循环语句和for循环语句;

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较困惑的问题
第六周 4天 20 用 MinGW-w64 来编译C程序,学习编程计算温度的转化
第七周 3天 99 学习用if,else等语句编译程序
第八周 2天 75 学习使用循环语句,用for来编译程序
第九周 3天 94 学习各种使用函数eg:fact(i) for循环与while循环的区别
第十周 2天 213 学习使用多种分支结构 对分支结构中for循环有点迷糊不太能理解
第十一周 1天 135 学习使用switch语句
第十二周 1天 96 学习使用while语句
第十三周 1天 83 学习使用循环嵌套,continue语句 循环嵌套的顺序
第十四周 1天 115 练习循环嵌套与if-else语句的结合 循环嵌套的顺序
第十五周 2天 48 学习使用不同类型的函数 不知道函数应该怎么衔接

3.2 累积代码行和博客字数

时间 博客字数 代码行数
第四周 651 28
第六周 2041 48
第七周 4337 147
第八周 7005 222
第九周 9723 316
第十周 11911 529
第十一周 13872 664
第十二周 15759 760
第十三周 18111 843
第十四周 20009 958
第十五周 22007 1006

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

本周学习了函数的用法,类型,变量的用法及类型。虽然以前就已经学了一次函数,但是这次的学习是更加的深入。可以从PTA的难度中看出,这次的题目好像是突然上了一个档次,让人应接不暇。第一道题目已经让我力不从心,因为它用了数组,然而我并没有学习过,于是代码看的有点懵逼。从此次难度可以得出,在计算机这条路上我们还是太单纯。以后要更努力学习了,不然快跟不上了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM