那两个小朋友在不断进步,他们已经学会了负数和多位数,于是他们又开始进行游戏了。小明给出一堆整数和运算要求(+、-、*、/、%),小丽要找出这些整数中的最大值和最小值,然后按照小明的要求算出最大数与最小数进行算术运算的结果。
输入:
用逗号分隔的整数序列,及其运算符和等号
输出:
最大数 op 最小数=结果
说明:本题目应该可以不使用数组就可以完成,关键是如何处理负数和减法。
本题主要是有自己的一个大体思路,如何处理输入的逗号和负数是一个难点
#include <stdio.h>
#include <math.h>
#define Max 10
void my_print(int max, int min, char op)
{
int number = 0;
switch (op)
{
case '+':
number = max + min;
break;
case '-':
number = max - min;
break;
case '/':
number = max / min;
break;
case '*':
number = max * min;
break;
case '%':
number = max % min;
break;
}
if (max < 0)
{
printf("(%d) %c (%d) = %d\n", max, op,min, number);
}
else if (max>=0&&min<0)
{
printf("%d %c (%d) = %d\n", max,op, min, number);
}
else
{
printf("%d %c %d = %d\n", max,op, min, number);
}
}
int main()
{
char ch;//一个一个输入字符
char buf[Max] = { 0 };
int max = 0;
int min = 0;
int num = 0;
int i = 0;
int flag = 0;
char op;
while ((ch = getchar())!='=')
{
if (ch == ',')
{
if ((i==1)&&(!(buf[0] >= '0' && buf[0] <= '9')))
{
op = buf[0];
break;
}
if (buf[0] == '-')
{
for (int j = 1; j < i; j++)
{
num += (buf[j] - '0') * pow(10, i - j-1);
}
num = - num;
}
else
{
for (int j = 0; j < i; j++)
{
num += (buf[j] - '0') * pow(10, i - j-1);
}
}
if (!flag)
{
max = num;
min = num;
flag++;
}
max= max>num ? max : num;
min= min<num ? min : num;
memset(buf, 0, Max);
i = 0;
num = 0;
}
else
{
buf[i] = ch;
i++;
}
}
my_print(max, min, op);
return 0;
}