C++ 90分求助
查看原帖
C++ 90分求助
823248
Pusder楼主2022/11/6 23:39

想到原因可能是有几行输入是

a 11 22

1 123

然后就想不到怎么处理输入两个数时第一个数只有一位的情况了

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int weishu(int i)//位数
{
    int k=0,m=i;
	if(i==0) return 1;
    for(;i!=0;k++)
    {
        i/=10;
    }
	if(m<0) {return (k+1);}
    else return k;
}
int main()
{
	int n;
	cin>>n;
	char aaa[n];
    int bbb[n][2];
	for(int i=0;i<n;i++)
	{
		cin>>aaa[i];
		if(aaa[i]=='a'||aaa[i]=='b'||aaa[i]=='c')
		{
			cin>>bbb[i][0]>>bbb[i][1];
		}
		else
		{
			cin>>bbb[i][0]>>bbb[i][1];
			bbb[i][0]+=(aaa[i]-48)*pow(10,weishu(bbb[i][0]));//aaa[i]-48是因为a码里面0对应48
			aaa[i]=aaa[i-1];
		}
	}
	for(int i=0;i<n;i++)
	{
		switch (aaa[i])
		{
		case 'a':
			cout<<bbb[i][0]<<"+"<<bbb[i][1]<<"="<<bbb[i][0]+bbb[i][1]<<endl;
			cout<<weishu(bbb[i][0])+weishu(bbb[i][1])+weishu(bbb[i][0]+bbb[i][1])+2<<endl;
			break;
		case 'b':
			cout<<bbb[i][0]<<"-"<<bbb[i][1]<<"="<<bbb[i][0]-bbb[i][1]<<endl;
			cout<<weishu(bbb[i][0])+weishu(bbb[i][1])+weishu(bbb[i][0]-bbb[i][1])+2<<endl;
			break;
		default:
			cout<<bbb[i][0]<<"*"<<bbb[i][1]<<"="<<bbb[i][0]*bbb[i][1]<<endl;
			cout<<weishu(bbb[i][0])+weishu(bbb[i][1])+weishu(bbb[i][0]*bbb[i][1])+2<<endl;
			break;
		}
	}
	system("pause");
	return 0;
}
2022/11/6 23:39
加载中...