• 第五次作业


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

    #include<stdio.h>
    int main()
    {
    	int m,n,a,b,c,y=1,z=1;
    	float sum,sum1=0,sum2=0;
    	printf("请输入两个正整数m,n且m<n
    ");
    	scanf("%d%d",&m,&n);
    	if(m>=n)
    	{
    		c=m;
    		m=n;
    		n=c;
    		for(a=1;a<=n;a++)
    	    {
    	    	y=y*a;
    	    	sum1=sum1+y;
    		}
    		for(b=1;b<=m;b++)
    		{
    			z=z*b;
    			sum2=sum2+z;
    		}
    		sum=sum1-sum2+z;
    	}
    	else
    	{
    		for(a=1;a<=n;a++)
    	    {
    	    	y=y*a;
    	    	sum1=sum1+y;
    		}
    		for(b=1;b<=m;b++)
    		{
    			z=z*b;
    			sum2=sum2+z;
    		}
    		sum=sum1-sum2+z;
    	}
    	printf("%d的阶乘到%d的阶乘的和为%f",m,n,sum);
    	return 0;
    }
    

      

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

    #include<stdio.h>
    int main()
    {
    	int i,j,y;
    	for(i=1;i<=1000;i++)
        {
        	y=0;
    		for(j=1;j<i;j++)
        	{
        		if(i%j==0)
        		{
        			y=y+j;
    			}
    		}
    		if(y==i)
    		{
    			printf("%4d",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>
    #include<stdlib.h>
    int main()
    {
    	int n,g;
    	printf("请输入一个正整数n
    ");
    	scanf("%d",&n);
    	if(n<=0)
    	{
    		printf("error");exit(0);
    	}
    	else if(n==1)
    	{
    		printf("已归一
    ");exit(0);
    	}
    	g=0;
    	while(n!=1)
    	{
    		if(n%2==1)
    		{
    			n=3*n+1;
    		}
    		else
    		{
    			n=n/2;
    		}
    		g++;
    	}
        printf("%d步能归一
    ",g);
    	return 0;
    }
    

      

    附加题: 

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

    #include<stdio.h>
    int main()
    {
    	int n,i;
    	float y=1,sum=0,z=2,m,x;
    	printf("ÊäÈëÒ»¸öÕýÕûÊýn
    ");
    	scanf("%d",&n);
    	if(n<=0)
    	{
    		printf("error");
    	}
        else
        {
        	for(i=1;i<=n;i++)
        	{
        		x=y;
    			m=z/y;
    			y=z;	
    			z=z+x;
        		sum=sum+m;
    		}
    	}
    	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 op;
    	printf("ÇëÊäÈëÒ»´®×Ö·û´®
    ");
    	while((op=getchar())!='
    ')
    	{
    	    if(op>=65&&op<88||op>=97&&op<120)
    	    {
    	    	op=op+3;	
        	}
        	else if(op>=88&op<=90||op>=120&&op<=122)
        	{
    	    	op=op-23;
    	    }
        	else 
        	{
        		printf("error
    ");
    	    }
            printf("%c",op);
        }
       	return 0;
    }
    

      

    实验总结

    1.字符要用char来定义,循环变量用int

    2.循环变量记得有的要赋初值

    3.getchar()向缓存中输入一个字符

    4.循环语句的嵌套,要注意嵌套的合理

    5.跳出选择语句用exit(0),需要stdlib,h函数

    6.书写格式要工整,方便检查

  • 相关阅读:
    css修改element-ui滚动条样式
    执行java 报错 _System.out.printIn : 找不到符号
    java -version失效的解决方法
    vue cli4配置多个baseUrl环境,axios涉及多个请求域的情况
    vue cli4配置多个跨域_正则重复
    axios中vue 发送postman中raw_json格式的请求
    开发常用快捷键
    js字符串时间转化为时间戳
    vue项目vue-cli4展示本地markdown语法_md文件,图文详细讲解
    vue响应式原理源码:带你一步精通vue
  • 原文地址:https://www.cnblogs.com/jg666666/p/6021160.html
Copyright © 2020-2023  润新知