问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

利用MAIN函数的参数设计计算器 (要有加减乘除开方和阶乘)

发布网友 发布时间:2022-07-06 12:41

我来回答

2个回答

热心网友 时间:2023-10-08 17:32

/**

有什么问题,给我发信息

没有考虑一些细节,VC6.0 编译通过

*/

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <math.h>

/*错误时,输出用法 并结束程序 */ 

void usage()

{

 printf("参数错误\n"); 

 printf("命令行计算器\n");

 printf("compute 操作数1 + | - | * | / | # | ! [操作数2]\n");

 exit(-1);     /*结束程序*/ 

}

/*求阶乘*/ 

double factorial(int n)

{

 int i = 1;

 double result = 1.0;

 for(i = 1; i <=n ; i++)

  result *= i;

 return result;

}

/*判断运算符需要的操作数,不合法时返回-1,双目返回2,单目返回1*/ 

int opnum(char op)

{

 int n = -1;

 if(op == '+' || op == '-' || op == '*' || op == '/')

  n = 2;

 else if(op == '#' || op == '!')

  n = 1;

 return n;

}

/*根据字符型的运算符进行相应的运算*/ 

double compute(double num1, char op,double num2)

{

 double result = 0.0;

 switch(op)

 {

  case '+':

   result = num1 + num2;

   break;

  case '-':

   result = num1 - num2;

   break;

  case '*':

   result = num1 * num2;

   break;

  case '/':

    /*除数为0时,输出错误信息并结束程序*/ 

   if(!num2)

   {

    printf("除0错误\n"); 

    exit(-1);    

   }

   result = 1.0 * num1 / num2;

   break;

  case '!':

   

   /*不能求负数的阶乘*/ 

   if(num1 < 0)

   {

    printf("不能求负数的阶乘\n"); 

    exit(-1);    

   }

   result = factorial((int)num1);

   break;

  case '#':

   /*实数范围内,不能求负数的平方根*/ 

   if(num1 < 0)

   {

    printf("实数范围内平方根错误\n"); 

    exit(-1);    

   }

   result = sqrt(num1);

   break;   

 }

 return result;

}

int main(int argc, char* argv[])

{

 

 /*

  argc是命令行参数的个数, argv字符数组存放每个参数

  注意程序名本身也算一个参数,如argv[0] = "compute" 

   

  用法 compute num1 + | - | * | / | # | ! [num2]

  compute 操作数1  + | - | * | / | # | ! 操作数2

  其中

  #表示求平方根,操作数2可省 

     !表示求阶乘,操作数2可省

 */

 

 

  int n = -1;  /*运算符所需操作数个数*/ 

  double result = 0.0; /*结果*/

  

    

  /*至少需要3个参数,否则输出用法并结束程序*/ 

  if(argc < 3)  

   usage();   

  

  /*第3个参数为运算符,不能多于1个字符,此条件可以不用*/    

  if(strlen(argv[2]) > 1)

   usage();

   

  /*求出所需操作数,不合法时为-1 */   

  n = opnum(argv[2][0]);

  

  /*如果操作数< 0说明运算符不合法

   双目运算符时 第4个参数即操作数2不能省

   否则输出用法,并结束程序 

  */ 

  if((n < 0) || (n == 2 && argc < 4)) 

   usage();

   

  /*双目运算符 

   按a + b = c 的形式输出 

  */ 

  if(n == 2)

  {

   result = compute(atof(argv[1]), argv[2][0], atof(argv[3]));

   printf("%s %c %s = %f\n", argv[1], argv[2][0], argv[3], result);

  }

  /*单目运算符 

   按a ! = c 的形式输出 

  */ 

  else 

  {

   result = compute(atof(argv[1]), argv[2][0], 0);

   printf("%s %c = %f\n", argv[1], argv[2][0], result);

  }

  

 return 0;

}

热心网友 时间:2023-10-08 17:32

个人觉得,如果这样的题目,你自己能够通过思考,分析,并开发出来的话,对你的学习帮助特别大。

我想,我应该给你一个思路,其实现都是对基本知识的应用,有思路,就能开发。

我们首先来看看需求:
程序要实现的功能:+ - * / 开方 阶乘
实现方式:main方法,输入参数的方式,形同:java 程序class名 参数1 参数2 ...

设计方案:
因为+ - * / 需要的操作参数相同,所以设计一个进行加减乘除的方法:
double baseCom(String op,double p1,double p2);op为操作符(+-*/),p1 p2为操作数

开方和阶乘可以设计为参数相同的方法:
double advCom(String op,double p1);op为操作符(定义开方的操作符为"!/",阶乘的操作符为"!*"),p1为操作数

主方法接收参数,并根据操作符来选择调用的方法。

该计算器程序的使用:

java Cala + 1 2
java Cala - 2 1
java Cala * 1 2
java Cala / 1 2
java Cala !* 4
java Cala !/ 4

另外,在程序的实现方面,我想,你应该利用网络更进一步。+-*/的实现你在百度里找一找,有很多实现。我记得挺久以前我就帮别人实现过一次,你可以找我的回答记录,希望对你有点帮助,至于阶乘和开方,也有很多实现,阶乘我也实现过。网上的实现也多。

我的建议就是,在你实在没法自己完成的情况下,可以在网上找到这些实现然后一个一个的组合起来,成为你自己的东西,这比别人帮你完全实现来的要好!你更能学到东西。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 利用MAIN函数的参数设计计算器 (要有加减乘除开方 不堪造就的成语意思及歇后语 老道外扒肉馆怎么样 严格要求自己的名人名言 有什么 废话不要!!! 请问海通期货这家公司发展前景怎么样? 有关放低自己的名人名言 海通期货是合法的吗 为什么UFO会频繁出现在各地机场上空?各科学家可以研究一下 从广州白云机场到科学城怎么走 走近科学:关于机场的托运,其实是很庞大的一项工程 求范文《知礼仪、行文明、爱职业、促和谐》。 急求一篇关于“知荣辱、讲道德、促和谐”的宣誓词及感想发言稿! 守法纪 促和谐 作文 怎样做好化肥销售 为什么株冶集团资金大流入流出?株冶集团第一季度业绩?株冶集团同花顺股民圈子? 株冶集团为什么掉了一点?株冶集团历年财报查询?株冶集团出售利好还是利空? 株冶集团为什么跌得这么厉害?株冶集团年报 同花顺?株冶集团股票是哪个好? 女性更年期,怎么改善睡眠? 更年期失眠怎么治疗? 淘宝上是否可以追加评价两次? 有没有能给带参数的公式后,然后给参数值,软件自动计算的软件 首席风险官需不需要经中国证监会批准 洛阳的大河有哪些变化 洛阳的河怎么会变成红色的? 洛阳历史上有涨河被淹过吗 股指期货风险的信用风险 EXCEL 怎么批量转置? 一加3t国内什么时候发布? 问在线客服 1+3T手机买二手多少钱能买下来? 一加手机3T回收多少钱,二手卖多少钱,二手值多少钱 二手一加3T多少钱? 要不要我带你去花果山有明朝话怎么说? 冬天空调有风吗 梦见表妹来我家做客、烧菜给我吃? 奇葩的意思是什么? 用黛色 贮满 匍匐 融融 澹澹 灵秀 终极 芊芊细草 轻飞曼舞 闲情逸致 春华秋实 造句 外地车进北京五环用办理进京证吗? 女孩问我觉得她怎样,我该怎么回答?- 问一问 女生问你觉得她是一个什么样性格的人?得怎么回 一个女孩问你对她的第一印象怎么样,该如何回答?