两个一年级小朋友在一起玩游戏,小明给出一堆一位的正整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。
输入:
用逗号分隔的一位正整数序列,及其运算符和等号
输出:
最大数 op 最小数=结果
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
测试用例 2 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
测试用例 3 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
本题关键在于读取和处理数据,数据的个数不定,且还输入了字符。
#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;
}