全wa,求大佬解答

P1957 口算练习题

@[PleasantGoat17](/user/1154492) ~~求关注இ௰இ~~ ```cpp #include <bits/stdc++.h> using namespace std; char a; int n,c,d; char s[1005]; char b[105]; int main() { cin >> n; for(int i = 0 ; i < n ; ++i) { cin >> b; if(b[0] >= 'a' && b[0] <= 'z') { a = b[0]; cin >> c >> d; } else { sscanf(b,"%d",&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; cout << strlen(s) << endl; } return 0; } ```
by quxiangyu @ 2024-03-13 20:30:58


@[quxiangyu](/user/1241537) 谢谢,这是我改进后的代码,全AC了,我想知道为什么原来会全WA ```cpp #include<cstdio> #include<iostream> #include<cctype> #include<cstring> using namespace std; int main() { int n; cin >> n; char s[10]; int a,b; char ans[100]; char optr; for(int i=0;i<n;i++) { cin >> s; if(isalpha(s[0])){ optr = s[0]; cin >> a >> b; } else{ sscanf(s,"%d",&a); cin >> b; } switch (optr) { case 'a': sprintf(ans,"%d+%d=%d",a,b,a+b); break; case 'b': sprintf(ans,"%d-%d=%d",a,b,a-b); break; case 'c': sprintf(ans,"%d*%d=%d",a,b,a*b); break; case 'd': sprintf(ans,"%d/%d=%d",a,b,a/b); break; default: break; } cout << ans << endl << strlen(ans) << endl; } } ```
by PleasantGoat17 @ 2024-03-13 20:35:57


|