
洛谷题目难度都是假的读入第一个用string读判断是否是a,b,c,不是就用进制转换转成十进制数位数负数的负号也算一个0也算一位特判或用dowhile下面是代码没有写成子程序所以代码有重复之处不要嫌长#includeiostream#includestring#includecmathusingnamespacestd;intt;string last ;//存储上一个运算符号intmain(){cint;while(t--){string x;inta,b;cinx;//用字符串先读第一个if(xa||xb||xc){//是运算符号cinab;//正常读入}else{for(inti0;ix.size();i)a(x[i]-48)*pow(10,x.size()-i-1);// 变成数字 根据位数来算该数字是个十百···位cinb;//读入第二个数字xlast;//取出上一个运算符号}lastx;//更新if(xa){coutababendl;intsum0;intcab//必须写在前面不然都是0。下同do{//使得即使是0sum也先加上1下同sum;a/10;}while(a);sum1;//运算符号算一位do{sum;b/10;}while(b);sum1;//等于号do{sum;c/10;}while(c);coutsumendl;}elseif(xb){couta-ba-bendl;intsum0;intca-b;if(c0)sum1;//处理负号do{sum;a/10;}while(a);sum1;do{sum;b/10;}while(b);sum1;do{sum;c/10;}while(c);coutsumendl;}elseif(xc){couta*ba*bendl;intsum0;intca*b;do{sum;a/10;}while(a);sum1;do{sum;b/10;}while(b);sum1;do{sum;c/10;}while(c);coutsumendl;}}return0;}