首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

计算乘幂的代码有点小疑点

2012-10-20 
计算乘幂的代码有点小问题C/C++ code#include stdio.h#include stdlib.hint main(int argc,char *argv

计算乘幂的代码有点小问题

C/C++ code
#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;}

编译后文件名为lianxi13.exe  
如果只输入lianxi13 按回车,系统弹出错误信息的对话框。
按照我的想法,应该会先显示Error is command line,然后退出,怎么回事?

[解决办法]
可如下修改:
C/C++ code
#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]指向了不存在的地方,数组超界

热点排行