这个作业属于哪个课程 | https://bbs.csdn.net/forums/csuft_swxy_C?category=0&typeId=17328 |
---|---|
这个作业要求在哪里 | https://bbs.csdn.net/topics/603700545 |
这个作业的目标 | <学习C语言> |
学号 | <20218627> |
C语言I博客作业09
1. PTA作业
1.1 6-1 统计各位数字之和是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.\n", a);
if (is(b)) printf("%d is counted.\n", b);
count_sum(a, b);
return 0;
}
/* 你的代码将被嵌在这里 */
1.1.1 代码截图
1.1.2 数据处理
函数is:
数据表达: 使用了整型变量remainder,sum。remainder值由number除以10 取余数得到,sum初始赋值0,最终储存结果为remainder对number取余得到的各位数 之和。
数据处理: 使用while循环对number的各位数求和,使用if-else条语句判断num是否为5,是则返回1,否则返回0。
函数count_sum:
数据表达: 使用了整型变量count,sum,i。count,sum初始赋值0,最终值由for循环在[a,b]满足is函数时count加1,sum加上i得到,i初始赋值a,在for循环递增直至i>b结束循环。
数据处理: 使用for循环嵌套if语句调用is函数在区间[a,b]寻找各位数之和为5的数。
1.1.3 PTA提交列表及说明
格式错误: 第一次错误count_sum函数输出的等号两边没有加空格,第二次输出逗号后面没有加空格。加上空格后解决。
1.2 6-2 使用函数输出水仙花数
题目详情:
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=⒈³﹢⒌³﹢⒊³ 。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。
函数接口定义:
int narcissistic( int number );
void PrintN( int m, int n );
函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。
函数PrintN则打印开区间(m, n)内所有的水仙花数,每个数字占一行。题目保证100≤m≤n≤10000。
裁判测试程序样例:
#include <stdio.h>
int narcissistic( int number );
void PrintN( int m, int n );
int main()
{
int m, n;
scanf("%d %d", &m, &n);
if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m);
PrintN(m, n);
if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n);
return 0;
}
/* 你的代码将被嵌在这里 */
1.2.1 代码截图
1.1.2 数据处理
函数narcissistic:
数据表达: 使用了整形变量sum,num,count,a,b,i。sum,count初始赋值0,sum的值由while循环嵌套for循环得到number各位数的位数次方之和,count由while循环得到num的位数。num的值由number赋值给num。对num循环除以10取余得到各位数逐一赋值给a。b初始赋值1,然后由a乘以number的位数次方再赋值给b。
数据处理: 使用while循环确定number的位数,使用while循环嵌套for循环得到number各位数乘以位数之和sum,使用if-else语句确定返回值。
函数PrintN:
数据表达: 使用了整型变量i。i初始赋值m+1,后用于for循环的控制变量i递增直至i>n时结束循环。
数据处理: 使用for循环嵌套if语句调用函数narcissistic在区间[m+1,n]寻找水仙数并逐行打印。
1.2.3 PTA提交列表及说明
部分正确: 对水仙数的定义不了解误以为都是立方,百度了解数是几位就是几次方后改正。
1.3 6-3 使用函数验证哥德巴赫猜想
题目详情:
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
函数接口定义:
int prime( int p );
void Goldbach( int n );
其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可以分解为5+19,还可以分解为7+17),要求必须输出所有解中p最小的解。
裁判测试程序样例:
#include <stdio.h>
#include <math.h>
int prime( int p );
void Goldbach( int n );
int main()
{
int m, n, i, cnt;
scanf("%d %d", &m, &n);
if ( prime(m) != 0 ) printf("%d is a prime number\n", m);
if ( m < 6 ) m = 6;
if ( m%2 ) m++;
cnt = 0;
for( i=m; i<=n; i+=2 ) {
Goldbach(i);
cnt++;
if ( cnt%5 ) printf(", “);
else printf(”\n");
}
return 0;
}
/* 你的代码将被嵌在这里 */
1.3.1 代码截图
1.3.2 数据处理
函数prim:
数据表达: 使用了整型变量i,作为for循环的控制变量递增直至i>p时结束循环。
数据处理: 使用了if-else语句嵌套for循环判断p是否为素数,实则返回1,否则返回0。
函数 Goldbach:
数据表达: 使用了整型变量p,q。p初始赋值3,作为for循环的控制变量递增直至p>n结束循环。q的值由n-p得到。
数据表达: 使用了for循环嵌套if语句寻找满足q,p之和为n且都为素数条件的数,以p为循环控制变量确保p为最小的满足条件的值。
1.3.3 PTA提交列表及说明
答案正确:在自定义测试区测试后提交得到。
1.4 6-4 使用函数求素数和
题目详情:
使用函数求素数和
prime§, 其中函数prime当用户传入参数p为素数时返回True,否则返回False. PrimeSum(m,n),函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数1<=m<n。
函数接口定义:
在这里描述函数接口:
prime§,返回True表示p是素数,返回False表示p不是素数
PrimeSum(m,n),函数返回素数和
裁判测试程序样例:
/* 请在这里填写答案 */
m,n=input().split()
m=int(m)
n=int(n)
print(PrimeSum(m,n))
1.4.1 代码截图
1.4.2 数据处理
函数prime§:
数据表达: 整型变量p,i。字典key,p由输入得到,i为for循环控制变量递增直至i>p结束循环。把True作为字典的一个对象。
数据处理: 使用if语句判断p是否为1,1不为素数返回False,使用for嵌套if判断p在区间[2,p]是否有约数,是则为非素数返回False,否则为素数返回key(True)。
函数PrimeSum(m,n):
数据表达: 使用了整型变量sum,i。整型形参n,m。sum初始赋值0,最终值为区间[m,n+1]中所有素数之和。m,n由输入的实参实例化得到。i为for循环的控制变量递增直至i>n+1结束循环。
数据处理: 使用for循环嵌套if语句在区间[m,n+1]寻找所有素数储存于sum,最后返回sum。
1.4.3 PTA提交列表及说明
答案正确:参考文献——百度。
2.学习总结
2.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第十四周 | 7h | 100 | 利用函数统计各位数字之和是5的数,使用函数输出水仙花数,使用函数验证哥德巴赫猜想,Python代码 | python |
2.2 积累代码行和博客字数
2.3 学习感悟
这周学习了函数的内容,函数是一个大型程序中的部分代码,由一个或多个语句组成,它负责完成某项特定任务并且相较于其他代码,具备相对的独立性。提供对过程和细节的隐藏。函数分为库函数和自定义函数,库函数是为了支持可移植性和提程序效率方便程序员进行软件开发而提供的。自定义函数一定要有函数声明和函数定义,相较于库函数自己设计的自定义函数具有极大的发挥空间。