an_xi @ 2021-12-20 17:43:32
不加个输入,输入n时就会先完成一次不明所以的循环。
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 20
using namespace std;
int main(){
int n,a,b,c;
char x[maxn],y[maxn],m;
cin>>n;
fgets(x,sizeof(x),stdin);
while(n--){
fgets(x,sizeof(x),stdin);
if(x[0]=='a'||x[0]=='b'||x[0]=='c'){
m=x[0];
x[0]=' ';
}
sscanf(x,"%d %d",&a,&b);
switch(m){
case'a':c=a+b;
sprintf(y,"%d+%d=%d",a,b,c);
break;
case'b':c=a-b;
sprintf(y,"%d-%d=%d",a,b,c);
break;
case'c':c=a*b;
sprintf(y,"%d*%d=%d",a,b,c);
break;
}
printf("%s\n",y);
printf("%d",strlen(y));
if(n>=1) printf("\n");
}
return 0;
}
by KellyFrog @ 2021-12-20 18:18:32
你可以理解为读完 n 之后读取的指针在 \n,所以会读个空串
by an_xi @ 2021-12-20 18:28:58
@longer_name 所以我在输入后加一个换行就能避免这种情况嘛?
by an_xi @ 2021-12-20 18:38:08
@longer_name 明白了,谢谢dalao。