catof221b @ 2023-02-05 08:40:37
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,a[100][3]={0},b[100][3],w[5]={0};
char f,f2,f3;
scanf("%d",&n);
getchar();
for(int i=0;i<n;i++)
{
if((f=getchar())>='a')
{
f2=f;
scanf("%d%d",&a[i][0],&a[i][1]);
}
else
{
scanf("%d%d",&a[i][0],&a[i][1]);
int temp=a[i][0];
while(a[i][0]/10!=0)
{
w[1]=1;
a[i][0]/=10;
w[1]++;
}
a[i][0]=temp+pow(10,w[1])*(f-'2'+2);
}
getchar();
switch(f2)
{
case 'a':{f3='+';a[i][2]=a[i][0]+a[i][1];}break;
case 'b':{f3='-';a[i][2]=a[i][0]-a[i][1];}break;
case 'c':{f3='*';a[i][2]=a[i][0]*a[i][1];}break;
}
b[i][0]=a[i][0];
b[i][1]=a[i][1];
b[i][2]=a[i][2];
for(int j=0;j<3;j++)
{
w[0]=1;
while(b[i][j]/10!=0)
{
b[i][j]/=10;
w[0]++;
}
w[j+1]=w[0];
}
w[4]=w[1]+w[2]+w[3];
if(a[i][2]<0)
{
w[4]++;
}
printf("%d%c%d=%d\n%d\n",a[i][0],f3,a[i][1],a[i][2],2+w[4]);
}
return 0;
}
by karanoli @ 2023-02-05 09:18:11
就是Linux机和win的换行符的区别,读取f用while就行了
by catof221b @ 2023-02-05 19:08:35
@karanoli 改成while还是一样的结果
while((f=getchar())>='a')
{
f2=f;
scanf("%d%d",&a[i][0],&a[i][1]);
break;
}
if(f<'a')
{
scanf("%d%d",&a[i][0],&a[i][1]);
int temp=a[i][0];
while(a[i][0]/10!=0)
{
w[1]=1;
a[i][0]/=10;
w[1]++;
}
a[i][0]=temp+pow(10,w[1])*(f-'2'+2);
}
by AlexFad @ 2023-04-28 21:07:28
改成这样就行了
scanf("%*[\r\n]%[^\n]",s);