【小学】三做一年级算术题

【小学】三做一年级算术题

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

输入:

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

输出:

最大数 op 最小数=结果

样例:

序号测试输入期待的输出额外进程
15,1,1,a,b,2,0,3,+,=5,1,1,a,b,2,0,3,+,=↵5+0=5↵0
2精工书院1,5,2,0,/,=↵Error!↵0
3北理1,7,2,2,5,3,/,=↵7/1=7↵0

思路

第一想法是先将整行输入为一个字符串,再通过循环提取其中的数字和运算符,然后对数字排序,最后按运算符分类输出计算结果

但再次思考就会发现,其实完全可以在输入时就通过循环直接提取其中的数字和运算符

流程图

在这里插入图片描述

代码

int main ()
{
	char dig[10]={0},x,op;
	int len=0,M=0,m=10;
	do
	{
		x=getchar();
		if(x<='9'&&x>='0') dig[len++] = x-'0';
		else if(x=='+'||x=='-'||x=='*'||x=='/'||x=='%') op = x;
	}
	while(x!='\n');
	for(len--;len>=0;len--)
	{
		M=M<dig[len]?dig[len]:M;
		m=m>dig[len]?dig[len]:m;
	}
	switch(op)
	{
		case '+':printf("%d+%d=%d\n",M,m,M+m);break;
		case '-':printf("%d-%d=%d\n",M,m,M-m);break;
		case '*':printf("%d*%d=%d\n",M,m,M*m);break;
		case '/':if(m==0) printf("Error!\n");else printf("%d/%d=%d\n",M,m,M/m);break;
		case '%':if(m==0) printf("Error!\n");else printf("%d%%%d=%d\n",M,m,M%m);break;
	}
	
} 
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值