那两个小朋友在不断进步,他们已经学会了负数和多位数,于是他们又开始进行游戏了。小明给出一堆整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小

 

输入:
    用逗号分隔的整数序列,及其运算符和等号

输出:
    最大数 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;
}

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值