题解 | #实现简单计算器功能#
实现简单计算器功能
https://www.nowcoder.com/practice/e7c08272a4b7497fb990ce7abb1ee952
#include <iostream> #include <string.h> using namespace std; void cal_func(int i, int a, int b) { // cout <<"a:"<<a << endl; // cout <<"i:"<<i << endl; // cout <<"b:"<<b << endl; switch (i) { case 0: { cout << a + b << endl; break; } case 1: { cout << a - b << endl; break; } case 2: { cout << a * b << endl; break; } case 3: { if (b != 0) { cout << a / b << endl; } else { cout << "Error" << endl; } break; } default: break; } } int findFunc(const char** src, const char* find) { // cout<<"&src:"<<src<<endl; int count = 0; for (int i = 0; i < 4; ++i) { for (int j = 0; j < 3; j++) { // cout<<"find[i]:"<<find[j]<<endl; // cout<<"src[i][j]:"<<src[i][j]<<endl; if ((char)toupper(src[i][j]) == (char)toupper(find[j]) || (char)tolower(src[i][j]) == (char)tolower(find[j]) || (char)toupper(src[i][j]) == (char)tolower(find[j]) || (char)tolower(src[i][j]) == (char)toupper(find[j])) { if(count != 0) {count++;} if(j == 0) {count++;} // cout<<"cout:"<<count<<endl; } } if (count == 3) return i; // if(!strcmp(src[i],find)) // return i; } return 4; } int main() { char str[100] = { 0 }; cin.getline(str, sizeof(str)); // write your code here...... const char* pf[] = {"add", "sub", "mul", "div"}; char func[4] = {0};//要初始化数组空间,规定好数组的长度 // char num1[3] = {0}; // char num2[3] = {0}; char* ps = str; // char *pnum1 = num1; // char *pnum2 = num2; int count = 0; // 标记是否找到第一个数字sub int num1 = 0, num2 = 0; // 提取操作符和数字 sscanf(str, "%s %d %d", func, &num1, &num2); // 输出提取的操作符和数字 // cout << "Operation: " << func << endl; // cout << "Number 1: " << num1 << endl; // cout << "Number 2: " << num2 << endl; cal_func(findFunc(pf, func), num1, num2); // for(int i=0;i < strlen(str)+1;i++){ // if(isalpha(ps[i])){ // func[i] =ps[i]; // }else if(isdigit(ps[i])){ // if(count == 0){ // *pnum1 = ps[i]; // pnum1++; // count = i; // } // if(count + 1 == i){ // *pnum1 = ps[i]; // pnum1++; // } // } // } // for(int i=count;i < strlen(str)+1;i++){ // *pnum2 = ps[i]; // pnum2++; // } // for(int i=0;i<3;i++){ // cout<<func[i]; // } // cout<<endl; // for(int i=0;i<3;i++){ // cout<<num1[i]; // } // cout<<endl; // for(int i=0;i<3;i++){ // cout<<num2[i]; // } // cout<<endl; // cout<<"atoi(num1):"<<atoi(num1)<<endl; // cout<<"atoi(num2):"<<atoi(num2)<<endl; // cal_func(findFunc(pf,func),num1,num2); return 0; }