C语言I作业11

问题 回答
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 作业要求
我在这个课程的目标是 编程
这个作业在那个具体方面帮助我实现目标 更好的学习c语言
参考文献 简述

1.PTA实验作业(20分/题)

1.16-2 统计各位数字之和是5的数 (20分)

本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于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
###1.1.1数据处理

数据表达:定义了整形变量a,b为输入的范围,自定义函数is并定义了整形变量c,d,sum,其中sum为number的每一位相加的和,i为返回值;
自定义函数count_sum并定义了整形变量count,sum,i,其中count为记录满足要求的个数,sum为每一个满足条件的数的和,i用来控制循环。
数据处理:

数据处理:
主函数:
定义a,b为输入的范围

输入范围
if 自定义函数is返回来的值不为0  输出a is counted
if 自定义函数is返回来的值不为0  输出b is counted
自定义函数 count_sum(a, b);

定义函数is:
定义sum,c,d为number的每一位数累加的和且sum=0

while(判断number是否等于0)
{
    c=number%10
    sum+=c
    number/10
}
if判断 (sum是否=5)
是
返回1
else
返回0

定义函数count_sum
定义count用于记录满足条件整数的个数,sum1为满足条件的每一个数累加的和,i为控制循环

for(i=a;i<=b;i++)
{
    {
    if is(a)
    count++
    sum1+=i
    }
    输出count,sum
}

    

1.1.2实验代码截图


1.1.3 造测试数据

输入数据 输出数据 说明
104 999 104 is counted. count = 15, sum = 3720 104的各位数字和为5,满足条件的整数个数为15,这些数的和为3720
113 999 113 is counted. count = 14, sum = 3616 113的各位数字和为5,满足条件的整数个数为14,这些数的和为3616
108 255 count = 8, sum = 1372 108各位数字和不为5,满足条件的整数个数为8,和为1372

1.1.4 PTA提交列表及说明

提交列表说明:
编译错误:符号缺少,还有在自定义函数后加尔;
答案正确:调试改正

1.26-1 统计某类完全平方数 (20分)

本题要求实现一个函数,判断任一给定整数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\n", cnt);

    return 0;
}

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

1.2.1 数据处理

数据表达: 定义了整型变量n1, n2, i, cnt;n1,n2,是输入的参数也是一个范围,i用于循环,cnt用于计数,在IsTheNumber自定义函数中定义了常变量N,在IsTheNumber函数内定义了i,n,一个用于循环一个用于判断,
数据处理

数据处理:
#include<stdio.h>
#include<math.h>
n1,n2为输入的取值范围,i用于循环,cnt用于计数

接收n1,n2
cnt=0
for(i=n1;i<=n2;i++)
{
    判断(if) 自定义函数返回来的值不为零 执行
    cnt++
}
输出cnt

自定义函数:IsTheNumber 定义常变量N
定义m用于数据处理,b用于判断N的位数,n就是输入的整数,定义一个10位的数组p用了收集n的值;
n=N
p[10]={0}
m=sqrt(n)
如果(if) (m*m=n )
执行
{
    while(n)
    {
        b=n%10
        n/=10
        p[b]++
    }
    进入for循环 令i=0,i<9,i自增
    {
    if p[i]>1
        返回1     
    }
} 
    返回0	

1.2.2 实验代码截图


1.1.3 造测试数据

输入数据 输出数据 说明
101 555 cnt = 6 101-555内有6个完全平方数
188 999 cnt = 6 188-999内有6个完全平方数
288 666 cnt = 3 288-666有3个完全平方数

1.2.4 PTA提交列表及说明

提交列表说明:
答案正确:数组在使用过程中出错,不熟练。

2.代码互评(5分)

同学代码截图

自己代码截图


  • 两者代码思路差不多,判断和执行的先后顺序不同。

3 学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学习到的知识点简介 目前比较疑惑的问题
第六周 20小时 416行 基本学习C语言
第七周 6小时 153行 进一步了解算法
第八周 21小时 425行 学习了for循环结构,并了解了while循环结构
第九章 17小时 679行 学习了自定义函数
第十周 21小时 453行 学习了if-else,for,while的嵌套。
第十一周 23小时 627行 学习了switch选择结构。
第十二周 23小时 424行 学习了do while。
第十三周 6小时 142行 学习了continue 最近有点烦躁没静下心来学习,整理学过的内容,有些思路乱
第十四周 8小时 210行 选择合适的算法、合理的循环结构,熟练的编写程序

3.2 累积代码行和博客字数

时间 博客字数 代码行
第四周 713 0
第五周 713 0
第六周 1540 416
第七周 2419 569
第八周 3595 994
第九周 4676 1124
第十周 6154 1585
第十一周 7682 2212
第十二周 9142 2658
第十三章 10098 2800
第十四周 10132 3010

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

第8次作业开始博客园写的有些敷衍检讨。

posted @ 2019-12-06 21:05  北海呀  阅读(227)  评论(1编辑  收藏  举报