计算乘幂的代码有点小问题
#include <stdio.h>#include <stdlib.h>int main(int argc,char *argv[]){ double x = atof(argv[1]); int y = atoi(argv[2]); double z = 1; int k; if(argc == 1) { puts("Error is command line"); exit(EXIT_FAILURE); } else if(y > 0) { for(k = 0;k < y;k++) z *= x; } else if(y < 0) { for(k = y;k < 0;k++) z *= x; z = 1/z; } else if(x != 0) z = 1; else z = 1/x; //0的0次方无意义 printf("%g^%d=%g\n",x,y,z); return 0;}
#include <stdio.h>#include <stdlib.h>int main(int argc,char *argv[]){ if(argc < 3)//if(argc == 1) { //puts("Error is command line"); puts("Error in command line\nUsage: lianxi13 <data1> <data2>\n"); exit(EXIT_FAILURE); } else { double x = atof(argv[1]); int y = atoi(argv[2]); double z = 1; int k; if(y > 0) { for(k = 0;k < y;k++) z *= x; } else if(y < 0) { for(k = y;k < 0;k++) z *= x; z = 1/z; } else if(x != 0) z = 1; else z = 1/x; //0的0次方无意义 printf("%g^%d=%g\n",x,y,z); } return 0;}
[解决办法]
double x = atof(argv[1]);
* int y = atoi(argv[2]);
double z = 1;
int k;
if(argc == 1)
{
* puts("Error is command line");
还没判断就先用了argv[2]指向了不存在的地方,数组超界