输出
每行对应输入的运算符为“+”、“-”、“*”、“/”、“%”,则计算a+b、a-b、a*b、a/b、a%b的值;否则输出“invalid op”。
样例输入
33+5 8*9 2.2 1-6 17/3 9%3 0 0
样例输出
38 72
invalid op -5 5 0
提示
教材上有非常相似的例题可以参考。 #include
switch(c) { case'+': printf(\ break; case'-':
printf(\ break; case'*': printf(\ break; case'/': printf(\ break; case'%': printf(\ break; default: printf(\ } } loop: i=101; }
问题 10: 求100以内的素数
题目描述
素数是只能被1和自身整除的正整数,根据数学定义1不是素数。素数也叫质数。
输入
输入为两个整数m和n,满足0<=m<=n<=100。
输出
从大到小输出m~n之间的所有素数,一个素数一行。如果m~n之间没有素数,则不输出任何数。
输出的所有数在两行“=====”之间。
样例输入
2 12
样例输出
===== 11
7 5 3 2 =====
提示
利用素数的数学规律可以很容易的解出此题,题目给出的数据范围是关键。
解答:
#include 问题 11: 摄氏——华氏温度转换表 题目描述 已知华氏温度F,转换为摄氏温度C的公式为C=(F-32)*5/9。 输出给定范围(从low到high)和步长(step)的摄氏——华氏温度转换表 输入 第1行若为“C->F”表示输出:摄氏——华氏温度转换表,若为“F->C”表示输出:华氏——摄氏温度转换表。 第2、3行为两个整数:high和low,其值在-100到200之间。 第4行为step,step精确到小数点后1位。 输出 输出第一行为C和F,分别表示摄氏和华氏,与小数点对齐。若输出摄氏——华氏温度转换表,则C在前、F在后;反之,则输出华氏——摄氏温度转换表。 从输出的第2行开始为从温度low到温度high(包括low和high)的转换表,温度输出精确到小数点后1位,表格被“->”分为两个宽度相同的部分,其它的测试样例也不会给出超出宽度的数据,格式详见sample。 样例输入 C->F -10 40 2.5 样例输出 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.5 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 提示 输出格式可以通过sample分析出来,因为两栏的总宽度是固定的。一个隐藏的陷阱是step是浮点数,某些浮点数是无法精确存储的,因此经过一定量的计算后这个误差会影响到浮点数的相等性判断,需要加上精度控制。 解答: #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(\ low+=step; } return 0; } else if(ch1=='F'&&ch2=='C') { scanf(\ c=(low-32)*((double)5/9); if(low==-100||c<=-100) { printf(\ F -> C\ while(low<=high+0.01) { c=(low-32)*5/9.0; printf(\ low+=step; } return 0;