• 作业五


    C语言程序设计第五次作业

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

    #include<stdio.h>
    int main()
    {
        int m,n,a,d;
        float g,e=1,f=0,b=1,c=0;
        printf("输入m和n的值用逗号隔开
    ");
        scanf("%d,%d",&m,&n);
        if(m<0||n<0)
        {
            printf("输入错误
    ");
        }
        else if(m>=n)
        {
            printf("输入错误
    ");
        }
        else{
            for(a=1;a<=n;a++)
                {
                    b=b*a;
                    c=c+b;
                }
            for(d=1;d<m;d++)
                {
                    e=e*d;
                    f=f+e;
                }
                    g=c-f;
            printf("%.2f",g);
            }
            return 0;
    }
            

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

    #include<stdio.h>
    #include<math.h>
    int main()
    {    int i1,i2,k,sum,m;
            for(i2=2;i2<=1000;i2++)
            {        sum=0; 
                    for(i1=1;i1<i2;i1++)
                {
                    if(i2%i1==0)
                    {
                        sum=sum+i1;
                    }
                }
                
                    if(i2==sum)
                    {
                        k++;
                        printf(" %d",i2);
                    }
            } 
            if(m%10==0&&m!=0)
            {    
                printf(" 
    ");
            }
                printf("
     有%d个",k);
            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 a=0,b=0,c=0,d=0;
        printf("输入一个正整数
    ");
        scanf("%d",&a);
        do
        {    
            if(a<=0)
            printf("输入错误,重新输入
    "); 
            else if(a%2==0)
            {
                a=a/2;
                b++;
            }
            else if(a%2!=0)
            {
                a=3*a+1;
                c++;
            }
            d=b+c;
        }while(a!=1);
        printf("一共用了%d次",d);
        return 0;
    } 

     附加题: 

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

    #include<stdio.h>
    int main()
    {    int i,n;
        double a,b,c,d,e,f;
        printf("输入n:
    ");
        scanf("%d",&n);
        if(n<=0)
        {
            printf("输入错误"); 
        }
        else
        {    a=2;b=1;d=0;
            for(i=1;i<=n;i++)
            {    
                d=d+a/b;
                e=b;
                f=a;
                a=a+e;
                b=f;
                
            }
              printf("前%d项和为%.2f",n,d);
        }
         return 0;
     } 

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

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {    char x;
        a:
        fflush(stdin);
        printf("
    输入字符,将进行加密。
    ");
        scanf(" %c",&x);
        if(x>'A'&&x<'z')
        {
        while(x!='
    ')
        {
            if(x>='a'&&x<'x')
            {
                x=x+3; 
            }
            else if(x=='x'||x=='y'||x=='z')
            {
                x=x-23;
            }
            else if(x=='X'||x=='Y'||x=='Z')
            {
                x=x-23;
            }
            else if(x>='A'&&x<'X')
            {
                x=x+3; 
            }
            printf("%c",x);
            scanf("%c",&x);
        }
        } 
        else
        {
            {
                printf("输入错误!
    ");
                goto a;
            }
        }
        return 0;
    }

      二、实验总结

    1:注意循环的嵌套,以及在循环前赋值的位置。

    2:注意完数的概念,要把所有能整除的数和“1”都加起来与原数相等。

    3:注意换行。

    4:赋值时注意不要把位置放反。

    5:有小数点要用float或者double。

    6:字符要注意是“%c”,输入时要用“char”。

    7:求阶乘的时候如果不方便计算,可以求两个阶乘然后做差。

    8:新学的:fflush(stdin),可以清空缓存,真是长知识了。

    9:必要时可以用goto。

    10:输出输入是注意变量类型。floatintdoublechar。

     

  • 相关阅读:
    SharePoint 2007 开发部署Application Pages
    SharePoint 列表项通过自定义WebService读取
    SharePoint 用户控件编写的简单介绍
    SharePoint 读取选项字段所有Choise
    SharePoint WebService 之更新审批状态
    ASP.NET TextBox TextMode为Password从数据库绑定不能显示问题
    String.prototype.split()兼容问题
    使用SQLBULKCOPY提高导入数据的性能
    关于SQL SERVER2005附加数据库显示为只读的解决方案
    从客户端(hd_content="<DIV>测试昂,哈333</DIV>")中检测到有潜在危险的 Request.Form 值。
  • 原文地址:https://www.cnblogs.com/mty1997/p/6021133.html
Copyright © 2020-2023  润新知