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

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

    #include <stdio.h>
    int main()
    {
        int n,m,i,g,sum,ch=1,o;
        printf("请输入两个数:
    ");
        scanf("%d%d",&m,&n);
        if(m<=0||n<=0)
        {
            printf("error!!");
        }
        else if(m>n)
        {
            o=m;
            m=n;
            n=o;
            for(i=m,sum=0;i<=n;i++)
            {
                for(g=1,ch=1;g<=i;g++)
                {
                    ch=ch*g;
                }
                sum=sum+ch;
            }
        }
        else
        {
            for(i=m,sum=0;i<=n;i++)
            {
                for(g=1,ch=1;g<=i;g++)
                {
                    ch=ch*g;
                }
                sum=sum+ch;
            }
        }
        printf("和为%d",sum);
        return 0;
    } 

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

    #include <stdio.h>
    int main()
    {
        int i,g,sum=0;
        printf("输出1000以内的完数。
    "); 
        for(i=4;i<=1000;i++,sum=0)
        {
            for(g=1;g<i;g++)
            {
                if(i%g==0)
                {
                    sum=sum+g;
                }
            }
            if(sum==i)
            {
                printf("%d
    ",i);
            }
        }
        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 n,m=0;
        printf("请输入一个数:
    ");
        scanf("%d",&n);
        if(n<=0)
        {
            printf("error!!");
        }
        else
        {
            while(n!=1)
            {
                if(n%2==0)
                {
                    n=n/2;
                }
                else
                {
                    n=n*3+1;
                }
                m++;
            }
            printf("需要%d步",m);
        }
        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 ch;
        printf("输入一串字符:
    ");
        scanf("%c",&ch);
        while(ch!='
    ')
        {
            if(ch>='a'&&ch<='w'||ch>='A'&&ch<='Z')
            {
                ch+=3;
                printf("%c",ch); 
            }
            else if(ch>='x'&&ch<='z'||ch>='X'&&ch<='Z')
            {
                ch=ch-23;
                printf("%c",ch); 
            }
            else
            {
                printf("error!!");
            }
            scanf("%c",&ch);
        }
        return 0;
    }

    实验总结:

    1:定义变量时要赋初值。

    2:循环套循环时,若两个循环变量有关系,要注意之间的逻辑关系的正确性。

  • 相关阅读:
    2019.6.20刷题统计
    36 线程 队列 守护线程 互斥锁 死锁 可重入锁 信号量
    35 守护进程 互斥锁 IPC 共享内存 的方式 生产者消费者模型
    34 进程 pid ppid 并发与并行,阻塞与非阻塞 join函数 process对象 孤儿进程与僵尸进程
    33 udp 域名 进程
    32 粘包 文件传输
    31 socket客户端. 服务器 异常 语法
    30 网络编程
    29 元类 异常
    26 封装 反射 常用内置函数
  • 原文地址:https://www.cnblogs.com/yanchao980817/p/6024692.html
Copyright © 2011-2022 走看看