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

时间:2022-01-24 06:36:37

一、PTA实验作业

题目1:6-3 使用函数判断完全平方数

1. 本题PTA提交列表

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

2. 设计思路

  • 1.定义int IsSquare( int n )函数
  • 2.判断(sqrt(n)是否为整数
  • 3.,sqrt(n)-(int) sqrt(n) ==0若是则返回1是否则返回0

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

遇到问题

1.不知道如何去判断一个数是否为整数,后来想到用int强行定义为整数在再用原来的

减去这个值来判断,十分巧妙。

题目2:6-6 使用函数输出水仙花数

1. 本题PTA提交列表

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

2. 设计思路

  • 1.定义int narcissistic( int number )函数并定义i,j,q=0,y=0,x,d=1,c,bit,e 9 个整数变量
  • 2.x=number;e=number
  • 3.在循环中将number重复除以10,得出number的位数并存在q中
  • 4.进入while循环while(x),bit=x%10得出number的个位数的值
  • 5.进入嵌套循环for(j=1;j<=q;j++) d*=bit,求出number各位数的q次方的值
  • 6.y=d+y;d=1;x=x/10; 判断x是否等于0,若是退出循环,否则执行4
  • 7.判断(y==e)是否为真若是返回1;否则返回0;
  • 8.定义void PrintN( int m, int n )函数 定义i一个整数变量
  • 9.进入循环for(i=m+1;i<n;i++) 判断(narcissistic(i))是否为真
  • 10.若是输出i的值并换行

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

遇到问题

1.首先是如何判断输入的数的位数,后来想到用number/10,然后定义一个q来计数

2.当计算出输入的数的各位数的和之后就,来比较原来的输入的值的大小时,发现

number的值已经发生改变,无法进行判断所以必须定义一个变量来存储原来number

的值,再用来判断。

3.第二个函数在一个小细节就是循环条件中i=m+没有注意到,因为m已经判断过所以

不必在进入循环。

题目3:7-1 求组合数

1. 本题PTA提交列表

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

2. 设计思路

  • 1.函数声明 double fact(int n);
  • 2.定义m n c三个整数变量
  • 3.输入m n的值
  • 4.c=fact(n)/(fact(m)*fact(n-m));
  • 5.输出c的值
  • 6.定义函数double fact(int n)
  • 7.定义i整数变量及ans=1的double型变量
  • 8.进入循环for(i=1;i<=n;i++)
  • 9.ans*=i;
  • 10.判断i是否小于等于n,若是执行8否则跳出循环

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

遇到问题

1.这题设计思路比较简单就是定义变量时不懂为什么要用double来定义

,后来写出程序后答案总是错误,经过舍友提醒知道应为int的数长度比

较短,且这个程序中的数较大所以不能用int。

二、同学代码结对互评

1.同学互评照片。

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

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

我的代码

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

徐宏伟的代码

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

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

首先不同之处是判断输入的数的位数,我用的是for循环,而宏伟用的是do while ,我觉的宏伟的用的好.因为当输入的数为0

时我的做法就无法做出位数为1的情况而他的可以,虽然在这题中我的做法可以但是遇到别的题就不一定了、

还有就是我在计算各位数的和时用的是while(x)而他是用for(i=1;i<=count;i++)用判断出来的位数来限制执行的次数,而我直

接用x/=10,我觉得我的方法好因为这样部不必使用上个语句,且while的语法也较简洁。

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

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

四、本周学习总结

1.你学会了什么?

1.1 C语言哪些数据类型?

整型 short,int,long ,unsigned long ,short, unsigned short

实型 float,double

字符型 char

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

1.不仅可以写成字符常量的形式,也可以用相应的ASSCII码表示,即可用整数表示。

2.可以参加运算,想整数型变量一样

3.在使用字符型变量时记住加上单引号

1.3 自增自减运算符?

.注意符号在前在后的问题,在前在后变量均变化,但是在前的话表达式变化,在后不变

1.4 运算符优先级?

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

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

优先级不同则按优先级从高到低计算,如果操作数两侧的运算符优先级相同,则按结合方向决定计算顺序

运算符优先级从高到低排列:逻辑运算符、算术运算符、关系运算符、逻辑运算符、条件表达式、赋值运算符、逗号运算符

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

已知字母A的ASCII码为十进制数65,且ch为字符型变量,则执行语句ch='A'+'6'-'3';后,ch中的值为__

A、D

B、68

C、C

D、不确定

我选A答案是B 原因:我以为计算起来也要是字符所以选A

若x为浮点型,则表达式x=10/4为( )

A、2.5

B、2.0

C、2

D、3

我选A 答案是B 因为计算出来是2 因为10/4是整形我误以为是直接得出2.5

1.6 其他内容?

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

这周内容基本掌握了 不会就是数据类型掌握不好,位运算不太了解 ,函数的语法基本可以掌握,就是2

进制方面还要继续努力。

3.循环结构考试总结

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

1.第四第五题我做错了

2.原因:第四题是我在看题目时看到18在32位机器中表达为11000,而我用2进制算了下不对呀是10010,

我当时就蒙了,(老师是不是题目出错了呀)直接跳过跳到第五题,我也思考了一会,做了出来 ,但是就

是一个细节最后的一个条件一直过不了,我用了好几种方法还是一样。一直都是21分无法得到25,就只因

为一个小细节。导致想了半节课,第四题也忘记做了

3.改正:第四题回宿舍后了解题目后直接就一遍做了出来,第五题我是会宿舍后于舍友讨论才得出的答案

因为舍友一样也是这里的问题、

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

不满意,因为这些题目都是做过的,但是在考试中却不能完美的做出。

我觉以后做题还是要继续努力,对于一些小问题要重视,特别是题目也要学会审题理解。对于这次考试中遇到的问题继续改正

加大题目量,加强寻找失误的能力,调试程序的能力。

3其他总结。