第5关:公式计算(3)
本关任务:编写程序,其功能是:根据以下公式计算并输出s
。公式为:
输入: 一个整数n
。
输出: 公式计算的结果s
的值。
测试输入: 15
预期输出: s = 2.718282
注意:结果保留6
位小数。
/********** Begin **********/
#include <stdio.h>
double jiecheng(int x)
{
double r=1;
for(int j=1;j<=x;j++){
r=r*j;
}
return r;
}
int main(void){
int n;
double s=1;
scanf("%d",&n);
for(int i=1;i<=n;i++){
s=s+1.0/jiecheng(i);
}
printf("s = %.6lf",s);
return 0;
}
/********** End **********/
第4关:求同时被7或11整除的整数
本关任务:编写程序求[1,1000]
范围内能被7
或11
整除,但不能同时被7
和11
整除的整数。按每行8
个数,每个数占5
个字符且以左对齐的格式进行输出。
/********** Begin **********/
#include <stdio.h>
int main(void)
{
int i,c=0;
for(i=1;i<=1000;i++){
if(i%7==0||i%11==0){
if(i%7==0&&i%11==0){
}else{
c++;
printf("%-5d",i);//负号表示使输出的数值向左对齐,5表示输出字段的宽度是5个字符
if(c%8==0)
printf("\n");
}
}
}
return 0;
}
/********** End **********/
第3关:公式计算(2)
本关任务:编写程序,其功能是:根据以下公式计算并输出s
。公式为:
输入: 一个整数m
。
输出: 公式计算结果s
测试输入: 20
预期输出: s = 6.506583
提示: 在C
语言中可调用log(n)
函数求ln(n)
。log
函数的引用说明为:double log(double x)
。
/********** Begin **********/
#include <stdio.h>
#include <math.h>
double Yn(int x)
{
double y=log(x)/log(exp(1));//exp(x)表示e的x次方,这里用了换底公式来表示ln(x);
return y;
}
int main(void)
{
int i,m;
double s=0,sum=0;
scanf("%d",&m);
for(i=1;i<=m;i++){
sum=sum+Yn(i);
//printf("%lf\n",s);
}
s=sqrt(sum);
printf("s = %lf",s);
return 0;
}
/********** End **********/
第2关:公式计算(1)
本关任务:编写程序,其功能是:根据以下公式计算并输出s
。公式为:
输入: 一个整数n
输出: 公式计算的结果s
的值。
/********** Begin **********/
#include <stdio.h>
double Xn(int a)
{
double sum=0;
for(int j=1;j<=a;j++){
sum=sum+j;
}
//printf("%lf\n",sum);
return sum;
}
int main(void)
{
int i,n;
double s=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
s=s+1.0/Xn(i);
//printf("%lf\n",s);
}
printf("s = %lf",s);
return 0;
}
/********** End **********/
第1关:分数序列和
本关任务:下列给定程序的功能是:求出如下分数序列的前n
项之和。
例如,若n=5
,则应输出8.391667
。请改正程序中的错误,使其得出正确的结果。
#include <stdio.h>
int main( )
{
int a, b, c,k, n = 5;
double s;
s = 0.0; a = 2; b = 1;
for ( k = 1; k <= n; k++ )
{
/*****以下一行有错误*****/
s = s + (double)a / (double)b;
/*****以下一行有错误*****/
c = a;a = b+a;b = c;
}
printf( "s%d = %lf\n", n, s);
return 0;
}