码迷,mamicode.com
首页 > 编程语言 > 详细

C语言博客作业--函数

时间:2017-11-18 12:39:35      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:不能   运行   actor   ret   直接   增加   pow   分享   print   

一、PTA实验作业

题目1:6-5 使用函数输出一个整数的逆序数

1.本题PTA实验结果

技术分享图片

2.设计思路

  • 1.定义a,result放要求的逆序数
  • 2.但number不等于0执行步骤3,4,5
  • 3.a=number%10 /求number取余10的数/
  • 4.number=number/10
  • 5.result=result*10+a回到步骤2
  • 返回result的值 如果number=0 直接返回0

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

技术分享图片

问题:刚开始调试函数的题目时,不知道断点设在哪,以为放在主函数在调用函数时会自动调到下面的函数。
不断进行尝试,后来才知道原来要调试函数断点要放在函数那边,才能调试你编写的函数。
技术分享图片

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

1.本题PTA实验结果

技术分享图片

2.设计思路

第一个函数

  • 1.定义i,sum=0
  • 2.如果输入的number不等于1时执行循环for(i=1;i<=number/2;i++){
    if(number%i==0)
    sum=sum+i;
    }
  • 3.如果sum==number,就返回1,否则返回0
  • 4.如果输入的number的值为1,返回1

第二个函数

  • 1.定义i,j,flag=0
  • 2.在规定范围列出所有可能并调用函数判断
    for(j=m;j<=n;j++){
    if(factorsum(j)==j){ /如果是就开始输出/
    printf("%d = 1",j);
    flag=1;
    for(i=2;i<=j/2;i++){
    if(j%i==0) /说明i是因数并输出i/
    printf(" + %d",i);
    }
    printf("\n");
    }
  • 3.如果区间没有数符合就输出No Fibonacci number

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

刚开始的代码第二个函数的循环有点问题
for(i=1;i<=j/2;i++){
if(j%i==0)
printf(" + %d",i);
}
i是设从1开始的。这样总会输出1.但前面已经输出一个1了所以会导致部分正确。
经过多次输出发现了这个问题,经过排查发现并修改。

题目3:7-1 求组合数

1.本题PTA实验结果

技术分享图片

2.设计思路

主函数

  • 1.定义n,m,a
  • 2.输入m,n的值
  • 3.a=fact(n)/(fact(m)*fact(n-m)) /调用函数/
  • 4.输出值
    被调用的函数
  • 1.定义整形变量i,浮点变量result=1
  • 2.执行循环 for(i=1;i<=n;i++)
    result=result*i
  • 3返回result的值到主函数

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

  • 本题能较好完成。

二、同学代码结对互评

1.互评同学名称

欧阳震霆

2.同学互评照片

技术分享图片

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

int prime( int p )
{
    int i;
    for(i=2;i<=sqrt(p);i++){
    if(p%i==0)
    break;
}
    if(i>sqrt(p)&&p!=1)
    return 1;
    else 
    return 0;
 } 
 void Goldbach( int n )
 {
    int i,j;
    for(i=2;i<=n/2;i++){
    if(prime(i)==1&&prime(n-i)==1){
    printf("%d=%d+%d",n,i,n-i); 
    break;
    }
    }
} 欧阳
#include<math.h>
int prime( int p )
{
    int i;
    if(p==1) return 0; 
    for(i=2;i<=sqrt(p);i++){
    if(p%i==0)
    break;
    }
    if(i>sqrt(p))
    return 1;
    return 0;
}
void Goldbach( int n )
{
    int u,a,j;
    for(u=1;u<=n;u++){
        int flag=0;
        for(j=1;j<=n;j++){
    if(prime(u)&&prime(j))
    a=u+j;
    if(a==n)
    {
        printf("%d=%d+%d",n,u,j);
        flag=1;
        break;
    }
}
    if(flag==1) break;
}
} 我的

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

  • 首先可以看出欧阳的代码相对比较简洁而我的篇幅显得比较大。
  • 在下面那个函数中我用了嵌套循环以及再设一个flag来判断条件,思路比较直接,欧阳的则是用了调用函数及运用了
    函数直接解决,需要一定思考。
  • 我更喜欢欧阳的代码。我的虽然较直接但篇幅太大。欧阳运用函数就可以解决掉问题,看起来较为简洁。

三、截图本周题目集的PTA提交列表及最后排名

技术分享图片
技术分享图片

技术分享图片

四、本周学习总结

1.你学会了什么?

1.1 C语言哪些数据类型?

  • 短整形
  • 长整形
  • 字符形
  • 单精度浮点形
  • 双精度浮点形

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

  • 赋值时要加‘ ‘
  • 自增时要c++不能c=c++

1.3 自增自减运算符?

  • a--/a++是后缀(自减)自增,变量值(减少)增加,表达式值不变
  • --a/++a是前缀(自减)自增,变量值(减少)增加,表达式值增加

1.4 运算符优先级?

  • 算术运算符>关系运算符>逻辑运算符>条件表达式>赋值运算符>逗号运算符
  • 逻辑运算符,关系运算符,双目算术运算符是从左向右运算(左结合)

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

  • 赋值表达式,逻辑表达式,条件表达式,关系表达式
  • 错题:表达式(j=3,j++)的值。当时不知道j++整个表达式的值为j。

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

  • 对于在设一个量判断条件运用不够灵活如:flag
    -找错误的能力还是不够

3.循环结构考试总结

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

7-3 二进制的前导的零:我用pow(2,i)的方法来接近输入的数,运用表达式输出。但值一大就运行超时了。后来才知道
值超过了int的范围,使用double就通过了
技术分享图片

7-5 单词长度:当时没有去完成该题目。
技术分享图片

该代码最后有一种情况不符合
技术分享图片

  • 暂时未解决

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

结果不太满意。因为看到最后一题有点不太理解就放弃了。后面自己去完成可以得到较好分数。以后会多去尝试。
然后自己的查错能力也要提高,就是自己多去思考,多做题。

C语言博客作业--函数

标签:不能   运行   actor   ret   直接   增加   pow   分享   print   

原文地址:http://www.cnblogs.com/lzc176/p/7853251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!