题目链接地址:
九度OJ-题目1514:数值的整数次方
题目描述:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
输入:
输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,表示测试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中间用一个空格隔开。
输出:
对应每个测试案例,
输出一个浮点数代表答案,保留两位小数即可。
样例输入:
5
1.0 10
0.0 -5
1.0 0
1.2 5
2.0 -1
样例输出:
1.00e+00f
INF
1.00e+00f
2.49e+00f
5.00e-01f
解题思路:
这道题我是直接调用系统自带的pow函数做的,需要注意的是对于不同的编译器,科学计数法格式中的指数位数不相同。图1是测试用例在我的机器上运行所得的结果。
图1 测试用例在本机运行的结果
AC代码如下:
#include<stdio.h> #include<math.h> #include<float.h> /** * 求浮点数的整数次幂 * @param base 浮点数 * @param exponent 整数次幂 * @return void */ void doublePower(double base,int exponent) { double result; result = pow(base,exponent); if(result > DBL_MAX) // 表示结果大于double的最大值 则输出INF { printf("INF\n"); } else { // 按照指数格式输出浮点数,底数保留两位 // 注意不同的编译器对于科学计数法格式输出中指数位数的差别 printf("%.2lef\n",result); } } int main() { int T; double base; int exponent; scanf("%d",&T); while(T--) { scanf("%lf%d",&base,&exponent); doublePower(base,exponent); } return 0; } /************************************************************** Problem: 1514 User: blueshell Language: C Result: Accepted Time:80 ms Memory:1004 kb ****************************************************************/