Problem A: 只有一个二元运算符的表达式运算
Time Limit: 1 Sec Memory Limit: 2 MB Submit: 5044 Solved: 1937 [Submit][Status][Web Board]
Description
编程序读入并计算只有一个二元运算符的表达式的值。用到的二元运算符有:“+”、“-”、“*”、“/”、“%”,与C语言的语法一致。
Input
每行输入一个表达式,格式为:二个整型的操作数a和b,中间用一个符号分开,这个符号就是运算符。测试样例不存在除数为0的情况。 输入以a和b为0,且用一个空格分开结束。
Output
每行对应输入的运算符为“+”、“-”、“*”、“/”、“%”,则计算a+b、a-b、a*b、a/b、a%b的值;否则输出“invalid op”。
Sample Input
33+5 8*9 2.2 1-6 17/3 9%3 0 0
Sample Output
38 72 invalid op -5 5 0
#include
int i,a,b; char c;
for(i=0;i<=100;i++)
{for(;scanf(\ if(a==0&&c==' '&&b==0) goto loop; else
switch(c) {
case'+':
printf(\ break; case'-':
printf(\ break; case'*':
printf(\ break; case'/':
printf(\ break; case'%':
printf(\ break; default:
printf(\
} } loop: i=101; }
Problem B: 摄氏——华氏温度转换表
Time Limit: 1 Sec Memory Limit: 2 MB Submit: 6632 Solved: 1711 [Submit][Status][Web Board]
Description
已知华氏温度F,转换为摄氏温度C的公式为C=(F-32)*5/9。
输出给定范围(从low到high)和步长(step)的摄氏——华氏温度转换表
Input
第1行若为“C->F”表示输出:摄氏——华氏温度转换表,若为“F->C”表示输出:华氏——摄氏温度转换表。
第2、3行为两个整数:high和low,其值在-100到200之间。 第4行为step,step精确到小数点后1位。
Output
输出第一行为C和F,分别表示摄氏和华氏,与小数点对齐。若输出摄氏——华氏温度转换表,则C在前、F在后;反之,则输出华氏——摄氏温度转换表。
从输出的第2行开始为从温度low到温度high(包括low和high)的转换表,温度输出精确到小数点后1位,表格被“->”分为两个宽度相同的部分,其它的测试样例也不会给出超出宽度的数据,格式详见sample。
Sample Input
C->F -10
40 2.5
Sample Output
C -> F -10.0 -> 14.0 -7.5 -> 18.5 -5.0 -> 23.0 -2.5 -> 27.5 0.0 -> 32.0 2.5 -> 36.5 5.0 -> 41.0 7.5 -> 45.5 10.0 -> 50.0 12.5 -> 54.5 15.0 -> 59.0 17.5 -> 63.52 20.0 -> 68.0 22.5 -> 72.5 25.0 -> 77.0 27.5 -> 81.5 30.0 -> 86.0 32.5 -> 90.5
35.0 -> 95.0 37.5 -> 99.5 40.0 -> 104.0
HINT
输出格式可以通过sample分析出来,因为两栏的总宽度是固定的。一个隐藏的陷阱是step是浮点数,某些浮点数是无法精确存储的,因此经过一定量的计算后这个误差会影响到浮点数的相等性判断,需要加上精度控制。
Append Code
[Submit][Status][Web Board]
#include
double low,high; double step,c,f; char ch1,ch2;
scanf(\ if(ch1=='C'&&ch2=='F') {
scanf(\ f=(double)9/5*low+32; if(low==-100||f<=-100) {
printf(\ C -> F\ while(low<=high+0.01) {
f=low*9.0/5.0+32;
printf(\ low+=step; }
return 0; }
printf(\ C -> F\ while(low<=high+0.01) {
f=low*9.0/5.0+32;
printf(\