求和、平均值
1. 请补全main函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它的的绝对值,并显示出来。
main()
{long int n;
clrscr() ;
printf("Enter the data:\n");
scanf(___1___);
printf("****** the origial data ********\n");
if(n<0)
___2___
printf("\n\n");
printf(___3___);
}
{long int n;
clrscr() ;
printf("Enter the data:\n");
scanf(___1___);
printf("****** the origial data ********\n");
if(n<0)
___2___
printf("\n\n");
printf(___3___);
}
第一处:"%ld",&n
第二处:n=-n
第三处:"%ld",n
第二处:n=-n
第三处:"%ld",n
解析:此题要注意的是数据类型,输入输出的格式控制。
长整数使用 ld(或Ld)
双精度浮点数使用 lf(或Lf)
此处 d f 不能大写
长整数使用 ld(或Ld)
双精度浮点数使用 lf(或Lf)
此处 d f 不能大写
2. 请在函数fun的横线上填写若干个表达式,使从键盘上输入一个整数n,输出斐波纳契数列。斐波契数列是一种整数数列,其中每数等于前两数之后,如: 0 1 1 2 3 5 8 13……
1) int fun(int n){
2) if(___1___)
3) return 0;
4) else if(___2___)
5) return 1;
2) if(___1___)
3) return 0;
4) else if(___2___)
5) return 1;
6) else
7) return___3___;
8) }
7) return___3___;
8) }
第一处:n==0
第二处:n==1
第三处:fun(n-1)+fun(n-2)
第二处:n==1
第三处:fun(n-1)+fun(n-2)
解析:求斐波契数列:一项等于其前两项的和。
这也是一个递归。
求斐波契数列的第n项的值,n从0开始。
这也是一个递归。
求斐波契数列的第n项的值,n从0开始。
3. 请补全函数fun,该函数的功能是求出以下分数序列的前n项之和。和值通过函数值返回到main函数。
1) #include
2) #include
2) #include
3) ___1___ fun(int n)
4) {int a,b,c,k;
5) double s;
6) s=0.0;
7) a=2;
8) b=1;
9) for(k=1;k<=n;k++)
10) {
11) s=s+(___2___)a/(___3___)b;
12) c=a;
13) a=a+b;
14) b=c;
15) }
16) return s;
17) }
4) {int a,b,c,k;
5) double s;
6) s=0.0;
7) a=2;
8) b=1;
9) for(k=1;k<=n;k++)
10) {
11) s=s+(___2___)a/(___3___)b;
12) c=a;
13) a=a+b;
14) b=c;
15) }
16) return s;
17) }
第一处:double
第二处:double
第三处:double
第二处:double
第三处:double
解析:从第11----14总结出数列的表达式。第1项是a/b=2/1;3/2 4/3
故:s=2/1+3/2+4/3+…… 和的初值是0。
记住:两个整数进行算术运算结果也是整数,算术运算中只要有一个操作数是实数,运算结果就是实数。
本题希望结果是实数,故要进行强制类型转换,2,3只要有一个进行强制转换就可以了。
最后,函数需要有一个返回值类型,当然也是双精度浮点数了。
故:s=2/1+3/2+4/3+…… 和的初值是0。
记住:两个整数进行算术运算结果也是整数,算术运算中只要有一个操作数是实数,运算结果就是实数。
本题希望结果是实数,故要进行强制类型转换,2,3只要有一个进行强制转换就可以了。
最后,函数需要有一个返回值类型,当然也是双精度浮点数了。
4. 给定程序的功能是计算并输出下列级数的前N项之和SN,直到SN大于q为止,q的值通过形参传入。
1) double fun( double q )
2) {int n;
3) double s;scanf输入整型数组
2) {int n;
3) double s;scanf输入整型数组
4) n = 2;
5) s = 2.0;
6) while (s ___1___ q)
7) {
8) s=s+(double)(n+1)/n;
9) ___2___ ;
10) }
11) printf("n=%d\n",n);
12) ___3___ ;
13) }
5) s = 2.0;
6) while (s ___1___ q)
7) {
8) s=s+(double)(n+1)/n;
9) ___2___ ;
10) }
11) printf("n=%d\n",n);
12) ___3___ ;
13) }
第一处:s <= q
第二处:n++
第三处:return s
第二处:n++
第三处:return s
解析:从第8行,
从数学的角度总结出数列的表达式。
(n+1)/n n从2开始,每次增加1,故:SN=2+3/2+4/3+…… 和的初值是2.0
循环条件是“SN大于q为止” ,while是满足条件才循环,故填写s <= q
最后,函数需要有一个返回值。
(n+1)/n n从2开始,每次增加1,故:SN=2+3/2+4/3+…… 和的初值是2.0
循环条件是“SN大于q为止” ,while是满足条件才循环,故填写s <= q
最后,函数需要有一个返回值。
5. 给定程序功能是计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f(n)的值。
float f( double x)
{
if (x == 0.0 || x == 2.0)
return ___1___;
else if (x < 0.0)
return (x -1)/(x-2);
else
return (x +1)/(x-2);
}
{
if (x == 0.0 || x == 2.0)
return ___1___;
else if (x < 0.0)
return (x -1)/(x-2);
else
return (x +1)/(x-2);
}
double fun( int n )
{int i; double s=0.0, y;
for (i= -n; i<=___2___; i++)
{ y=f(1.0*i); s += y; }
return ___3___;
}
main ( )
{
printf("%f\n", fun(5) );
}
{int i; double s=0.0, y;
for (i= -n; i<=___2___; i++)
{ y=f(1.0*i); s += y; }
return ___3___;
}
main ( )
{
printf("%f\n", fun(5) );
}
第一处:0.0
第二处:n
第三处:s
第二处:n
第三处:s
解析:函数f ( double x) 求每个单项的值。 if……else的条件是互斥的。
fun( ) 是求和。
fun( ) 是求和。
1. 给定程序的功能是计算score中m个人的平均成绩aver,将低于aver的成绩放在below中,通过函数名返回人数。
int fun(int score[], int m, int below[])
{int i, j = 0 ;
float aver = 0.0 ;
for(i = 0 ; i < m ; i++) aver += score[i] ;
aver /= (float) m ;
for(i = 0 ; i < m ; i++)
if(score[i] < aver) below[j++] = ___1___ ;
return j ;
}
main()
{int i, n, below[9] ;
int score[9] = {10, 20, 30, 40, 50, 60, 70, 80, 90} ;
n = fun(score, 9, ___2___) ;
{int i, j = 0 ;
float aver = 0.0 ;
for(i = 0 ; i < m ; i++) aver += score[i] ;
aver /= (float) m ;
for(i = 0 ; i < m ; i++)
if(score[i] < aver) below[j++] = ___1___ ;
return j ;
}
main()
{int i, n, below[9] ;
int score[9] = {10, 20, 30, 40, 50, 60, 70, 80, 90} ;
n = fun(score, 9, ___2___) ;
printf( "\nBelow the average score are: " ) ;
for (i = 0 ; i < n ; i++) printf("%d ", ___3___) ;
}
for (i = 0 ; i < n ; i++) printf("%d ", ___3___) ;
}
第一处:score[i]
第二处:below
第三处:below[i]
第二处:below
第三处:below[i]
解析:求平均值,应先求和。此处,和 与平均值使用了同一个变量。
Score[ ]是原来的成绩,
Below【 】存放低于平均分的分数,还有人数。Below的长度一定不大于score的长度。Below的长度必须通过计数才能得到,且是在比较的过程中得到的。Below数组的长度用j来计数,其初值当然为0。
Fun函数中:先求总分,平均分;再比较,比平均分低,存于below,j++。
J是后加,不能错了。
函数fun的返回值赋值给n,n就是below数组的长度。
Score[ ]是原来的成绩,
Below【 】存放低于平均分的分数,还有人数。Below的长度一定不大于score的长度。Below的长度必须通过计数才能得到,且是在比较的过程中得到的。Below数组的长度用j来计数,其初值当然为0。
Fun函数中:先求总分,平均分;再比较,比平均分低,存于below,j++。
J是后加,不能错了。
函数fun的返回值赋值给n,n就是below数组的长度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论