|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请编写一个程序:把程序build后生成的可执行文件(假设文件名为mycal.exe)放到C盘根目录下,在命令行提示符下,转到c:\下
,键入mycal 100+200 运行的结果为 300.00;键入mycal 100*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[1]);
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
void processUserInputStr(char* s)
{
int len=strlen(s); //s中有效字符的个数
//strA,strB分别用于存放两个操作数对应的字符串
char strA[100],strB[100];
//a,b分别用于存放将字符串转换后的数,result用于保存运算结果
double a,b,result;
char op;//用于存储s中的运算符对应的字符串
int k,posOp;//posOp:符号的位置索引
/**********begin**********/
/**********end**********/
}
感觉真不怎么看得懂,哪位大佬愿意出来为小弟指点迷津啊
本帖最后由 jackz007 于 2020-12-16 11:12 编辑
- /**********begin**********/
- int i , j ;
- for(i = 0 ; i < len && s[i] != '+' && s[i] != '-' && s[i] != '*' && s[i] != '/'; i ++) strA[i] = s[i] ;
- strA[i] = '\0' ;
- if(i < len) {
- op = s[i ++] ;
- for(j = 0 ; i < len ; i ++ , j ++) strB[j] = s[i] ;
- strB[j] = '\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**********/
复制代码
|
|