#include <stdio.h>
//本题易错点:1.char类型在scanf函数输入问题
// 2.printf以%d形式输出浮点数的问题
int main()
{
float a;
char b;
//int b;
// scanf("%f%c",&a,&b);//这个题这样输入居然是错的,是为什么呢?
//声明:
//经过测试得知,scanf对于char类型的读取,一次只读一个字符,包括空格,换行符等。
//他不会和读取int等其它数据类型一样,
//1.如果遇到空格会跳过,找到一个或几个连续的字符,然后读取,就结束了本次读取,
//2.假如还有其它类型的读取,就会从缓冲区中剩余的字符继续读取,
// 假如没有,之后再遇到空格或者字符都会继续跳过,直到遇到回车符退出。
//3.如果有第二个scanf输入,重复以上步骤。
//总结:char只能读取一个字符,包括空格符、换行符等,不管是在一个scanf函数里输入,
//还是不同scanf函数里输入,都遵循这个规则,只要在它读取之前,缓冲区里面,有上次输入
//多余的字符,那么他就会读取。
if((scanf("%f",&a))!=EOF)
//所以这一步,清理缓冲区就是必须的,但注意,这只能清理一个字符哦!
//若要清理多个字符,可用while循环清理。
getchar();//如果没有这一句也是错的
if(scanf("%c",&b)!=EOF)
;
scanf("%f %c",&a,&b);//上边的代码也可以换成这样就不会出错了。直接把格式规定好。
if(a>1.0)
{
if(a==(int)a)
{
if(b=='y')
printf("%d",(int)(20+a-1+5));//这里易错问题,浮点数一定要强制转换为整型
//才能用%d打印,不然会出错。
else
printf("%d",(int)(20+a-1));
}
else
{
if(b=='y')
printf("%d",20+((int)a-1+1)+5);
else
printf("%d",20+((int)a-1+1));
}
}
else
{
if(b=='y')
printf("25");
else
printf("20");
}
return 0;
}