P1957 口算练习题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1957
//#include<iostream>
#include<bits/stdc++.h>
//#include<cstdio>
//#include<cstring>
using namespace std;
int main(){
//sync_with_stdio(false);
int n,a,b,c;
char last,ans[20],s[20];
scanf("%d\n",&n);
while(n--){
//像数组一样,覆盖
fgets(ans,sizeof(ans),stdin);
if(ans[0]=='a'||ans[0]=='b'||ans[0]=='c'){
last=ans[0];ans[0]=' ';
}
//char数组 ' '
//sscanf 读到空格重新读入 空格前为一个int
sscanf(ans,"%d%d",&a,&b);
switch(last){
case 'a': c=a+b;sprintf(s,"%d+%d=%d",a,b,c);break;
case 'b': c=a-b;sprintf(s,"%d-%d=%d",a,b,c);break;
case 'c': c=a*b;sprintf(s,"%d*%d=%d",a,b,c);break;
}
printf("%s\n%d\n",s,strlen(s));
}
return 0;
}
知识点:
1.当元素在字符串(char类型)中,用sscanf(字符串名,"% ",&a); 将字符串中的一个元素,输入到变量a中,忽略空格;
2.用sprintf(字符串名,"% ",a);将变量a的值输入到字符串中;
3.循环中,每次输入新的字符串元素,都会覆盖
4.strlen(字符串名) 字符串的长度
5.当需输入标志,如果下次不输入标志时,按上个标志运算,可以用一个变量last,用if判断;
6.需读入一行字符串,连空格也存入,用fgets(s,sizeof(s),stdin);