C语言|博客作业09

这个作业属于哪个课程https://bbs.youkuaiyun.com/forums/csuft_swxy_C?category=0&typeId=17321
这个作业要求在哪里https://bbs.youkuaiyun.com/topics/603700627
这个作业的目标懂得如何运用函数
学号20218546

@TOC

1. PTA作业

1.1(6-1 统计各位数字之和是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<ab≤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 贴图展示代码

在这里插入图片描述

1.1.2 数据处理

数据表达:在is函数中定义了整型c来表示输入的number的每个数字,定义整型变量sum来表示number的每个数字的和,c的值是用一个while循环来计算number对10取余的结果,sum的值是由在while循环中number每次对10取余的结果的和,在count_sum函数中定义了整型i、整型count、整型sum,i的值开始时等于a,利用for循环逐渐增加到b,count的值是利用if语句调用is函数来判断素数的个数而逐渐增加的,sum的值是由判断之后的素数之和。
数据处理:数据用到的表达式为 c=number%10; number=number/10; sum+=c; count++; sum+=i,流程结构为循环结构和选择结构。

1.1.3 PTA提交列表及说明

在这里插入图片描述

1.2 (6-2 使用函数输出水仙花数 (20 分) ):

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153等于1的三次方,5的三次方,3的三次之和,本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。

函数接口定义:

int narcissistic( int number );
void PrintN( int m, int n );

函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。

函数PrintN则打印开区间(m, n)内所有的水仙花数,每个数字占一行。题目保证100≤mn≤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;
}

/* 你的代码将被嵌在这里 */

输入样例:

153 400

输出样例:

153 is a narcissistic number
370
371

1.2.1 贴图展示代码

在这里插入图片描述

1.2.2 数据处理

数据表达:在narcissistic函数中定义了整型变量b,c,分别对其赋值number的值;定义了整型变量a来表示number的各个数字,是通过while循环来对number对10多次取余而得的值;定义了整型变量count来表示number有多少位数字,其结果是由while循环来把b对10多次整除的次数。定义了整型变量sum来表示各个数字的count幂之和,其结果是由while循环把a进行sqrt函数的计算之后相加。
PrintN中定义了整型i开始表示m+1的值,逐渐增加到n-1的值。
数据处理:数据用到的表达为b=b/10; count++;;a=number%10; sum+=pow(a,count);number=number/10;和流程结构为循环结构和选择结构。

1.2.3 PTA提交列表及说明

在这里插入图片描述

1.3 (6-3 使用函数验证哥德巴赫猜想(20))

本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于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;
}

/* 你的代码将被嵌在这里 */

输入样例:

89 100

结尾无空行
输出样例:

89 is a prime number
90=7+83, 92=3+89, 94=5+89, 96=7+89, 98=19+79
100=3+97, 
结尾无空行

1.1.3 贴图展示代码

在这里插入图片描述

1.3.2 数据处理

数据表达:在prime函数中定义了整形变量i和k,k的值是由p除以2而得的(因为一个数不是素数就是合数,而一个合数除了1之外,最小因子为2,那么最大银子为本身除以2),i首先赋值为2,逐渐增加到k。在Goldbach函数中定义了整型变量啊,count。
数据处理:数据用到的表达式为k = p / 2;p % i == 0。和流程结构为循环结构和选择结构。

1.3.3 PTA提交列表及说明

在这里插入图片描述
1.答案错误:在输出的地方多加了一个逗号,把逗号去掉即可;
2.格式错误:在输出的地方多打了一个空格,把空格去掉即可。

1.4 (6-4 使用函数求素数和 (20 分))

使用函数求素数和

prime(p), 其中函数prime当用户传入参数p为素数时返回True,否则返回False. PrimeSum(m,n),函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数1<=m<n

函数接口定义:
在这里描述函数接口:
prime(p),返回True表示p是素数,返回False表示p不是素数
PrimeSum(m,n),函数返回素数和
裁判测试程序样例:

/* 请在这里填写答案 */

m,n=input().split()
m=int(m)
n=int(n)
print(PrimeSum(m,n))

输入样例:
在这里给出一组输入。例如:

1 10
结尾无空行

输出样例:
在这里给出相应的输出。例如:

17

1.4.1 贴图展示代码

在这里插入图片描述

1.4.2 数据处理

数据表达:在isPrime函数中定义了整型变量i,来判断number是否为素数,在PrimeSum函数中定义了整型i来表示m逐渐增加到n+1的数字,定义了整型sum来对素数进行求和。
数据处理:数据用到的表达式为number%i==0;sum+=i;和流程结构为循环结构和选择结构。

1.4.3 PTA提交列表及说明

在这里插入图片描述

2. 学习总结

2.1 学习进度条(5分)

周/日期这周所发的时间代码行学到的知识简介目前比较迷惑的问题
14/12-6/12-116h200了解计算机网络和webpta题目的第三道题目

2.2 累积代码行和博客字数

在这里插入图片描述

2.3 学习感悟

2.3.1 这周的专业课学些了计算机网络和web,原来当我们在发送消息给别人的流程是用户输入内容——物理层(实现数据在各种传输介质上的传输)——数据链路层(保证传输信息的正确性)——网络层(进一步管理数据从而实现传输目的端)——传输层(负责应用程序和应用程序之间的通信)——应用层(在多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务)。经过这么多流程之后才会发送到对方那
2.3.2 这周专业课节课了,老师和我们说开学要进行C语言考试,所以c的学习还未停。加油,铁汁!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值