猫儿恋上鱼 发表于 2020-12-16 10:23:35

大佬们萌新求救一道带参数main函数的题实在看不懂

请编写一个程序:把程序build后生成的可执行文件(假设文件名为mycal.exe)放到C盘根目录下,在命令行提示符下,转到c:\下
,键入mycal100+200 运行的结果为 300.00;键入mycal100*200 运行的结果为20000.00 等。
程序中的运算符与C语言中的运算符在字符上保持一致。计算结果保留小数点后两位有效数字。


本程序的源文件包含两个,1个是main函数所在的源文件main.c,另一个是对一个字符串进行解析的函数的定义源文件myfun.c,你只需要在理解main.c中代码的基础上,在右侧代码区给定的地方完成myfun.c中的代码即可(你也可以删除已有代码,按照你的思路从零开始)。main.c的代码如下:

#include<stdio.h>
void processUserInputStr(char* s);
int main(int argc,char* argv[])
{
    processUserInputStr(argv);
    return 0;
}
开始你的任务吧,祝你成功!


#include<string.h>
#include <stdlib.h>
//s:一个形如a[运算符]b的字符串,例如:4.5+9,6-9,4/5,8*7...
//该函数经过处理,输出数的运算结果,例如若s为"20.3+1",则该函数在屏幕上输出21.30(保留小数点后面2位有效数字
//此函数内部操作的基本算法为:
//第1步:找到运算符对应的位置索引
//第2步:根据运算符位置,将其前面的字符串复制到strA,后面的字符串复制到strB
//第3步:将strA,strB转换为数值(使用函数atof,具体用法请百度)a,b
//第4步:根据运算符,对a,b进行相应的运算
//第5步:输出运算结果result
voidprocessUserInputStr(char* s)
{
        int len=strlen(s); //s中有效字符的个数
    //strA,strB分别用于存放两个操作数对应的字符串
    char strA,strB;
    //a,b分别用于存放将字符串转换后的数,result用于保存运算结果
    double a,b,result;
    char op;//用于存储s中的运算符对应的字符串
    int k,posOp;//posOp:符号的位置索引
    /**********begin**********/
   
   
    /**********end**********/
}


感觉真不怎么看得懂,哪位大佬愿意出来为小弟指点迷津啊

jackz007 发表于 2020-12-16 11:03:36

本帖最后由 jackz007 于 2020-12-16 11:12 编辑

    /**********begin**********/
      int i , j                                                                                             ;
      for(i = 0 ; i < len && s != '+' && s != '-' && s != '*' && s != '/'; i ++) strA = s ;
      strA = '\0'                                                                                        ;
      if(i < len) {
                op = s                                                                                  ;
                for(j = 0 ; i < len ; i ++ , j ++) strB = s                                             ;
                strB = '\0'                                                                              ;
                a = atof(strA)                                                                              ;
                b = atof(strB)                                                                              ;
                switch(op) {
                        case '+' : result = a + b ; break                                                   ;
                        case '-' : result = a - b ; break                                                   ;
                        case '*' : result = a * b ; break                                                   ;
                        case '/' : result = a / b ; break                                                   ;
                }
                printf("%.2f\n" , result)                                                                     ;
      } else {
                fprintf(stderr , "expression error !\n")                                                      ;
      }               
    /**********end**********/

猫儿恋上鱼 发表于 2020-12-16 16:36:01

jackz007 发表于 2020-12-16 11:03


好的解决了感谢大佬帮忙{:5_92:}

jackz007 发表于 2020-12-16 16:39:11

猫儿恋上鱼 发表于 2020-12-16 16:36
好的解决了感谢大佬帮忙

      兄弟客气了!{:5_109:}
页: [1]
查看完整版本: 大佬们萌新求救一道带参数main函数的题实在看不懂