思路:分别考虑以运算符或数字开头,为运算符,直接读入后面两个数字;为数字,在读入一个数字即可
代码:
#include<iostream>
#include<cstring>
#include <cstdio>
using namespace std;
int main()
{
int N;
cin >> N;
char c[10], str[55],f;
while (N--)
{
cin >> c;
int a, b;
if (c[0] == 'a' || c[0] == 'b' || c[0] == 'c')//是计算符
{
f = c[0];
cin >> a >> b;
}
else {
sscanf_s(c, "%d", &a);//是数字就将第一个转为数字存储
cin >> b;
}
memset(str, 0, sizeof(str));//清空原有的字符串,防止长度判断错误
if (f=='a')
{
sprintf_s(str, "%d+%d=%d", a, b, a + b);
}
else if (f=='b')
{
sprintf_s(str, "%d-%d=%d", a, b, a - b);
}
else if (f == 'c')
{
sprintf_s(str, "%d*%d=%d", a, b, a * b);
}
cout << str << endl << strlen(str) << endl;//输出字符串和字符串长度
}
return 0;
}
总结:
利用好sscanf_s(c, "%d", &a);//是数字就将第一个转为数字存储,
memset(str, 0, sizeof(str));//清空原有的字符串,防止长度判断错误
标签:练习题,P1957,数字,int,cin,day14,sprintf,str,include From: https://blog.csdn.net/remaker15/article/details/140330737