#include <stdio.h>
#include <math.h>
int main()
{
float x, rst;
scanf("%f", &x);
if (x < 0)
rst = x * x + 1;
else if (x >= 0 && x < 5)
rst = sqrt(3 * x + 1);
else
rst = log(x);
printf("%f", rst);
}
用scanf可以一次读入多个类型不同的变量,只要输入的各项之间用空格分隔即可。
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
int n; char c; float f;
scanf("%d%c%f",&n,&c,&f); //依次输入一个整数,一个字符, 再一个小数,则它们会被分别放入n,c,m; &n代表“取n的地址” ; %c表示等待输入一个字符;%f表示等待输入一个float小数
printf("%d %c %f",n,c,f); //%f用于输出double或float类型的值,默认保留小数点后面6位
return 0;
}
输入字符类型数据时(%c),不会跳过空格(空格也会被当作字符读入),输入其他类型的数据时,会跳过空格。
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n; char c; float f;
scanf("%d%c%f",&n,&c,&f);
printf("%d %c %f",n,c,f);
return 0;
}
%c不会跳过空格,此时他会读入一个空格到c中,再读入f时,对应输入是’k’,导致出错。