7-32 最佳情侣身高差 (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 <stdio.h> #include <string.h> int main(){ int n; char a[11]; double b[11]; scanf("%d",&n); // getchar(); for(int i=0;i<n;i++){ scanf("\n%c%lf\n",&a[i],&b[i]); } for(int i=0;i<strlen(a);i++){ if(a[i]=='M'){ printf("%.2lf\n",b[i]*1.0/1.09); } if(a[i]=='F') printf("%.2lf\n",b[i]*1.09); } return 0; }
运行测试用例:
2
M 1.75
F 1.8
结果:
1.61
1.96
注意:%c:空格 和 转义字符(比如'\n') 都作为有效字符,都会被c接收。题目要求输入一个整数后跨行分别在每行输入用户信息,因此需要将\n给去掉,否则%c会将跨行符号算进去。
有两种解决方法:
①在输入时使用'\n'代替跨行,如scanf("\n%c",&c),这样当第一行输入整数后的跨行符号就不会被%c吃掉了。(在输入换行键的地方加\n)
②用getchar()吃掉换行符号。
为什么一定要吃掉换行符号呢?
比如题目的测试用例,如果输入2后换行,在%c之前没有写\n,那么读入的数据将是,此时多出了0.0000出来,结果当然计算不出来
所以,这个地方需要注意这个%c的用法。