• 实验五


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

    #include<stdio.h>
    int main()
    {
        long long int m,n,i,z,x,b,a,sum=0;
        printf("ÇëÊäÈëÁ½¸öÕýÕûÊýmºÍnÇÒm<=n");
        scanf("%lld%lld",&m,&n);
        if(n<m)
        {
            a=m;
            m=n;
            n=a;
        }
        x=n-m;
        for(i=0;i<=x;i++)
        {
            m+=i;
            for(b=1,z=1;z<=m;z++)
            {
                b=b*z;
            }
            sum=sum+b;
        }
        
        printf("ºÍΪ%lld",sum);
        return 0;
     }

     

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

    #include<stdio.h>
    int main()
    {
        int i,j,n;
        for(i=2;i<1000;i++)
        {
            n=1;
            for(j=2;j<=i-1;j++)
            {
                if(i%j==0)
                  {
                    n+=j;
                }
            }
            if(n==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,i=0;
        printf("请输入正整数n");
        scanf("%d",&n);
        if(n<=0)
        {
            printf("输入错误");
        }
        else
        {
            while(1)
            {
                if(n==1)
                {
                    break;
                }
                else if(n%2==0)
                {
                    n=n/2;
                    i++;
                }
                else if(n%2==1)
                {
                    n=n*3+1;
                    i++;
                }
            }
        }
        printf("这个整数n%d步能归一",i);
        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 c1;
        printf("请输入字符");
        while(1)
        {
            scanf("%c",&c1);
            if(c1>=97&&c1<=119||C1>=65&&C1<=87)
            {
                c1=c1+3;
            }
            else if(c1>=120&&c1<=122||C1>=88&&C1<=90)
            {
                c1=c1-23;
            }
            else
            {
                break;
            }
            printf("%c",c1);
         } 
         printf("
    ");
         return 0;
     }

     

    实验总结:

    (1)在for后面一定不可以加;

    (2)在dev的环境下,编译时注意中文式和英文式的,

    (3)for语句中,用;分开三个表达式不可用,

    (4)while语句中表达式圆括号后面不可以加;

    (5)累乘时初始值为1

    (6)注意break是结束整个循环过程,continue只结束本次循环

  • 相关阅读:
    002. 在HTML页面嵌入循环代码
    001. 为input type=text 时设置默认值
    PHP包名解释
    003. vs2010发布、打包安装程序(转)
    SQL server 2008 Express Edition实现自动备份和自动删除备份
    解决phpMyAdmin中缺少mysqli扩展的错误
    IIS6下PHP环境的资源未找到(404)问题
    解决远程桌面连接过去后是蓝色屏幕问题
    解决tomcat一闪而过问题
    解决访问远程共享时发生 请检查名称的拼写. 否则, 网络可能有问题 故障
  • 原文地址:https://www.cnblogs.com/lr97/p/6021060.html
Copyright © 2020-2023  润新知