C primer plus (第六版)第十一章 编程练习第14题
题目:
14.编写⼀个通过命令⾏运⾏的程序计算幂。第1个命令⾏参数是double类型的数,作为幂的底数,第2个参数是整数,作为幂的指数。
思路:
1. 利用atof()函数把argv[1]字符串转为double类型底数;
2. 利用atoi()函数把argv[2]字符串转为int类型整数(假定为正整数);
3. 加入if判断带程序名是否输入3个字符串,底数是否是浮点数,次幂数输入是否正确(浮点数
的次幂数貌似只取整数部分);
4. 结果计算用for循环累乘计算;
程序:
/*--------------------------------------------------------------------------------
题目:
14.编写⼀个通过命令⾏运⾏的程序计算幂。第1个命令⾏参数是double类型的数,作为幂的底数,
第2个参数是整数,作为幂的指数。
--------------------------------------------------------------------------------
思路:
1. 利用atof()函数把argv[1]字符串转为double类型底数;
2. 利用atoi()函数把argv[2]字符串转为int类型整数(假定为正整数);
3. 加入if判断带程序名是否输入3个字符串,底数是否是浮点数,次幂数输入是否正确(浮点数
的次幂数貌似只取整数部分);
4. 结果计算用for循环累乘计算;
--------------------------------------------------------------------------------*/#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{double base_num; //底数unsigned int pow_num; //次幂数double result = 1.0; //计算结果if( argc = 3 && (base_num = atof(argv[1])) && (pow_num = atoi(argv[2]))){for (int i = 0; i < pow_num; i++)result = result * base_num;printf("%lf pow %d = %lf", base_num, pow_num, result); //打印结果}else{printf("There are something wrong.\n");}printf("\nbase number =%s",argv[1]); //测试用printf("\npow number =%s",argv[2]); //测试用return 0;
}运行:
和13题类似,需要修改exe文件名,并在文件夹内打开shell终端,然后命令行运行程序,例如程序名称pow,计算1.2底数3次幂:

