第五次作业
Posted T.X
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五次作业相关的知识,希望对你有一定的参考价值。
实验一:
输入两个正整数m和n(要求m<=n), 求m!+(m+1)!+(m+2)!…+n!
#include<stdio.h> int main() { int m,n,i; float sum=0,p; printf("请输入两个正整数m n,要求m<=n\\n"); scanf("%d%d",&m,&n); while(m>n&&m<=0&&n<=0) { printf("输入错误,请重新输入。\\n"); scanf("%d%d",&m,&n); } for(;m<=n;m++) { p=1; for(i=1;i<=m;i++) { p=p*i; } sum=sum+p; } printf("结果为%.0f",sum); return 0; }
实验二:
输出1000以内的所有完数。所谓完数是指这个数恰好等于除他本身外的所有因子之和。例,6的因子为1,2,3,6=1+2+3,所以6是完数。
#include<stdio.h> int main() { int i,m,sum; for(i=2;i<=1000;i++) { sum=0; for(m=1;m<i;m++) { if(i%m==0) { sum=sum+m; } } if(sum==i) { printf("%d ",i); } } return 0; }
实验三:
奇偶归一猜想——对于每一个正整数,如果它是奇数,则对它乘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 n,a; printf("请输入一个正整数。\\n"); scanf("%d",&n); a=0; while(n<=0) { printf("输入错误,请重新输入。\\n"); scanf("%d",&n); } while(n!=1) { if(n%2==0) { n=n/2; } else { n=n*3+1; } a++; } printf("共需要%d步。\\n",a); }
附加题1:
输入一个正整数n,输出2/1+3/2+5/3+8/5+…的前n项之和,保留2位小数,该序列从第二项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
#include<stdio.h> int main() { int a,b; float sum=0,c=2,d=1,e,f; printf("输入一个正整数n,输出2/1+3/2+5/3+8/5+…的前n项之和。\\n"); scanf("%d",&a); while(a<=0) { printf("输入错误,请重新输入。\\n"); scanf("%d",&a); } for(b=1;b<=a;b++) { sum=sum+c/d; e=d; /*分清楚是谁把值付给谁,不能写反*/ f=c; c=c+e; d=f; } printf("前n项之和为%.2f",sum); 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 ch; printf("请输入文本字符串,本程序将会对其加密。\\n");while((ch=getchar())!=\'\\n\') { if(ch<\'x\'&&ch>=\'a\'||ch<\'X\'&&ch>=\'A\') { ch=ch+3;printf("%c",ch); } else if(ch>=\'X\'&&ch<=\'Z\') { ch=ch-23;printf("%c",ch); } else { printf("部分错误,请重新输入后面部分。\\n"); fflush(stdin); } ch=getchar(); } printf("\\n程序结束,谢谢使用。"); return 0; }
实验总结:1.大循环体镶嵌循环体中,注意变量的初始化。
2.进行变量复制时,搞清楚谁赋给谁。
3.适当使用清缓存函数fflush(stdin)。
以上是关于第五次作业的主要内容,如果未能解决你的问题,请参考以下文章