- 计算无理数e
【问题描述】
输入整数n(0<=n<=20),计算公式 1 + 1/1! + 1/2! + … + 1/n!的值。
【输入形式】
输入整数n(0<=n<=30)。
【输出形式】
输出公式 1 + 1/1! + 1/2! + … + 1/n!结果,小数点后保留9位。
【样例输入】
12
【样例输出】
2.718281828
【样例输入】
4
【样例输出】
2.708333333
【样例说明】
输入n为12,求得公式1 + 1/1! + 1/2! +…+ 1/12!的值为2.718281828,小数点后保留9位。
注意:为保证数据的准确性和一致性,请使用int或long类型保存阶乘的计算结果,用double数据类型计算和保存和的结果
#includeint main() { double m,sum=1,flag; scanf("%lf",&m); for(int i=1;i<=m;i++){ long f=1; for(int j=1;j<=i;j++){ f*=j; } flag=1/(double)f; sum+=flag; } printf("%.9lf",sum); return 0; }
- 最大公约数
【问题描述】求二个正整数a和b的最大公约数与最小公倍数。
【输入形式】二个整数a和b,空格分开。
【输出形式】二个整数,空格分开。第一个整数是a,b的最大公约数,第二个整数是a,b的最小公倍数。
【样例输入】6 9
【样例输出】3 18
【样例说明】6和9的最大公约数是3,最小公倍数是18。
#includeint main() { int a,b,flag,r; scanf("%d %d",&a,&b); flag=a*b; if(a r=a; a=b; b=r; } do{ r=a%b; a=b; b=r; }while(r!=0); int g=flag/a; printf("%d %d",a,g); return 0; }
- 完数分解
【问题描述】输入一个正整数n(<=1000),判断该数是否为完数(真因子之和等于数本身),如6是完数,6=1+2+3。
【输入形式】一个正整数n。
【输出形式】如果是完数,输出完数与真因子之和,否则输出N。
【样例1输入】6
【样例1输出】6=1+2+3
【样例2输入】8
【样例2输出】N
#include程序片段题int main() { int a,b[1000],i=0,sum=0; scanf("%d",&a); for(int j=1;j<=a/2;j++){ if(a%j==0){ b[i]=j; sum+=j; i++; } } if(sum==a){ printf("%d=",a); for(int j=0;j if(j==0){ printf("%d",b[j]); }else{ printf("+%d",b[j]); } } }else printf("N"); return 0; }
1.【问题描述】使用数组存储若干本英文书名,调用排序函数将其排名后输出。
【输入形式】无
【样例输出】
C Programing
C#
FORTRAN
Visual Basic
Visual C++6.0
#include#include #include void sort(char *name[],int n) { char *temp;int i,j,k; for(i=0;i k=i; for(j=i+1;j 0)k=j; if(k!=i){ temp=name[i]; name[i]=name[k]; name[k]=temp; } } } int main() { int i,m; char *book_name[]={"Visual Basic","Visual C++6.0","C Programing","FORTRAN","C#"}; m=sizeof(book_name)/sizeof(char *); sort(book_name,m); for(i=0;i
2.【问题描述】2是第1个素数,输入m,从小到大排列后输出第m个素数。
【输入形式】一个正整数m(m<=100)
【输出形式】一个正整数,表示第m个素数
【样例输入】8
【样例输出】19
【样例说明】从小到大2,3,5,7,11,13,17,19,第8个素数是19。#include#include "stdio.h" int p[100]={2}; int isp(int n) { int i,flag=1; for(i=2;i if(n%i==0) flag=0; } return flag; } int main( ) { int i,l=1,m; scanf("%d",&m); for(i=3;l
3.【问题描述】删除指针数组中重复的字符串。S13.5
【样例输入】无
【样例输出】
Before deleting:
tianjin
taiyuan
beijingbeijing
shanghai
tianjin
After deleting:
tianjin
taiyuan
beijing
shanghai#include#include int del_name(char *name[],int n) { int i,j,k; for(i=0;i for(j=n-1;j>i;j--){ if(strcmp(name[i],name[j])==0){ for(k=j;k name[k]=name[k+1]; } n=n-1; } } } return n; } int main() { int k,n; char *name[]={"tianjin","taiyuan","beijing","beijing","shanghai","tianjin"}; n=sizeof(name)/sizeof(char*); printf("Before deleting:n"); for (k=0;k
4.【问题描述】函数merge()实现将字符串正序与反序连接。参考实验12.4。
【输入形式】一个字符串。
【输出形式】一个字符串。
【样例输入】1234a
【样例输出】1234aa4321#include#include int main() { char str[100]; void merge(char *s); gets(str); merge(str); puts(str); return 0; } void merge(char *s) { char *p,*q,n; n=strlen(s); for(p=s+n-1,q=s+n;p>=s;p--,q++) *q=*p; *q=' '; }



