一、PTA实验作业

题目1. 使用函数判断完全平方数

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(此处用流程图最好)

1.主函数

  • (1)定义变量n存放用户传入的参数
  • (2)输入数据n
  • (3)调用函数IsSquare(n)
  • (4)如果 ( IsSquare(n) ) ,输出"YES\n"
  • (5)否则,输出"NO\n"

2.IsSquare函数

  • (1)定义循环变量i=0
  • (2)如果i*i==n,返回1
  • (3)i++
  • (4)循环2,3,直到不满足i<=n
  • (5)否则,返回0

3.本题调试过程碰到问题及解决办法

①判断n是否为完全平方数时使用sqrt( )的方法,devc提示错误

②换一种方法,使用for循环的方法,n为100时,输出为No,经过调试发现问题

③为了防止else语句影响if语句,把else语句移到循环外,devc提示else语句缺少与之匹配的if语句,于是想到去掉else效果也是一样的

④PTA提示缺少n=0和n=1的考虑,于是修改代码,发现0也为完全平方数(涨知识!!!!!)

题目2. 使用函数输出水仙花数

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(此处用流程图最好)

1.主函数

  • (1)定义变量m,n
  • (2)输入数据m,n
  • (3)调用narcissistic函数,如果narcissistic(m),输出("%d is a narcissistic number\n", m)
  • (4)调用PrintN函数,输出(m,n)内的水仙花数
  • (5)调用narcissistic函数,如果narcissistic(n),输出("%d is a narcissistic number\n", n)

2.narcissistic函数

  • (1)bit存放个位数字,i存放指数,item存放每个位上数字的N次幂,sum存放水仙花数 ,N存放位数
  • (2)定义number1=number,number2=number,赋值N=0,sum=0
  • (3)判断数字为几位数(N):
    当number1!=0时,循环number1=number1/10;N++
  • (4)计算每个位上的数字的N次幂之和:
    当number2!=0时,循环
    bit=number2%10(取个位数字 )
    item=pow(bit,N)(计算个位数字的N次幂 )
    number2=number2/10;
    sum=sum+item;(累加个位数字的N次幂 )
  • (5)如果number==sum,返回1
  • (6)否则,返回0

3.PrintN函数

  • (1)m++
  • (2)循环:当m<=n时,调用narcissistic函数,如果narcissistic(m)==1,输出m;m++

3.本题调试过程碰到问题及解决办法

本题初步代码如下

①经过第一个while语句判断数字位数N后,number的值变为0,因此无法进入第二个while语句。

②再定义一个number1=number,用number1进行第一个while语句判断数字位数N,此时进入第二个while语句时number=153。第二个while语句结束后,进入if语句,发现与第一个问题一样,经过第二个循环后number=0,sum=153,number≠sum,此处错误。

改正后代码如下

③if语句中用break跳出循环,调试时发现一直在循环,没有输出内容,于是改成printf使m可以输出,但输出时发现多了一个153。

④思考多了一个153,是否与循环中赋值m=100有关,但一时不清楚m的值应该怎么改,于是改为while语句,改完后发现答案中还是多了153。

⑤再次理解题目,发现m的值不应该从100开始而是从输入的m开始,且范围为开区间,因此m应从m=m+1开始。

题目3.求组合数

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(此处用流程图最好)

1.主函数

  • (1)定义整型变量m,n分别存放两个正整数,浮点型变量result存放结果
  • (2)输入数据m,n
  • (3)调用函数fact(n),result=fact(n)/(fact(m)*fact(n-m));
  • (4)输出result = 组合数计算结果

2.fact函数

  • (1)定义变量i为循环变量,result为结果
  • (2)赋值result=1,i=1
  • (3)result=result*i
  • (4)i++
  • (5)重复3,4,直到不满足i<=n
  • (6)返回result的值

3.本题调试过程碰到问题及解决办法

①result类型为double型,但是没有控制小数个数导致错误

改正后

二、同学代码结对互评

1.互评同学名称

戴洁

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

我的代码

int factorsum( int number )
{int sum=1,i;for(i=2;i<number;i++){if(number%i==0)//如果number能被一个数整除sum=sum+i;//累加完数因子}return sum;//返回完数}
void PrintPN( int m, int n )
{int i,j,number,count=0;if(m==1&&n==1) {//如果m=n=1printf("1 = 1\n"); return ;}for(i=m;i>=m&&i<=n;i++){if ( factorsum(i) == i ){//如果i为完数if(i==1) printf("1 = 1\n");//i为1时else printf("%d =",i); //i不为1时count++;for(j=1;j<i;j++){if(i%j==0){//如果j为完数因子printf(" %d",j);//输出jif(j==i/2) printf("\n");//如果j为完数的二分之一,输出回车else printf(" +");//否则输出“ +”}}}}if(count==0)//如果给定区间内没有完数printf("No perfect number");}

同学的代码

int factorsum( int number ){int number1,k;int sum = 0;number1=number; if(number1==1){sum=1;return sum;}for(k=1;k<number1;k++){if(number1%k==0){sum=sum+k;}}if(sum==number)return sum;
}
void PrintPN( int m, int n ){int number2;int q;int x=0;for(number2=m;number2<=n;number2++){if(number2==1){printf("1 = 1\n");x++;} if(number2>1){if(factorsum(number2)==number2){x++;printf("%d = 1",number2);for(q=2;q<number2;q++){if(number2%q==0)printf(" + %d",q);}printf("\n");   } }}if(x==0){printf("No perfect number");}
}

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

不同:
factorsum函数中,我的代码是定义sum=1,让循环直接从i=2开始,如果i=1则不进入循环直接返回sum的值。戴洁同学是另外定义一个number1=number,先判断如果number1=1,让sum=1,返回sum,再通过循环找出完数sum,如果sum=number,返回sum。
PrintPN函数中,输出表达式的部分我的代码是先判断如果i是完数先输出“i=”,再循环判断 j 如果是完数因子输出 j ,如果 j= i / 2,输出回车,否则输出“+”;戴洁的代码是先判断如果一个数是完数就先输出number2=1,再循环判断如果q是完数因子,就输出+q,否则输出回车。
各自优势:
factorsum函数中,相同效果下我的代码比较简洁,戴洁的代码显得有点繁琐,我更喜欢我的代码。
PrintPN函数中,在输出表达式的部分戴洁同学的代码更清晰简洁,我更喜欢她的代码。

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

PTA排名

PTA提交列表


四、本周学习总结

1.你学会了什么?

1.1 C语言哪些数据类型?

  • 整型
    [有符号]整型——int
    [有符号]短整型——short [int]
    [有符号]长整型——long [int]
    无符号整型——unsigned [int]
    无符号短整型——unsigned short [int]
    无符号长整型——unsigned long [int]
  • 字符型:字符型——char
  • 实型(浮点型)
    单精度浮点型——float
    双精度浮点型——double

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

  • C语言中字符不但可以写成字符常量的形式,还可以用相应的ASCII码表示。例如:设ch是字符常量,字符型常量A的ASCII码值是65,则ch='A'和ch=65等价
  • 转义字符形式上由多个字符组成,但它是字符常量,只代表一个字符
  • ASCII字符集中多有的字符都可以用转义字符表示。例如:\102表示ASCII码是八进制数102的字符,即字母'B'

1.3 自增自减运算符?

++n(--n)的运算顺序:先执行n=n+1(n=n-1),再将n的值作为表达式++n(--n)的值
n++(n--)的运算顺序:先将n的值作为表达式n++(n--)的值,再执行n=n+1(n=n-1)
注:自增自减运算符的运算对象只能是变量,不能是常量或表达式。

1.4 运算符优先级?

优先级从高到低:

逻辑运算符:

算数运算符:
++ -- + - *(单目)

* / %(双目)

+ -(双目)

关系运算符:

< <= > >=

== !=

逻辑运算符:

&&

||

条件运算符:

?:

赋值运算符:

= += -= *= /= %=

逗号运算符:

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

表达式

  • 算术表达式
  • 赋值表达式:
    简单形式:变量=表达式
    一般形式:变量 赋值运算符 表达式
  • 关系表达式
  • 逻辑表达式
  • 条件表达式:
    一般形式:表达式 1 ? 表达式2 : 表达式 3
  • 逗号表达式:
    一般形式:表达式 1 ,表达式 2 ,…,表达式 n

课堂派
x++是将x的值作为表达式x++的值,因此y * x++应该为10 * 1

1.6 其他内容?

①转义字符中\ddd是1~3位八进制整数多代表的字符,\xhh是1~2位十六进制整数所代表的字符。例如:\x41表示ASCII码是十六进制数41的字符,即字母'A'。
②十进制整数由正、负号和0~9组成,首位数字不能是0;八进制整数由正、负号和0~7组成,首位数字必须是0;十六进制数整数由正、负号和0~9、a~f或A~F组成,首位数字前必须有前缀0x或0X。
③判断整数的类型,后缀 l 或 L 表示long型常量;后缀 u 或 U 表示unsigned型常量;后缀 l 和 u 或 L 和 U表示unsigned long型常量。
④整数类型格式控制说明

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

①本周内容主要是一些需要记和理解的知识点,还需要多应用并记住,比如运算符的优先级和结合性以及各种数据类型对应的输入输出形式
②自动类型转换,强制类型转换以及位运算部分还不是很熟悉。

3.循环结构考试总结(全部同学都要写)

1.哪题做错了,怎么改?

最后一题“单词长度”没有做出来。

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

不满意。
① 二进制一题因为对此知识点不是很熟悉所以花了较长的时间。课后对于还不熟悉的知识点还得再多次复习。
②单词长度一题没有做出来。

3.其它总结。

①考试时电脑上devc的调试需要建工程,因为不知道如何建工程且对使用printf语句检查错误点不熟悉,因此考试时查错都是通过自己看找错,耽误时间。于是考后向同学了解的建工程的方法。
②对于没有做出来的题目,目前还没再次拿出来做一遍,会尽快再做一遍。对于调试了很多次才对的题目,我认为应该记住错误点过一段时间把题目拿出来再做一遍看是否对该题的解法能做到真正的理解。

转载于:https://www.cnblogs.com/smtwula/p/7824210.html

C语言第五次博客作业---函数相关推荐

  1. C语言第五次博客作业

    一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1. 本题PTA提交列表 2. 设计思路 (1) 首先先定义narcissistic函数. (2)定义四个整形变量n,a,d,cnt,sum, ...

  2. C语言博客作业--函数

    C语言博客作业--函数 一,PTA实验作业 6-2 简单实现x的n次方 1.本题PTA提交列表 2.设计思路 double mypow( double x, int n )函数 (1)定义y=1,i用 ...

  3. 第五周博客作业西北师范大学|李晓婷

    1.助教博客链接:https://home.cnblogs.com/u/lxt-/ 2.作业要求链接:https://www.cnblogs.com/nwnu-daizh/p/10527959.htm ...

  4. 2022软工第06组第五次博客作业

    本博客为OUC2022秋季软件工程06组第五次作业 组长:黎泉林 文章目录 一.前言 二.NABCD模型分析 三.电梯演说 一.前言 项目名称:图像修复 项目简介: 图像修复(Image Inpain ...

  5. C语言博客作业--函数嵌套调用

    一.实验作业(6分) 6-1 递归实现指数函数(15 分) 提交列表 设计思路 double calc_pow( double x, int n )声明函数 {定义一个浮点型 result=1.0*x ...

  6. C语言第三次博客作业---单层循环结构

    一.PTA实验作业. 题目1 1.实验代码 int n,i; double height1,height2;//1为输入身高,2为输出身高. char sex; //1<=height1< ...

  7. C语言第二次博客作业---分支结构

    C语言第二次博客作业---分支结构 一,PTA实验作业 题目1.计算分段函数 本题目要求计算下列分段函数f(x)的值 1.代码 double x, result;scanf("%lf&quo ...

  8. C语言|博客作业06

    这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?typeId=17321 这个作业要求在哪里 https://bbs.csdn.net/topi ...

  9. C语言|博客作业05

    C语言|博客作业05 这个作业属于哪个课程 https://bbs.csdn.net/forums/csuft_swxy_C?typeId=17321 这个作业要求在哪里 https://bbs.cs ...

最新文章

  1. 开课吧python学费-开课吧成为CNCC中国计算机大会唯一教育合作伙伴
  2. 做组织机构树状图 spark
  3. Kettle使用_8 存储过程结合获取系统信息
  4. 【C语言】%[修饰符] 格式字符
  5. golang mysql大量写入_Golang 实现分片读取http超大文件流和并发控制
  6. excel教程自学网_Excel自学教程:万能查找函数Lookup的神应用和技巧
  7. 云服务器ECS登陆注意点
  8. 在windows系统和linux系统中查询IP地址命令的不同
  9. elaselasticsearch节点类型
  10. Photoshop cs6中kuler和mini bridge打开是空白的解决方法
  11. OpenCV3学习(4.3)——图像形态学(膨胀,腐蚀)
  12. 资产组合管理中有哪些基础概念?
  13. Perl多线程ping加端口扫描
  14. scala function从入门到理解
  15. freopen()函数文件流重定向和文件流的清除
  16. sql查询练习题的参考答案
  17. win10重置进度条不动了_你好,我win10系统重置的进度条卡住了。一直在卡在17%近9个小时了。这要...
  18. Intel8251可编程串行扩展RS232串口
  19. 自制hdmi线一头改vga图_什么是VGA?
  20. S5800/S5820X系列交换机GRE隧道

热门文章

  1. 新版 Windows 10 最佳功能预览,五月即将更新
  2. ASP.NET Core与Dapper和VS 2017使用JWT身份验证WEB API并在Angular2客户端应用程序中使用它
  3. c# -- 图片缩放方法总结
  4. fread读取同一个文件得到缓冲区大小不同_缓冲区——计算机科学
  5. django 如何写model
  6. php 浮点数 模运算,同余与模运算
  7. python布尔运算可以比较浮点数吗_Python3 基础之:令人困惑的浮点数运算
  8. python自动化测试环境搭建_selenium+python自动化测试之环境搭建
  9. 计算机关于word试题及答案,职称计算机考试Word操作试题及答案
  10. git项目初始上传服务器,快速架设一个使用 SSH 的 Git 服务