题目链接:
在每一行,因为不确定第一个输入数据的类型,所以要用字符串输入。
值得注意的是,\(\sf sprintf\)的函数原型为
int sprintf(char *buffer, const char *format [, argument] … );
,其第一个参数是char*类型,因此在使用\(\sf sprintf\)时一般使用字符串数组char str[]而不用\(\sf string\)。
补充:const char* 转换成char*
有时我们需要把string类型的字符串转换成char*,但是string.c_str()等到的结果是const char*类型而不是char*类型,转换方法就是先把string转换成const char*,然后用sprintf把const char*转换成char*
示例:
string str;
char* strchar;
const char* strC = str.c_str();
sprintf(strchar,"%s",str.c_str());
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, x, y;
cin >> n;
while (n--) {
char s[6], p[100]; char k;
cin >> s;
if (isalpha(s[0])) {
k = s[0];
cin >> x >> y;
}
else {
x = atoi(s);
cin >> y;
}
if (k == 'a') sprintf(p, "%d+%d=%d", x, y, x + y);
else if (k == 'b') sprintf(p, "%d-%d=%d", x, y, x - y);
else sprintf(p, "%d*%d=%d", x, y, x * y);
cout << p << "\n" << strlen(p) << "\n";
}
return 0;
}
x = atoi(s)可用sscanf(s, "%d", &x)替代。