首页 > 编程语言 > 详细

C语言博客作业--函数

时间:2017-11-18 23:13:53      阅读:427      评论:0      收藏:0      [点我收藏+]

一、PTA实验作业

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

  1. 本题PTA提交列表
    技术分享图片

  2. 设计思路
    技术分享图片

3.本题调试过程碰到问题及解决办法
技术分享图片

这题提交后题目告诉我n=0时候答案错误,然后才发现0也是完全平方数,所以就把i的初值改成了0

题目二:6-9 使用函数验证哥德巴赫猜想

  1. 本题PTA提交列表
    技术分享图片

  2. 设计思路

技术分享图片

  • 1.定义a,b,j=2
  • 2.若j为素数,a=j,b=n-j,若b为素数,输出并结束循环
  • 3.i自增
  • 4.重复2步骤,直到j>n

3.本题调试过程碰到问题及解决办法
这题刚开始忘记考虑p=1了;后来调试时发现怎么都不会进入循环,仔细看了一下代码,才发现出了问题,所以单独把1拿出来进行判断

题目三:7-1 求组合数

  1. 本题PTA提交列表
    技术分享图片

  2. 设计思路
  • 1.声明一个浮点型函数fact(int n)
  • 2.定义整型变量m,n,浮点型变量result
  • 3.输入m,n
  • 4.result=fact(n)/(fact(m)*fact(n-m))
  • 5.输出result
  • 6.定义函数,定义整型变量i=2,浮点型变量x=1.0
  • 7.若n<=1,返回1
  • 8.x=x*i,i++
  • 9.重复步骤8,直到i<=n,返回x

3.本题调试过程碰到问题及解决办法
我先是将n直接拿来进行运算,,并且用i--,但题目一直提示m=n/2时是错的,后来又引入一个浮点型x,用递增的方法来做,才正确,但我现在都不知道哪里错了
附上错误的代码
···
double fact(int n)
{
int i=0;
if(n==0)return 1;
for(i=n-1;i>0;i--)
{
n=n*i;
}
return n;
}
···

二、同学代码结对互评

1.同学互评照片。
技术分享图片

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

#include<math.h>
int narcissistic( int number )
{
    int result=0,N=0,x,sum=0,j,y;
    y=number;
    do
    {
        j=y/10;
        y=y/10;
        N++;
    }while(j!=0);
    y=number;
    for(int i=1;i<=N;i++)
    {
        x=y%10;
        sum=sum+pow(x,N);
        y=y/10;
    }
    if(sum==number)return 1;
    return result;
}
#include<math.h>
void PrintN( int m, int n )
{
    int i,j,k,N,sum,x,y,z;
    for(i=m+1;i<=n-1;i++)
    {
            y=i;
            N=0;
            sum=0;
    do
    {
        j=y/10;
        y=y/10;
        N++;
    }while(j!=0);
        y=i;
    for(k=1;k<=N;k++)
    {
        x=y%10;
        sum=sum+pow(x,N);
        y=y/10;
    }
    if(sum==i)printf("%d\n",i);
    }
}

钟文杰的代码

int narcissistic( int number )//定义函数 
{
    int n,a,d,cnt=0,sum=0;//定义四个整形变量,cnt用来计算有几位数,sum用来存放每个数的cnt次方的和。 
    for(n=number;n>0;n/=10){//计算cnt的值 
        cnt++;
    }
    for(a=number;a>0;a/=10){//计算sum的值 
        d=a%10;
        sum=sum+pow(d,cnt);
    }
    if(number==sum){//判断是否为水仙花数 
        return 1;
    }
    else{
        return 0;
    }
 } 
 void PrintN( int m, int n )//定义第二个函数 
 {
    int i;//定义一个变量i 
    for(i=m+1;i<n;i++){//做循环让它输出这个范围内的水仙花数 
        if( narcissistic(i) ){//调用上一个函数 
            printf("%d",i);
            printf("\n");
        }
     }
 }

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
首先钟文杰的代码比我精简,并且他注释了,我当时做的时候忘了注释现在自己都看不懂了,而且他巧妙地调用了上一个函数,非常奇特,这样代码量就小了很多,所以我更喜欢他的代码。

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

技术分享图片

四、本周学习总结

1.你学会了什么?

1.1 C语言哪些数据类型?
短整型short 整型int 长整型long 单精度型float 双精度型double 字符型char 无符号整型unsigned 无符号短整型unsigned short 无符号长整型unsigned long

1.2 字符型数据需要注意地方?
‘a‘和‘A‘是不同的字符型常量,‘0‘和0是不同类型的常量,前者是字符型常量后者是整型常量

1.3 自增自减运算符?
n++和++n都相当于n=n+1,但n++是先表达n,再执行n=n+1,而++n是先执行n=n+1,再表达n
同理n--和--n也是一样

1.4 运算符优先级?
从低到高:(,) (= += -= = /= %=) (?:) (||) (&&) (== !=) (< <= > >=) (+ -) ( / %) (++ -- + - *) (!)

1.5 C语言哪些表达式?课堂派哪里做错,做错的请在这里分析原因?
算术表达式:例如:x+5y,算术运算的表达式
关系表达式:x>=5,x<6,x==8,大小关系判断的表达式
逻辑表达式:ans==’y’ || ans==’Y’,与、或、非三种逻辑运算的表达式
赋值表达式:x=6+y,进行变量赋值的表达式
条件表达式:x>y?1:0,如果x>y则取1,否则取0
逗号表达式:x+3,y
5,z-3,有逗号运算符组成的表达式
8>6>3那时候没预习到,现在知道了8>6为真,表达式值为1然后1>3为假,所以表达式值为0

2.本周的内容,你还不会什么?
对于位运算的概念还是很模糊,不知道该怎么用
比如5&6位多少5|6为多少5^6为多少

3.循环结构考试总结(全部同学都要写)
7-4 小于m的最大的10个素数
错误代码

    int m,i,j,x,flag=1;
    scanf("%d",&m);
    for(i=m-1;i>50;i--)
    {
        for(j=2;j<m/2;j++)
        {
            x=i%j;
            if(x==0)goto out;
        }
        printf("%6d",i);
        if(flag==10)break;
        flag++;
        out:continue;
    }
    if(flag==1)
    printf("No primce!");
    return 0;

修正代码

int m,i,j,flag=0,count;
    scanf("%d",&m);
    for(i=m-1;i>1;i--)
    {
        count=0;
        for(j=i-1;j>=2;j--)
        {
            if(i%j==0)
            {
                count=1;
                break;
            }
        }
        if(count==0)
        {
        printf("%6d",i);
        flag++;
        }
        
        if(flag==10)break;
    
    }
    return 0;

还不是很满意,感觉题目要想很久,思路不在点上,而且还有一题现在还弄不清楚

C语言博客作业--函数

原文:http://www.cnblogs.com/hbw985609191/p/7833599.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!