输入:
用逗号分隔的整数序列,及其运算符和等号
输出:
最大数 op 最小数=结果
说明:本题目应该可以不使用数组就可以完成,关键是如何处理负数和减法。
#include<stdio.h>
int main(){
int min=100,max=-100,temp=1,calc;char c,d;
do{
c=getchar();
if( c <= 57 && c >= 48 ){//扫描到一个数字
temp *= (c-48);
do{
d=getchar();
if(d >= 48 && d <= 57){//其后又一个数字
temp = 10*temp + d-48;
}else if(44 == d){
break;
}
}while(1);
if(temp<min){
min=temp;
}
if(temp>max){
max=temp;
}
temp=1;
}else if(c==42||c==43||47==c||37==c){
break;
}else if(45==c){
d=getchar();
if(d >= 48 && d <= 57){//负号后有数字
temp=0-d+48;
do{
d=getchar();//扫描到其后有数字
if(d >= 48 && d <= 57){
temp = 10*temp - d+48;
}else if(44 == d){
break;
}
}while(1);
if(temp<min){
min=temp;
}
if(temp>max){
max=temp;
}
temp=1;
}else{
break;
}
}
}while(1);
if(max < 0){
printf("(%d) %c (%d) = ",max,c,min);
}
if(min >= 0){
printf("%d %c %d = ",max,c,min);
}
if(max >= 0 && min < 0){
printf("%d %c (%d) = ",max,c,min);
}
switch(c){
case 45:calc=max - min;break;
case 47:calc=max / min;break;
case 43:calc=max + min;break;
case 42:calc=max * min;break;
case 37:calc=max % min;break;
}
printf("%d\n",calc);
return 0;
}