zoukankan      html  css  js  c++  java
  • 第五次作业

    一、1.输入两个正整数m和n(要求m<=n), 求m!+(m+1)!+(m+2)!…+n!

    #include<stdio.h>
    int main()
    {    
         int m,n;
        double i,j,sum;
        printf("请输入m和n
    ");
        scanf("%d",&m);
        scanf("%d",&n);
        if(m>n)
        {
            printf("输入错误
    ");
        }
        else
        {
            for(;m<=n;m++)
            {
                j=1;
                   for(i=1;i<=m;i++)
                {
                    j=j*i;
                }
                sum=sum+j;
            }
        }
        printf("%.0f",sum); 
        return 0;
    }
     

    2.输出1000以内的所有完数。所谓完数是指这个数恰好等于除他本身外的所有因子之和。例,6的因子为1,2,3,6=1+2+3,所以6是完数。 

    #include<stdio.h>
    int main()
    {
        int i,n,j;
        for(j=1;j<=1000;j=j+1)
        {
            n=0;
            for(i=1;i<=j-1;i=i+1)
            {
                if(j%i==0)
                {
                    n=n+i;
                }
            }
            if(n==j)
            {
                printf("%d ",n);
            }
        }
        return 0;
    }

    3.奇偶归一猜想——对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。   如n = 11,得序列:11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1。(共有14个步骤)  题目输入正整数n,求这个n多少步能归一 

    #include<stdio.h>
    int main()
    {
        int digital,i;
        scanf("%d",&digital);
        i=0;
        if(digital<=0)
        {
            printf("输入错误
    ");
        }
        else
        {
            while(digital!=1)
            {
                if(digital%2!=0)
                {
                    digital=digital*3+1;
                }
                else if(digital%2==0)
                {
                    digital=digital/2;
                }
                i=i+1;
            }
            printf("一共经过了%d步
    ",i);
        }
        return 0;
    }

    附加题1.输入一个正整数n,输出2/1+3/2+5/3+8/5+…的前n项之和,保留2位小数,该序列从第二项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

    #include<stdio.h>
    int main()
    {
        int i,n;
        float a,b,c,sum;
        scanf("%d",&n);
        a=2;
        c=1;
        sum=0;
        for(i=1;i<=n;i=i+1)
        {
            sum=sum+a/c;
            b=c;
            c=a;
            a=a+b;
        }
        printf("%.2f",sum);
        return 0;
    }

    附加题2.凯撒密码(caeser)的原理:每一个字母按字母表顺序向后移3位,如a加密后变成d,b加密后变成e,……x加密后变成a,y加密后变成b,z加密后变成c。例如:“baidu”用凯撒密码法加密后字符串变为“edlgx”。试写一个算法,将键盘输入的文本字符串(只包含a~z的字符)进行加密后输出。 

    #include<stdio.h>
    int main()
    {
        char a;
        printf("请输入一段字母
    ");
        while((a=getchar()) !='
    ')
            {
                if(a>='a'&&a<='w'||a>='A'&&a<='W')
                {
                    a=a+3;
                    printf("%c",a);
                }
                else if(a=='x'||a=='y'||a=='z')
                {
                    a=a-23;
                    printf("%c",a);
                }
                else
                {
                    printf("输入错误
    ");
                }
            }
        return 0;
    }

    二、实验总结;

    1.附加题一的循环语句中要注意语句的先后顺序,顺序不对可能导致结果不对。

    2.一定要赋初值,否则结果会不对。

    3.int型,float型和double型储存的语句不同,注意及时切换。

  • 相关阅读:
    D. Constructing the Array
    B. Navigation System
    B. Dreamoon Likes Sequences
    A. Linova and Kingdom
    G. Special Permutation
    B. Xenia and Colorful Gems
    Firetrucks Are Red
    java getInstance()的使用
    java 静态代理和动态代理
    java 类加载机制和反射机制
  • 原文地址:https://www.cnblogs.com/buyuhang/p/6034203.html
Copyright © 2011-2022 走看看