第五次作业1

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

# include <stdio.h>
int main ()
{
   int m,n,p,a,i;
   printf ("输入两个正整数m和n,要求m<n");
   scanf("%d%d",&m,&n);
   if(m>n)
   {
      printf("error");
   }
   else
   {  
       for(p=0;m<=n;m++)
       {

         a=1;
         for(i=1;i<=m;i++)
         {
           a=a*i;
         }
         p=p+a;
       }
      } 
   printf (" %d",p);
   return 0;
}

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

# include <stdio.h>
int main ()
{
  int a,b,i;
  for(i=1;i<=1000;i++)
  {   
      b=0;
     for(a=1;a<i;a++)
     {   
        if (i%a==0)
        {
           b=b+a;
        }
     }
     if (b==i)
     {
        printf ("%d ",b);
     }
  }
  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 b,n;
   printf ("请输入正整数n:\n");
   scanf("%d",&n);
   b=0;
   if (n<=0)
   {
      printf("error");
   }
   while (n!=1)
   {
     if (n%2==0)
     {
        n=n/2;
        b++;
     }
     else if (n%2!=0)
     {
       n=3*n+1;
       b++;
     }
   }
   printf ("%d",b);
   return 0;
}

附加题:

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

# include <stdio.h>
int main ()
{
   int b,n,i,m,c;
   float a;
   printf (" 请输入一个正整数");
   scanf ("%d",&n);
   if (n<=0)
   {
      printf("error");
   }
   else 
   {
        b=2;
        a=0;
        m=1;
      for (i=1;i<=n;i++)
      {
          a=(float) b/m+a;
          c=m;
          m=b;
          b=c+b;

      }
   }
   printf ("%.2f",a);
   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 ia,n;
   printf ("请输入密码:\n");
   scanf ("%c",&n);
   while (n!='/n')
   {
      ia=0;
      if(n>='A'&&n<='W'||n>='a'&&n<='w')
      {
         ia=n+3;
       }
       else if(n>='W'&&n<='Z'||n>='w'&&n<='z')
      {
         ia=n-23;
      }
      scanf ("%c",&n);
      printf("%c",ia);
   }
   return 0;
}

实验总结:1.分清数字类型(float、int),输入和输出时类型保持一致。‘

              2.整数相除保留小数时用(float)或(double)强制转换。

             3. 注意该写输出是写输出。

            

 

posted @ 2016-11-06 14:47  天亮……  阅读(157)  评论(2编辑  收藏  举报