zoukankan      html  css  js  c++  java
  • C语言I博客作业05

    这个作业是属于哪个课程 C语言程序设计II
    这个作业要求在哪里 作业要求
    我在这个课程的目标是 编写函数,看懂函数
    这个作业在那个具体方面帮助我实现目标 多个题目运用函数解决
    参考文献 文章链接

    1.PTA实验作业

    1.1:判断一个整数的各位数字平方之和能否被5整除

    1.1.1数据处理
    数据表达:定义了整数y。

    数据处理:运用了do-while语句 y=y+(n%10)*(n%10) n=n/10,将整数各个位上的数均进行平方并且累加
    再使用if-else语句处理y的结果最后是否能被5整除后分别返回数值。

    函数参数:主调函数为int main(),被调函数int fun(int n ) 实参是%d 形参 int n 类型:整型 名称:输入的整数
    1.1.2实验代码截图

    1.1.3 造测试数据

    输入数据 输出数据 说明
    12 The result is 1 样品参数
    123 The result is 0 样品参数
    12 The result is 1 与样品参数一致
    123 The result is 0 与样品参数一致
    567 The result is 1 无错误

    1.1.4 PTA提交列表及说明

    1.编译错误:漏写分号,查询得知“!”为非的意思,并且运用了do-while语句解决了问题。
    2.运行超时:将n=n/10;这一行错写成了y=y/10,导致运行超时。(粗心)
    3.全部正确:全部纠正后正确


    1.2 本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)。例如153=13+53+3^3=1+125+27=153,而1或155则不是水仙花数。如果是水仙花数,则函数返回1,否则返回0.

    1.2.1数据处理
    数据表达:int a ,b,c,d;四个整型并且分别将abc赋值为个位十位百位上的数。
    数据处理:d=aaa+bbb+ccc; d赋为各个位上的数立方和,之后运用if-else语句进行判断d是否等于输入的数。
    函数参数:主调函数为int main(),被调函数int func(int N) 实参是%d 形参 int N 类型:整型 名称:输入的整数

    1.2.2 实验代码截图

    1.2.3 造测试数据

    输入数据 输出数据 说明
    153 1 样品参数
    123 0 与样品参数相反
    568 0 与样品参数相反

    1.2.4 PTA提交列表及说明

    1.部分正确:第一次很顺利的写出了程序大概,但是对于各个位置的处理错误,百位并不是N%1000,而是c=N/100,十位是b=N/10%10;不是N%100。
    2.编译错误:中途尝试简化程序,去除多余的if-else语句并且修改了bc赋值。
    3.答案正确:顺利更改错误。

    2.代码互评

    同学代码:

    自己代码

    1.排版都十分简洁,精炼。
    2.同学1的代码中,for循环语句里将(1.0/)flag的运算与我的1.0/可以划等号。
    3.吸取了上次作业中同学的分区域写代码优点。

    3.学习总结

    3.1 学习进度条

    日期 这周所花的时间 代码行 学到的知识简介 目前比较迷惑的问题
    10/7--10/13 5个小时 80 学到了if语句 暂无
    10/13--10/20 5个小时 100 学习for循环语句 暂无
    10/20--10/27 5个小时 98 学习了函数定义 暂无

    3.2 累积代码行和博客字数

    3.3 学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会
    这次作业pta作业难度我觉得有所提高,更加增长了自身编程的各项技能,能运用所学的知识解决更多问题。
    但是6-6 使用函数验证哥德巴赫猜想的函数表达,我想了很久,我准备在接下来的几天里搞懂最后一题的编程思路。
    10/24 20:51分
    用了晚自习的时间读懂了这到pta的题目。我发现并不太难,只是害怕代码数多,而没有耐心去读。
    分解讲解:

    主函数1段:
    int prime( int p );
    void Goldbach( int n ); /:定义了两个函数,由题干可知prime用于判断素数,Goldbach用于输出 Goldbach Goldbach素数分解,由函数的形式我们也可以看到 Goldbach函数输出的结果是式子。

    int m, n, i, cnt;
    scanf("%d %d", &m, &n); /:定义变量 并输入

    if ( prime(m) != 0 ) printf("%d is a prime number ", m); /:判断是否为素数,并且输出数据。 “!”为非的意思。

    prime函数:
    int prime( int p )
    {int i ;
    if(p<=1) /:根据题干 对p进行约束
    {return 0;}
    else if (p2) /:根据题干 2是素数
    {return 1;}
    else
    {
    for(i=2;i<=p/2;i++) /: 判断p是否为素数,根据素数本身的性质,只能被1和本身整除
    { if(p%i
    0) 利用p的一半来进行循环。p如果%i取余为零,说明p能被整除,
    {return 0;} 所以return 0 表示不为素数。例如p=15时,当i累加到3后则p%i=0,说明15不为素数
    else if(i>p/2) 如果i能够累加大于p的一半,说明p不能被2整除,有余数,则这个数是素数。 i>p/2是为了排除10以下的不是素数的数。
    {return 1;} }
    }
    return 1;}

    主函数2段:
    if ( m < 6 ) m = 6; /: 这两条根据题干要求是为了限制 不小于6并且是偶数的条件
    if ( m%2 ) m++;

    cnt = 0; /:下面这一个for循环是为了表示最后输出的结果。由题目演示的输出样例我们可以知道在输出的式子中
    for( i=m; i<=n; i+=2 ) { 需要添加“,”分开排列。所以之前定义的cnt来输出输出。
    Goldbach(i);
    cnt++;
    if ( cnt%5 ) printf(", ");
    else printf(" ");
    }

    Goldbach函数:
    void Goldbach( int n )
    { int a;
    int count=0;

    for(a=2; a<=n;a++) /: 运用for循换 找寻 n= p+ q式子中的qp数据。a=2累加后可以约束题干所说的奇数条件
    { if(prime(a)1&&prime(n-a)1) 并且用了刚才定义的prime函数来约束qp数据为素数的条件,之后输出n n-a 以%d=%d+%d的形式。
    { count++; if(count==1)
    {printf("%d=%d+%d",n,a,n-a);} } }
    }

  • 相关阅读:
    2018-2019-2 网络对抗技术 20165318 Exp4 恶意代码分析
    2018-2019-2 网络对抗技术 20165318 Exp3 免杀原理与实践
    2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践
    2018-2019-2 网络对抗技术 20165318 Exp1 PC平台逆向破解
    2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165318
    2018-2019-2 20165312《网络对抗技术》Exp9 Web安全基础
    a simple example for form
    2018-2019-2 20165312《网络攻防技术》Exp7 网络欺诈防范
    2018-2019-2 20165312《网络攻防技术》Exp6 信息搜集与漏洞扫描
    2018-2019-2 20165312《网络攻防技术》Exp5 MSF基础应用
  • 原文地址:https://www.cnblogs.com/Laaxgu/p/11727323.html
Copyright © 2011-2022 走看看