题解 | #实现简单计算器功能#
实现简单计算器功能
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;
}
格力公司福利 354人发布