乐学三做一年级算术题

 两个一年级小朋友在一起玩游戏,小明给出一堆一位的正整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。

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

输出:
    最大数 op 最小数=结果

测试输入期待的输出时间限制内存限制额外进程
测试用例 1以文本方式显示
  1. 5,1,1,2,0,3,+,=↵
以文本方式显示
  1. 5+0=5↵
1秒64M0
测试用例 2以文本方式显示
  1. 1,5,2,0,/,=↵
以文本方式显示
  1. Error!↵
1秒64M0
测试用例 3以文本方式显示
  1. 1,7,2,2,5,3,/,=↵
以文本方式显示
  1. 7/1=7↵
1秒64M0

本题关键在于读取和处理数据,数据的个数不定,且还输入了字符。

#include <stdio.h>
#include <stdlib.h>

int main()
{
	char a[10]={0},x,op;    //op用来储存符号 
	int m=0,n=9,lgth=0;     //lgth用来统计输入的数据的个数 
	do
	{x=getchar();            //用getchar来抓取确定数据个数和运算符号 
	if(x>='0'&&x<='9')
	  a[++lgth]=x-'0';
	else if((x=='+')|(x=='-')|(x=='*')|(x=='/')|(x=='%'))
	  op=x;
	}
	while(x!='=');
	for(lgth;lgth>0;lgth--)     //比较出最大值最小值 
	{m=m>=a[lgth]?m:a[lgth];
	n=n<=a[lgth]?n:a[lgth];
	}
	if(n==0&&((op=='/')|(op=='%')))  //注意特殊情况0不能当分母 
	{printf("Error!\n");
	}
	else
	{switch(op)
	{case'+':printf("%d+%d=%d\n",m,n,m+n);break;
	 case'-':printf("%d-%d=%d\n",m,n,m-n);break;
	 case'*':printf("%d*%d=%d\n",m,n,m*n);break;
	 case'/':printf("%d/%d=%d\n",m,n,m/n);break;
	 case'%':printf("%d%%%d=%d\n",m,n,m%n);break;
	}
    }
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值