码迷,mamicode.com
首页 > 其他好文 > 详细

第5次作业

时间:2016-11-02 01:19:39      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:第一题   加密   int   个数   bsp   而且   image   sum   条件   

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

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int x,a=0,b=0,sum;
 5     printf("请输入一位正整数:\n");
 6     scanf("%d",&x);
 7     do
 8     {
 9         if(x>0)
10         {
11             if(x%2==0)
12             {
13                 x=x/2;
14                 a++;
15             }
16             else if(x%2!=0)
17             {
18                 x=3*x+1;
19                 b++;
20             } 
21         }
22     }while(x!=1);
23     sum=a+b;
24     printf("数字x一共经过了%d次运算",sum);
25     return 0;
26 }
27     

技术分享

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

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int sum=0,i,j;
 5     printf("输出1000内所有完数");
 6     for(i=1;i<=1000;i++)
 7     {
 8         sum=0; 
 9         for(j=1;j<i;j++)
10         {
11             if(i%j==0)
12             {
13                 sum=sum+j;    
14             }    
15         }
16         if(i==sum)
17         {
18             printf("\n%d",i);    
19         }
20             
21     } 
22     return 0;
23 }
24  

技术分享

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

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int x,a=0,b=0,sum=0;
 5     printf("请输入一位正整数:\n",a);
 6     scanf("%d",&x);
 7     do
 8     {
 9         if(x>0&&x!=1)
10         {
11             if(x%2==0)
12             {
13                 x=x/2;
14                 a++;
15             }
16             else if(x%2!=0)
17             {
18                 x=3*x+1;
19                 b++; 
20             }
21         }
22     }while(x!=1);
23     sum=a+b;
24     printf("数字x一共经过了%d次运算",sum);
25     return 0;
26 }
27     

技术分享

 附加题: 

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

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,i;
 5     float sum,a,b,c;
 6     printf("输入一个整数n:\n",n);
 7     scanf("%d",&n);
 8     if(n<=0)
 9     {
10         printf("error");
11     }
12     a=2;
13     b=1;
14     sum=0;
15     for(i=1;i<=n;i++)
16     {
17         sum=sum+a/b;
18         c=a+b;
19         b=a;
20         a=c;
21     }
22     printf("%.2f",sum);
23     return 0;
24 }

技术分享

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

 1 #include<stdio.h>
 2 int main()
 3 {
 4     char x;
 5     printf("请输入一个字母");
 6     scanf("%c",&x);
 7     while(x!=\n)
 8     {
 9     if(x>=a&&x<=w)
10     {
11         x=x+3;    
12     } 
13     else if(x==x||x==y||x==z)
14     {
15         x=x-23;
16     }
17     else if(x>=A&&x<=W)
18     {
19         x=x+3;
20     }
21     else if(x==X||x==Y||x==Z)
22     {
23         x=x-23;
24     }
25     if(x==\n)
26     {
27         break;
28     }
29     printf("%c\n",x);
30     scanf("%c",&x);    
31 }
32     return 0;
33 }

技术分享

 二、实验总结(实验中遇到的问题及解决方法) 

1:第一题就想课堂讲的一样里面的循环累乘,外面累加,这样就可以完成从一个数到另一个数的阶乘的和。注意里循环从1开始,外循环从输入较小的书开始。

2:再给累加的符号求和时要记住赋值,而且要在循环的里面。

3:先注意前提条件正整数,所以输出判断数字大于0,并且最后求出两个分式运行次数的和。

附加题:

1:在进行除法运算是最新的数等于前两个数之和,但是当较小的数被复制给较大的数,较大的数就已经被赋值,所以需要第三个数进行被赋值的程序,由于保留两位小数,所以最后要加%.2f或者%.2d来完成保留两位小数。

2:因为x,y,z三个数不像其他的字母加三,所以需要特殊处理减去23,并且程序运算的前提条件是字母,所以需要给出限制条件,当在是字母的情况下才能输出。

 

第5次作业

标签:第一题   加密   int   个数   bsp   而且   image   sum   条件   

原文地址:http://www.cnblogs.com/yeqingsong/p/6021323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!