二年级小学生的题目

来源:互联网 发布:vscode怎么移除文件夹 编辑:程序博客网 时间:2024/04/19 08:58

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

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

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

 测试输入关于“测试输入”的帮助期待的输出关于“期待的输出”的帮助时间限制关于“时间限制”的帮助内存限制关于“内存限制”的帮助额外进程关于“{$a} 个额外进程”的帮助测试用例 1以文本方式显示
  1. 1,2,3,4,5,+,=↵
以文本方式显示
  1. 5+1=6↵
无限制61440KB0测试用例 6以文本方式显示
  1. 1,0,/,=↵
以文本方式显示
  1. Error!↵
无限制10240KB0测试用例 7以文本方式显示
  1. 0,0,0,0,0,%,=↵
以文本方式显示
  1. Error!↵
无限制10240KB0测试用例 8以文本方式显示
  1. 10,2,3,6,76,88,88,99,10,*,=↵
以文本方式显示
  1. 99*2=198↵
无限制64M0测试用例 9以文本方式显示
  1. 10,20,30,60,76,80,80,99,*,=↵
以文本方式显示
  1. 99*10=990↵
无限制64M0
思路: 我的基本做法是将输入作为一整个字符串输入,然后一遍循环进行遍历,如果碰到数字,则存到新开辟的数组中去;如果碰到',',则存储数字的数组下标加1,以准备存取下一个数;否则碰到的一定是运算符,此时,可以找出数组中最大和最小的数,然后做运算,代码如下:

#include<stdio.h>#include<string.h>int main(){int a[50]={0},i=0,j=0,k,max,min;char s[100];scanf("%s",s);while(1){if(s[i]>='0'&&s[i]<='9'){a[j] = 10*a[j] + s[i]-'0';  }else if(s[i]==','){j++;}else{max = min = a[0];for(k=1;k<j;k++){if(a[k]>max)max = a[k];if(a[k]<min)min = a[k];}switch(s[i]){case '+':printf("%d+%d=%d\n",max,min,max+min);break;case '-':printf("%d-%d=%d\n",max,min,max-min);break;case '*':printf("%d*%d=%d\n",max,min,max*min);break;case '/':if(min==0)printf("Error!\n");elseprintf("%d/%d=%d\n",max,min,max/min);break;case '%':if(min==0)printf("Error!\n");elseprintf("%d/%d=%d\n",max,min,max/min);break;}break;}i++;}}


原创粉丝点击