这题的关键是要认识两个函数sscanf和sprintf都是操作字符串的
sscanf可以把一个字符串的内容转换成别的类型存储在哪个类型的变量里
sscanf(a,b,c)有三个参数(也可理解两个变量),第一个参数是放要被转换的字符串,第二个参数放要转换的类型如int double,第三个是要存放的变量,后面两个的输入格式和正常用scanf一样
sprintf是把一个(格式)字符串存入
sprintf(a,b,c)(也可理解两个变量)也有三个参数,第一个放要存储的地方,第二个和第三个("%d*%d=%d", c, d, c * d)和printf格式差不多,就好像printf是打印到屏幕上sprintf是打印到要储存的地方。
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
#include
#include
int main() {
char a;
char b[10], s[1000];
int n, c, d;
scanf("%d", &n);
//scanf("%s", b);
for (int i = 0; i < n; i++) {
scanf("%s", b);
if (b[0] <= 'c' && b[0] >= 'a') {
a = b[0];
scanf("%d %d", &c, &d);
}
else {
sscanf(b, "%d", &c);
scanf("%d", &d);
}
memset(s, '\0', sizeof(s));
if (a == 'a') {
sprintf(s, "%d+%d=%d", c, d, c + d);
}
else if (a == 'b') {
sprintf(s, "%d-%d=%d", c, d, c - d);
}
else if (a == 'c') {
sprintf(s, "%d*%d=%d", c, d, c * d);
}
printf("%s\n", s);
printf("%d\n", strlen(s));
}
return 0;
}