zoukankan      html  css  js  c++  java
  • C语言博客作业--函数

    一、PTA实验作业

    题目1:使用函数输出水仙花数

    1. 本题PTA提交列表

    2. 设计思路

    • int narcissistic( int number )函数
      • 1.定义整型变量int i,j,m;
        int n,digit=0,N1,N2;
        int num,re_number=0;
      • 2.让N1,N2赋上number的值 N1=number;N2=number;
      • 3.for循环{n=N1%10;
        digit++;
        N1=N1/10;} 用来统计number的位数
      • 4.for循环{num=1;
        n=N2%10;
        N2=N2/10;
        内嵌一层for循环{num=n*num;}
        计算每一位数次方的和 re_number=num+re_number;
        }
      • 5.判断重新构成的数re_number与number是否相等,若相等,则返回1,否则返回0。
    • void PrintN( int m, int n )函数
      • 1.定义整型变量M
      • 2.利用for循环递增(M=m+1;M<n;M++),同时引用函数narcissistic( int number )判断M是否为水仙花数,若是,则输出M。

    3.本题调试过程碰到问题及PTA提交列表情况说明。

    • 问题:忽略了另一个函数的要求是“按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数”,对n多进行了一次判断。

    • 解决方法:将“M<=n”改为“M<n”

    题目2:使用函数输出指定范围内的Fibonacci数

    1. 本题PTA提交列表

    2. 设计思路

    • int fib( int n )函数
      • 1.定义整型变量i,f1=1,f2=1,f3; //i用来控制循环,f1,f2,f3用来计算Fibonacci数
      • 2.for循环(i=3;i<=n;i++){f3=f1+f2;
        f1=f2;
        f2=f3;}
      • 3.返回f2.
    • void PrintFN( int m, int n )函数
      • 1.定义整型变量j,i,flag=0,sign=0;
      • 2.定义整型变量time=0;//用来计算题目给定范围内Fibonacci数的个数;
      • 3.第一重for循环(j=1;fib(j)<=10000;j++) {time ++;}
      • 4.第二重for循环(i=1;i<=time;i++){
        if(fib(i)>=m&&fib(i)<=n)
        {如果sign==1 那么输出空格;
        flag=1; 输出fib(i)的值;
        sign=1;}
      • 5.如果flag==0 那么输出"No Fibonacci number"。

    3.本题调试过程碰到问题及PTA提交列表情况说明。

    • 问题:第二个函数漏考虑了Fibonacci数为1的情况,1也是Fibonacci数,但结果却会输出“No Fibonacci number”。

    • 解决方法:将代码重新编写,第二个函数先算出在题目限制范围内Fibonacci数的个数,然后根据Fibonacci数个数利用循环语句找出[m,n]内的所有Fibonacci数。

    题目3:求组合数

    1. 本题PTA提交列表

    2. 设计思路

    • 1.定义整型变量m,n;
    • 2.输入m,n;
    • 3.输出结果("result = %.0lf",引用函数fact(n)/(fact(m)*fact(n-m));
    • 4.定义函数double fact(int n)
      • 5.定义浮点型变量product,定义整型变量i;
      • 6.给product赋初值为1;
      • 7.for循环(i=2;i<=n;i++) { product *= i;} //算阶乘
      • 8.返回product的值。

    3.本题调试过程碰到问题及PTA提交列表情况说明。

    本题未遇到困难,定义一个函数计算阶乘,主函数引用三次该函数就可以算出结果。

    二、同学代码结对互评

    1.同学互评照片

    我和李梦冰同学

    2.我的代码、互评同学代码截图

    李梦冰同学的代码

    我的代码

    3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

    • 我的代码:在最后的输出部分利用goto直接跳出所有循环,虽然方便快捷,但我个人觉得有些投机取巧,goto还是尽量少用。
    • 梦冰的代码:梦冰的第一个自定义函数,对素数的判断,其实在p%2==0时就能退出循环,但梦冰的却是一直对p做对i的取余运算;第二个自定义函数的代码比我的简单有效,我用了两个if判断语句和两个for循环语句,使代码显得冗长。
    • 综上,我较喜欢梦冰的代码。

    三、截图本周题目集的PTA最后排名。

    四、本周学习总结

    1.你学会了什么?

    1.1 C语言哪些数据类型?

    • 整型,字符型,实型。

    1.2 字符型数据需要注意地方?

    • 1)字符型整型变量和字符型变量的定义和值都可以互相交换;
    • 2)互换整型变量和字符型变量的定义和值时,整型数据的取值范围是有效的ASCII码;
    • 3)英文字母的大小写是不同的字符型常量。

    1.3 自增自减运算符?

    • 1)设n是一个整型变量并已赋值,则n++和++n都相当于n=n+1,不同的是++n表示的是n加一后的值,而n++仍表示原来n的值,但这时n已经等于“n+1”的值。n--与--n同理。
    • 2)自增自减运算符的运算对象只能是变量,不能是变量或表达式。

    1.4 运算符优先级?

    • 1)如果操作数两侧运算符的优先级相同,则按结合性决定计算顺序;
    • 2)可以用圆括号改变运算符的执行次序。

    1.5 C语言哪些表达式?课堂派哪里做错,做错的请在这里分析原因?

    • 1)算术表达式,赋值表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式。
      • 条件表达式的形式: 表达式1?表达式2:表达式3.
      • 逗号表达式的一般形式: 表达式1,表达式2,...,表达式n
        按照顺序计算每个表达式,最后将表达式n的值作为符号表达式的值,将表达式n的类型作为逗号表达式的类型。
    • 2)课堂派第六题,忘记了10和4都是整型常量,尽管x为浮点型,但10/4的结果还是整型,在给x赋值时才变为浮点型。
    • 3)课堂派第九题,自增符号在后面的运算与在前面的运算不一样,j++的结果应该仍为3。

    1.6 其他内容?

    • C语言中整数的八进制、十六进制的表示方式。
    • 数据类型的自动转换遵循一定规则,在赋值运算时,赋值号两侧数据的类型最好相同,至少右侧数据的类型比左侧数据的类型级别低,或者右侧数据的值在左侧变量的取值范围内,否则会导致运算精度降低,导致结果错误。
    • 数据类型的强制转换,一般形式是(类型名) 表达式,类型转换都只是为了本次运算的需要,对数据类型的临时转换,并没有改变数据的定义。

    2.本周的内容,你还不会什么?

    • 对位运算还不是很了解;
    • 对八进制、十六进制的转换也不太懂。

    3.循环结构考试总结

    3.1 哪题做错了,怎么改?

    • 1.7-3 二进制的前导的零
      • 忘记十进制转二进制怎么计算,后来纠结在算出的结果是二进制数的逆序。
      • 请教同学,研究后发现就算结果是二进制的逆序数,但位数是相同的而且二进制数除了0,第一位一定是1,那么以此为条件可以算出二进制数的位数,然后与32相减,得出前导的零的个数。
    • 2.7-5 单词长度
      • 当输入空语句和多个空格时不能正确输出,但目前还未解决。

    3.2 考试结果满意么,怎么改进?

    不满意,对嵌套循环的是用还是不太熟练,而且这次考试的状态不太好,看到题目时脑子一片空白,注意力不集中,或许是平常做题花的时间太长,以后做题时会更加专注,在读题解题方面也需要加强。
    

    3.3 其他总结。

    • 十进制转二进制就是把十进制数不断除二取余直到除以二等于1时停止;
    • 大部分嵌套循环语句的内循环条件依靠外循环的条件。【然而总是忘记】
  • 相关阅读:
    微信小程序用setData修改数组或对象中的一个属性值,超好用,最简单的实现方法,不容错过!大神们 都 在 看 的方法!!!
    pythonchallenge1
    pythonchallenge4
    pythonchallenge7
    pythonchallenge9
    pythonchallenge8
    pythonchallenge2
    pythonchallenge0
    递归排序
    pythonchallenge3
  • 原文地址:https://www.cnblogs.com/wwwwxy128/p/7853112.html
Copyright © 2011-2022 走看看