一、PTA实验作业

题目1 (6-7)

(1).本题PTA提交列表

(2)设计思路

设计第一个函数判断是否完数int factorsum( int number )

  • 定义sum、i;sum初始化归0,循环变量i
  • 若number=1,则sum=1
  • i=1,当i小于number时循环
  • 若number能被i整除,
  • sum+=i
  • 返回sum的值

设计第二个函数void PrintPN( int m, int n )逐行输出每个完数的因子累加形式的分解式

  • 标志变量flag=1,循环变量i
  • for (;m<=n;m++)
  • 若m等于1,
  • flag=0
  • 输出1 = 1\n
  • factorsum( m ) == m &&m !=1
  • flag=0
  • 输出m = 1;
  • 进入循环
  • i=2,当i小于m时循环,i++
  • m%i==0成立
  • 输出 + i的值
  • 当内循环结束时再输出换行符
  • 外循环结束
  • flag==1
  • 输出No perfect number
  • 函数结束

(3)调试问题及解决方法

  • 发现当number的值为1时会返回0,所以number=1时不会输出1 is a perfect number;并且1 = 1不输出,等于号后面的空格没有输出

  • 加入判断当number的值为1时返回1,循环中当m=1时输出1 = 1并换行

  • 发现输出中的有的数字后边多了一个空格

  • 在printf语句中修改,并对判断输出条件修改

题目2(6-8)

(1).本题PTA提交列表

(2)设计思路

设计第一个函数int fib( int n )实现输出第t个fib数

  • 定义循环变量i,Fibonacci数列初始两数a、b(全为1),count(a+b之和)
  • n==1||n==2
  • return 1
  • i=3,当i小于等于n时循环,i++
  • count=b+a
  • b=a
  • a=count
  • 循环结束
  • return count

设计第二个函数void PrintFN( int m, int n )实现一行中输出给定范围[m, n]内的所有Fibonacci数

  • 定义循环变量i,标志变量flag=0
  • 当m小于等于n时循环;m++
  • i=1,循环终止条件在循环中给出
  • m==fib (i) && flag==0,进入分支
  • m==1
  • 输出1 1
  • flag=1;
  • 回到第一个循环(break;
  • 若m不等于1,
  • 输出m,
  • flag=1,
  • 回到第一个循环
  • m==fib (i) && flag==1
  • 输出空格+m的值
  • 回到第一个循环
  • fib(i)>m
  • 回到第一个循环
  • i循环结束
  • flag==0
  • 输出No Fibonacci number

(3)调试问题及解决方法

  • 输出的数不正确,并且,当n等于1或2时,输出的值也不正确

  • 原因在于我没有把n=1、n=2的情况特殊判断,并且先交换了i、j、k的值,导致count=1时k就已经等于3

  • 解决方案:先提出n=1、n=2的情况,使当它们成立时返回1;再把和的式子放在后边来执行

  • 输出可以,但是没有设定跳出条件,所以无限循环,且每个数字后都有一个空格,不符合题目要求,而且,当m=n=1时,输出的结果就不正确

  • 重新调整代码,调用之前定义的函数,当m等于fib(i)且flag=0时:若m等于1,就特殊输出,并且跳出i 的循环等等,就可以实现题目要求

题目3 (7-1)

(1).本题PTA提交列表

(2)设计思路

设计实现组合数计算功能的函数double fact(int n)

  • 定义循环变量i,双精度变量result,并将其初始化为1
  • i=1;当i小于等于n时循环;i++
  • result=i*result;
  • i循环结束
  • return result;

主函数int main ()

  • 设计变量m、n
  • 输入m、n的值
  • n==0
  • 输出result = 1
  • 若n不为0,
  • 输出fact(n) / ( fact(m) * fact(n-m) )的值

(3)调试问题及解决方法

  • 用的是int而不是double,导致答案错误

  • 由于没有对n=0做特殊处理,所以输出了result = 0这一错误答案,使n==0时输出result = 1即可

二、同学代码结对互评

1.同学互评照片

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

  • 我的代码

  • 他(黄泽彬)的代码

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

1)不同在于对循环条件的确立,以及变量数的不同

2)他的优势在于能用较简洁的代码去实现题目要求的功能;而我多想了一些,将一些特殊情况单独处理,并且我是使用m作为循环变量,上限是n,他则另取一变量i,使i等于m,我认为可以将i用m取代,这样应该也是可以实现题目要求的;在内循环方面,他的条件是j<=0.5*i,而我的条件是i<m,计算量比他的多了许多。

3)我更喜欢他那种简洁且实用的风格

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

PTA排名

四、本周学习总结

1.你学会了什么?

  • 整型、字符型、实型
  • 加与不加 '' 的字母、数字不相等;字符型变量可以与整型变量转换;转义字符中 \ 的应用;
  • ++n与n++、--n与n--的区别
  • 运算符的优先级的区别
  • 对合法浮点数的定义
  • 关系运算符运算顺序从左到右
  • 逗号运算符的运算顺序从左到右

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

  • 位运算符的应用;位逻辑运算符的使用:如位非运算的具体使用
  • 移位运算的三种方式的的实际应用

3.循环结构考试总结

(1)哪题做错了,怎么改?

7-3 二进制的前导的零

  • 开始思路错误,以为要先将十进制数转为二进制数再循环去末位得到位数,再用32减去得到的位数
  • 回去分析二进制和十进制之后发现只要使十进制数每次除2并使计数变量+1,最后得到的计数变量的值就是该十进制数转换成二进制之后的位数,再用32减去计数变量就能得到最后结果
  • 然后错在当十进制数为负数
  • 由于负数在转换为二进制数时需要进行反码,即1变成0、0变成1,所以此时应输出0
  • 以及当输入的数是0时,和负数一样做特殊处理,应输出32

7-5 单词长度

  • 第一次出错在于“空句子”和“开头结尾多空格”、“连续多空格”
  • 加入另一个字符串变量b,使其初始化为空格符,用来记入前一个字符;若前一个字符为空格,且现字符为空格,则不输出,解决“连续多空格”问题
  • 再加入标志变量flag,用来控制空格的输出,但是并没法解决问题
  • 在循环外加入判断,当b!=' '时输出字符个数,并且前面做对应修改,解决“空句子”问题
  • 用了各种各样的方法和语句尝试了两个多小时,不是“开头结尾多空格”问题就是“连续多空格”问题, 最后发现只要在原来的代码里的flag的判断中加入b!=' '的判断就可以实现

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

不满意,多做题多思考,锻炼对题目的灵敏感觉,学会灵活运用所学知识解决问题

(3)其他总结

  • 通过这次的考试,我发现我对循环语句的掌握还是不够,总是在一些细节的地方犯错;
  • 以及对于将其他语句同循环语句结合也是一般,经常的以为能把它们没有出错的结合起来就行了,对于这个过程中花费的时间不是很在意
  • 思路的差异是解题速度不同的原因之一,我应该要多锻炼自己的思路的可行性和严谨性,去观摩和学习大神的代码

C语言博客作业--函数的更多相关文章

  1. C语言博客作业——函数

    一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1.本题PTA提交列表 2. 设计思路 int narcissistic( int number ) //函数定义 1.定义整数型变量a.i分 ...

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

    一.实验作业(6分) 本周作业要求: 选一题PTA题目介绍. 学习工程文件应用,设计实现学生成绩管理系统. 学生成绩管理系统要求 设计一个菜单驱动的学生成绩管理程序,管理n个学生m门考试科目成绩,实现 ...

  3. C语言博客作业—函数

    一.PTA实验作业 题目1:使用函数输出水仙花数 1. 本题PTA提交列表 2. 设计思路 (1)首先定义函数narcissistic(number)判断number是否为水仙花数: (2)narc用 ...

  4. C语言博客作业--函数 陈张鑫

    一.PTA实验作业 题目1:6-3 使用函数判断完全平方数 1. 本题PTA提交列表 2. 设计思路 1.定义int IsSquare( int n )函数 2.判断(sqrt(n)是否为整数 3., ...

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

    一.实验作业 1.1 PTA题目:递归法对任意10个数据按降序排序 1.1.1设计思路 void sort(int a[],int n) { 定义整型循环变量i,中间变量temp,最小值min: 令m ...

  6. C语言博客作业06——结构体&文件

    C语言博客作业06--结构体&文件 1.本章学习总结 1.1思维导图 1.2.本章学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.结构体的本身并不难,但以结构体为基础的链表还是让我 ...

  7. C语言博客作业6---结构体&文件

    C语言博客作业6---结构体&文件 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容.如下图所示: 1.2.学习体会 描述本周学习感受,也可以在这里提出你不理解地方.对 ...

  8. C语言博客作业5--指针

    C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...

  9. C语言博客作业3--函数

    C语言博客作业3--函数 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...

随机推荐

  1. hdu5893 List wants to travel

    裸的树链剖分加线段树区间修改 区间合并时需要多注意一点 当时写的很慢 理解不深刻 #include<bits/stdc++.h> using namespace std; const in ...

  2. 爬虫抓包工具Fiddle设置

    安装证书(用于https)

  3. 都是SCI惹的祸?

    都是SCI惹的祸? 过去只知道地质学家需要跋山涉水寻找宝藏,最近同一位海外归来的学者谈起,方知少数其它领域的科研人员,也"跋山涉水",在内地研究机构寻找可以写好文章的研究成果,不管 ...

  4. 浅析Java 8新特性Method Reference

    什么是方法引用 我们知道了什么是Lambda Expression以及如何使用,那么,Method References又是什么呢?Oracle Java Docs中这样说: They are com ...

  5. 小程序 - swiper除了左右切换还有上下滚动超出屏幕的内容

    本来呢,我是有专门整理小程序恶心bug的文章的,每次只要添加汇总就好, 但是呢,鉴于这个问题的恶心程度,所以我把他单独拿出来说了. ---------------------------------- ...

  6. 论文笔记(7):Constrained Convolutional Neural Networks for Weakly Supervised Segmentation

    UC Berkeley的Deepak Pathak 使用了一个具有图像级别标记的训练数据来做弱监督学习.训练数据中只给出图像中包含某种物体,但是没有其位置信息和所包含的像素信息.该文章的方法将imag ...

  7. node.js-v6新版安装过程

    1.Node.js简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用 ...

  8. 回顾JS Date()对象

    突然想写一个日历插件发现Date对象的一些常识快忘光了,复习一下 new Date()返回当前时间 年月日 getFullYear() 返回年份 getMonth() 返回月份(因为从0开始算 所以要 ...

  9. Python3 多线程编程(thread、threading模块)

    threading是对thread的封装. 1.开启线程: t=threading.Thread(target=sayhi,args=('hh',)) t.start() 或者先建一个Thread的继 ...

  10. SpringBoot工作机制

    1:前言 回顾探索Spring框架 1.spring ioc IoC其实有两种方式,一种就是DI,而另一种是DL,即Dependency Lookup(依赖查找),前者是当前软件实体被动接受其依赖的其 ...