美文网首页
实验五:优秀代码

实验五:优秀代码

作者: jzh123s | 来源:发表于2016-11-17 12:25 被阅读0次

    A : 公约数与公倍数

    题目描述:
    输入两个正整数m和n,求其最大公约数和最小公倍数。
    

    优秀代码

    author: 
    2016150111
    result: 正确
    codes:
    #include<stdio.h>
    int main()
    {
        int m,n,a,b,c;
        scanf("%d%d",&m,&n);
        m>=n?(a=m,b=n):(a=n,b=m);
        do
        {
            c=a%b;
            a=b;
            b=c;
        }while(c!=0);
        printf("%d %d",a,(m*n/a));
        return 0;
    }
    

    点评 : 考虑了m大于n的情况,缩进到位。

    B : 求1!+2!+3!+....+n! 之值

    题目描述
    求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。 
    

    优秀代码

    author: 
    2016150127
    result: 正确
    codes:
    #include<stdio.h>
    int main()
    {
        int n,i,sum=0,index=1;
        scanf("%d",&n);
        
        for (i=1;i<=n;i++)
        {
            index=index*i;
            sum+=index; 
        }
        printf("%d",sum);
        return 0;
        //5->153;2->3
    }
    

    点评 : 一个循环就完成了计算,缩进也到位,该题比较 。

    C : 求N以内的完数

    题目描述
    一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子:
    

    优秀代码

    // 由于这道题大家实在写的不够简练。我自己写了一份,顺便给大家参考下格式
    #include <stdio.h>
    
    int main () {
        int num, i, j; // 注意逗号后面有个空格
        scanf("%d", &num); 
        for (i=2; i<n; i++) { // 此处的前花括号是否换行皆可
            int sum = 0;
            for (j=1; j<=i/2; j++) // 计算到i/2
                if (i % j == 0) sum += j;
            if (sum == i) {
                printf("%d its factors are ", i);
                for(j=1; j<=i/2; j++) // 再次计算因子然后输出
                    if (i % j == 0) printf("%d ", j);
                putchar('\n');
            }
        }
        return 0;
    }
    }
    

    点评 : 代码缩进很到位,

    D : 序列求和

    题目描述
    有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。
    

    优秀代码

    #include<stdio.h>
    
    int main(){
        int n;
        scanf("%d",&n);
        double up=2,down=1,sum=0,t;
        for(int i=0;i<n;i++) {
            sum+=up/down;
            t=up;
            up=up+down;
            down=t;
        }
        printf("%.2lf\n",sum);
        return 0;
    }
    

    点评 : 做过的题,不做评价,关键缩进到位。

    E : 输出m到n之间的水仙花数

    题目描述
    如果一个三位数等于它自己的每一位数字的立方之和,则称此数为“水仙化数”,如153=13+53+33。给出范围的起止值,输出该范围的水仙花数。
    (提示:可使用ctype.h中的函数)
    

    优秀代码

    #include <stdio.h>
    int main()
    {
        int a,b,c,d,e,f;
        scanf("%d%d",&a,&b);
        for(c=a;c<=b;c++)
        {
            if(c>=100 && c<=999) {
                d=c/100;
                e=c%100/10;
                f=c%10;
                if(c==d*d*d+e*e*e+f*f*f)
                {
                    printf("%d\n",c);
                }
            }
           }
        return 0;   
    }
    

    点评 : 这道题很多人都忽略了一个点。水仙花数是三位数。

    F:数组排序

    题目描述
    定义一个10个元素的整型数组,输入10个整数到数组,对数组排序,然后输出。注意:输出时,每个元素之间以空格相间,但最后一个元素后面没有空格,直接换行。
    

    优秀代码

    #include<stdio.h>
    #define k 10
    int main()
    {
        int a[k],i,j,t,n,p,c;
        int flag;
        scanf("%d",&p);
        for(n=0;n<p;n++) {
            for(i=0;i<k;i++)
                scanf("%d",&a[i]);
            for(i=0;i<k;i++) {
                flag=0;
                for(j=0;j<k-1;j++)
                    if(a[j]>a[j+1]) {
                        t=a[j];
                        a[j]=a[j+1];
                        a[j+1]=t;
                        flag=1;
                    }
                if(flag==0)
                    break;
            }
            for(c=0;c<k;c++)
                printf(c==9?"%d\n":"%d ",a[c]);
        }
        return 0;
    }
    

    点评:我不管我就喜欢那些看着舒服(缩进到位)的代码。

    相关文章

      网友评论

          本文标题:实验五:优秀代码

          本文链接:https://www.haomeiwen.com/subject/ytbkpttx.html