题目:P1957 口算练习题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<bits/stdc++.h>
//#define int long long
#define PII pair<int,int>
#define endl '\n'
using namespace std;
//const int prime[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
signed main(){
std::ios::sync_with_stdio(false);
std::cin.tie(NULL);
int n,c,d; //c d为数字
cin>>n;
char a; //存储运算符
char b[10];
char s[100]; //存储最终字符串
for(int i=1;i<=n;i++){
cin>>b;
if(b[0]>='a'&&b[0]<='z'){
a=b[0];
cin>>c>>d;
}else{
sscanf(b,"%d",&c); //将b数组的首位解析成int存储在c中
cin>>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);
cout<<s<<endl<<strlen(s)<<endl;
}
return 0;
}
从这道题学到的:
- 如何输出不规律的数(一会输出一会不输出)
- sscanf()函数的应用,例如:
char str[20]; sscanf("Hello, World!", "%s", str);
将字符串"Hello, World!"解析为字符串,并将结果存储在字符数组
str
中。 - 清空字符串,防止长度判断出错
memset(s,0,sizeof(s));
- sprintf()函数的应用:例如:
char str[20]; char s1={'A','B','C'}; char s2={'T','Y','x'}; sprintf(str,"%.3s%.3s",s1,s2);
将多个字符串连接成字符串