作业五
Posted 门天宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作业五相关的知识,希望对你有一定的参考价值。
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的值用逗号隔开\\n"); scanf("%d,%d",&m,&n); if(m<0||n<0) { printf("输入错误\\n"); } else if(m>=n) { printf("输入错误\\n"); } 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(" \\n"); } printf("\\n 有%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("输入一个正整数\\n"); scanf("%d",&a); do { if(a<=0) printf("输入错误,重新输入\\n"); 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:\\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("\\n输入字符,将进行加密。\\n"); scanf(" %c",&x); if(x>\'A\'&&x<\'z\') { while(x!=\'\\n\') { 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("输入错误!\\n"); goto a; } } return 0; }
二、实验总结
1:注意循环的嵌套,以及在循环前赋值的位置。
2:注意完数的概念,要把所有能整除的数和“1”都加起来与原数相等。
3:注意换行。
4:赋值时注意不要把位置放反。
5:有小数点要用float或者double。
6:字符要注意是“%c”,输入时要用“char”。
7:求阶乘的时候如果不方便计算,可以求两个阶乘然后做差。
8:新学的:fflush(stdin),可以清空缓存,真是长知识了。
9:必要时可以用goto。
10:输出输入是注意变量类型。float\\int\\double\\char。
以上是关于作业五的主要内容,如果未能解决你的问题,请参考以下文章