思路分析
这题。。。不多说了。。重点在printf的控制输出吧,浮点数计算过程当中,最好将整数写成浮点数形式。3->3.0
代码
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
double n, ans;
scanf("%lf", &n);
if(n>=0.0 && n<5.0)
{
ans = 2.5 - n;
}
else if(n>=5.0 && n<10.0)
{
ans = 2.0 - 1.5*(n-3.0)*(n-3.0);
}
else if(n>=10.0 && n<20.0)
{
ans = n / 2.0 - 1.5;
}
printf("%.3f", ans);
return 0;
}
补充
常用printf格式汇总:
#include<stdio.h>
#include<string.h>
int main()
{
char c, s[20];
int a=1234;
float f=3.141592653589;
double x=0.12345678912345678;
strcpy(s, "Hello,World");
c='\x41';
printf("a=%d\n", a);//按照十进制整数格式输出,显示 a=1234
printf("a=%d%%\n", a);//输出%号 结果 a=1234%
printf("a=%6d\n", a);//输出6位十进制整数 左边补空格,显示 a= 1234
printf("a=%06d\n", a);//输出6位十进制整数 左边补0,显示 a=001234
printf("a=%2d\n", a);//a超过2位,按实际输出 a=1234
printf("a=%-6d\n", a);///输出6位十进制整数 右边补空格,显示 a=1234
printf("f=%f\n", f);//浮点数有效数字是7位,结果 f=3.141593
printf("f=%6.4f\n", f);//输出6列,小数点后4位,结果 f=3.1416
printf("x=%lf\n", x);//输出长浮点数 x=0.123457
printf("x=%18.16lf\n", x);//输出18列,小数点后16位,x=0.1234567891234568
printf("c=%c\n", c); //输出字符 c=A
printf("c=%x\n", c);//以十六进制输出字符的ASCII码 c=41
printf("s[]=%s\n", s);//输出数组字符串s[]=Hello,World
printf("s[]=%.9s\n", s);//输出最多9个字符的字符串 s[]=Hello,Wor
return 0;
}