pta简单实现x的n次方_《C语言程序设计》实验作业—单循环结构练习(1)-PTA.拼题A.刷题...

该篇博客提供了五个C语言编程问题的解决方案,包括计算交错序列前N项和、求幂级数展开的部分和、统计正负数个数、特殊数列求和及最佳情侣身高差的计算。每个问题都给出了详细的输入输出格式和参考代码。
摘要由CSDN通过智能技术生成

7-1 求交错序列前N项和 (15分)本题要求编写程序,计算交错序列

1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中输出部分和的值,结果保留三位小数。

输入样例:

5

输出样例:

0.917

参考代码:

#include

int main()

{

int N,sign=1; //sign:控制正负号交替

double sum=0.0;

scanf("%d",&N);

for(int i=1;i<=N;i++,sign*=-1)

sum+=(double)i/(2*i-1)*sign;

printf("%.3lf\n",sum);

return 0;

}

7-2求幂级数展开的部分和(20分)已知函数ex可以展开为幂级数1+x+x2/2!+x3/3!+⋯+xk/k!+⋯。现给定一个实数x,要求利用此幂级数部分和求ex的近似值,求和一直继续到最后一项的绝对值小于0.00001。

输入格式:

输入在一行中给出一个实数x∈[0,5]。

输出格式:

在一行中输出满足条件的幂级数部分和,保留小数点后四位。

输入样例:

1.2

输出样例:

3.3201

参考代码:

#include

int main()

{

double x,sum=1,t;

int i;

scanf("%lf",&x);

for(i=1,t=1;t>=0.00001;i++)

{

t*=x/i; //构造累加项

sum+=t;

}

printf("%.4f\n",sum);

return 0;

}

7-3 正负数个数 (10分)从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。用输入零来结束输入,程序中用变量 i 统计大于零的整数个数,用变量 j 统计小于零的整数个数。

输入格式:

在一行中输入n(n<20)个用空格间隔的整数,最后输入0结束输入,数据之间只能用1个空格间隔。。

输出格式:。

在两行中分别按照“i=正数个数”和“j=负数个数”的格式输出结果,个数均原样输出,没有列宽控制。

输入样例:

-8 -9 2 5 -1 -4 0

输出样例:

i=2

j=4

参考代码:

#include

int main()

{

int i=0;  //正数:Positive number

int j=0; //负数:negative

int a;

do

{

scanf ("%d",&a);

if (a>0)

i++;

else if (a<0)

j++;

}while (a!=0);  //对比下这里用while,和for

printf ("i=%d\nj=%d",i,j);

return 0;

}

7-4 特殊a串数列求和 (20分)给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。

输入格式:

输入在一行中给出不超过9的正整数a和n。

输出格式:

在一行中按照“s = 对应的和”的格式输出

输入样例:

2 3

输出样例:

s = 246

参考代码:

#include

int main()

{

int a,n,sum,item;

item=0;

sum=0;

scanf("%d %d",&a,&n);

for(int i=1;i<=n;i++)

{

item=item*10+a; //根据上一项构造下一项

sum+=item;

}

printf("s = %d",sum);

return 0;

}

7-5 最佳情侣身高差 (10分)专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。

下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。

输入格式:

输入第一行给出正整数N(≤10),为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。

输出格式:

对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。

输入样例:

2

M 1.75

F 1.8

输出样例:

1.61

1.96

参考代码:

#include

int main()

{

int N,i;

scanf("%d",&N);  //不能在scanf的字符串中写\n等转义字符

for(i=1;i<=N;i++)

{

char s;

float a;

getchar(); //吸收前一个scanf的回车。

scanf("%c %f",&s,&a);

if(s=='M')

printf("%.2f\n",a/1.09);

else

printf("%.2f\n",a*1.09);

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值