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次作业开始博客园写的有些敷衍检讨。