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

    一、实验内容 

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

    1.1 代码:

    #include<stdio.h>
    int main()
    {
    	int m,n,a,b,c,sum=0;
    	printf("请输入两个正整数m和n\n");
    	scanf("%d %d",&m,&n);
    	if (m<=0||n<=0)
    	{
    		printf("error\n");
    	}
    	else
    	{
    		for (a=m;a<=n;a++)
    		{
    			for (b=1,c=1;b<=a;b++)
    			{
    				c=b*c;
    			}
    			sum=sum+c;
    		}
    	printf("%d\n",sum);
    	}
    	return 0;
    }
    

    1.2 程序运行结果:

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

    2.1 代码:

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

    2.2 程序运行结果:

    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多少步能归一 

    3.1 代码:

    #include <stdio.h>
    int main()
    {
    	int a,i;
    	printf("请输入一个正整数 ");
    	scanf("%d",&a);
    	i=0;
    	if (a<=0)
    	{
    		printf("error");
    	}
    	else
    	{
    		while(a!=1)
    		{
    			if(a%2==0)
    			{
    				a=a/2;
    			}
    			else
    			{
    				a=3*a+1;
    			}
    			i++;
    		}
    	}
    	printf("该数共需%d步可以归零\n",i);
    	return 0;
    }
    

     3.2 程序运行结果:

    二.实验总结:

    1.注意对程序进行合法性验证,如果输入错误怎么办?还要有对用户的提示

    2.记得对初始值的赋值,否则会出现随机数

    3.注意循环结构的运行,有时候一条语句的位置放错,可能导致整个循环不运行

    4.注意各种语句的嵌套,每个大括号要一一对应。

  • 相关阅读:
    看了下swift,一如既往的蛋疼。
    运算符重载 C++ 编程思想
    OPENGL学习笔记整理(五):着色语言
    [ZJOI2009]对称的正方形 manacher+单调队列
    sam板子
    模拟41
    P1640 [SCOI2010]连续攻击游戏
    Dp搬运工3
    noip2018 赛道修建
    P3224 [HNOI2012]永无乡
  • 原文地址:https://www.cnblogs.com/wei530/p/6027204.html
Copyright © 2011-2022 走看看