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的用法。

 

posted @ 2021-08-15 20:46  湘summer  阅读(1175)  评论(0编辑  收藏  举报