C语言博客作业--函数

一、PTA实验作业

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

1. 本题PTA提交列表

2. 设计思路

  • 判断是否输入的数为水仙花数:

  • 输出给定区间中的水仙花数:

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

代码:int narcissistic( int number )
{
int sum=0,i,n=0,number1,number2;
number1=number;
while(number1!=0){
number1=number1/10;
n++;
}
number2=number;
for(i=1;i<=n;i++){
sum=sum+pow((number2%10),n);
number2=number2/10;
}
if(sumnumber)
return 1;
else
return 0;
}
void PrintN( int m, int n )
{
int j,j1,j2,sum1,n1,i1=0;
for(j=m+1;j>m&&j<n;j++){
n1=0;
sum1=0;
j1=j;
while(j1!=0){
j1=j1/10;
n1++;
}
j2=j;
for(i1=1;i1<=n1;i1++){
sum1=sum1+pow((j2%10),n1);
j2=j2/10;
}
if(sum1
j)
printf("%d ",j);
}
}

  • 从我的代码就可以看出其实,我不怎么能很好的使用函数,因为这道题是我很早就写完的,比如第二个输出区间中的水仙花数,我的代码中又一次去判断了这个数是否为素数,所以导致了,我写代码的简洁性和阅读性不够,后面几道题是我在考完试,然后星期5上完课后写的,就会更简单并且直观。

  • 对于在调试中的问题,我调试了很多次,一般都是部分正确,然后根据提交得到的提示来去改正,一般是用if语句去填补漏洞,可以从代码中看出,虽然代码很长但是漏洞还是能补全。

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

1. 本题PTA提交列表

2. 设计思路

  • 判断输入的区间中最大最小的数是否为完数

  • 输出每个完数的因子累加形式的分解式

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

代码:int factorsum( int number )
{
int i;
double sum=0;
if(number1){
return 1;
}
else{
for(i=1;i<number;i++){
if(number%i
0)
sum=sum+i;
}return sum;
}
}
void PrintPN( int m, int n ){
int i,j,count=0;
for(i=m;i<=n;i++)
{
if(i1){
printf("1 = 1 ");
count++;
}
else if(factorsum(i)
i){
printf("%d =",i);count++;
for(j=1;j<=i/2;j++)
{
if(i%j0&&j<i/2)
printf(" %d +",j);
if(j
i/2)
printf(" %d ",j);
}
}
}
if(count==0)
printf("No perfect number");
}

  • 相对与题目1的代码,这题我在输出每个完数的因子累加形式的分解式的时候就用到了函数factorsum(i)判断是否为完数,就使得代码简洁了许多,也充分利用了函数的作用。

  • 对于调试的问题,和题目1差不多,都是有部分正确,有部分的测试点没通过,比如判断i是否为1,我就加上了一个if判断语句,但是后面又忘了去判断完数的个数,就加上了变量count,并用if语句去填补漏洞。

题目3:求组合数

1. 本题PTA提交列表

2. 设计思路

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

  • 本题较为简单,但是还只是部分正确,在dev上调试验证了测试点也没错,看了很久,只能重新想,然后看到了函数类型为double我就把数据类型改成了double,然后就对了。

二、同学代码结对互评

1.同学互评照片。

2.我的代码、互评同学代码(题目7-1)

  • 我的代码:

  • 刘博涵的代码:

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

  • 第一点:长度,他的代码长度太长了,没有我的精简。
  • 第二点:他设的变量太多,会使得程序运行时间过长。
  • 第三点:代码太繁琐会影响阅读性,希望我们的博涵同学可以精简自己的代码!!!
  • 我更加喜欢我自己的代码风格,简洁明了,直接了当。

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

四、本周学习总结

1.你学会了什么?

1.1 C语言哪些数据类型?

  • emmmmm,对于short [int],long [int],unsigned [int],unsigned short [int],unsigned long [int],这些数据类型其实并没有了解太深入只是知道了数据长度和其取值范围,还有在不同进制中的输入输出形式。

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

  • 第一点:格式字符串中一般不要有其他的非格式字符。
  • 第二点:输入多个字符时直接连续用%c,不需要加入分隔符,同样输入也是连续输入且不能使用任何其他字符(如空格,回车等)来分隔。空格、制表以及回车都将被视作有效的字符输入。
  • 第三点:当字符和其他数值类数据混合输入时,字符要放在前面,数值放在后面输入。这样可以保证开始已经有效的输入了字符,而后面的数值也可以正确的输入。

1.3 自增自减运算符?

  • 对于自增自减的运算符,我现在还有点懵,例如:n++中,n加了1,表达式没加1,++n中表达式加了1,n没加1的,如果数量多了,还是很有可能会错。

1.4 运算符优先级?

  • 对于运算符优先级这方面,我感觉还好啦,没有遇到什么大的问题,我觉得平常看看表,记一记,应该不会有太大问题的。

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

  • 表达式倒是没有什么问题,就是整个代码会较为复杂。
  • 对于课堂派,我。。。。。没想到我这次的预习效果会这么差,第一次不及格,打击有点大,然后我一道一道错题看,比如那倒a+=a-=a=a的题,我就错了,我选了-3,然后反过来又看了一遍,发现自己错得有点离谱,在a-=a=a后,没有把a得值变为-6,仍然是3,所以错了。还有课堂派得最后一题,我不懂为啥是0333,而不是333。(求教,虽然我对了但是是蒙对的)

1.6 其他内容?

  • 初步能使用函数,能在函数中使用函数。

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

  • 还好啦,没有发现有什么不会的,如果说实在不会的就是怎样最高效的去使用函数,wate me,不对,我还有异或,移位运算的东西概念不是太清晰!!!

3.循环结构考试总结

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

  • 很多题都错了啊,第三题也只是部分正确,考试中只可以建工程去调试咯,不断的调试,用if语句去填补漏洞。

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

  • 没及格,不满意,我也深刻的反省了自己,想了想,自己在课外花的时间太多了,在处理社会关系上太想面面俱到了,我将退掉一些社团了,多空点时间来写作业和想题。

3.其他总结。

  • 对于自己的生活:我是根本没有时间打游戏的,一天到晚不是吃饭就是跳舞或者看书写作业,我认为是充实的但是成绩不是太好,所以呢我就多花时间在学习上吧,这也上了将近半个学期的课了,作息也慢慢调过来了,希望自己可以更加努力,不忘初心。
  • 对于当学委:我感受到了前所未有的冷漠和艰辛,会感觉同学们都不怎么有问题,也不怎么积极参加对自己有益的活动(这是我自己认为的,不一定是对的),感觉自己要挂科,加油。
原文地址:https://www.cnblogs.com/bigll666/p/7858072.html