(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)
目录
快递费用计算:
题目:
代码思路:
代码表示:
计算一元二次方程的根:
题目:
代码思路:
代码表示:
产品信息格式化:
题目:
代码思路:
代码表示:
快递费用计算:
题目:
本关任务:编写一个计算机快递费的程序。
上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成
5
个区域:快递费按邮件重量计算,由起重费用、续重费用两部分构成:
(1) 起重(首重)
1
公斤按起重资费计算(不足1
公斤,按1
公斤计算),超过首重的重量,按公斤(不足1
公斤,按1
公斤计算)收取续重费; (2) 同城起重资费10
元,续重3
元/公斤; (3) 寄往1
区(江浙两省)的邮件,起重资费10
元,续重4
元; (4) 寄往其他地区的邮件,起重资费统一为15
元。而续重部分,不同区域价格不同:2
区的续重5
元/公斤,3
区的续重6.5
元/公斤,4
区的续重10
元/公斤。提示
续重部分不足一公斤,按
1
公斤计算。因此,如包裹重量2.3
公斤:1
公斤算起重,剩余的1.3
公斤算续重,不足1
公斤按1
公斤计算,1.3
公斤折合续重为2
公斤。如果重量应大于0
、区域编号不能超出0-4
的范围。样例输入:
4,4.5
样例输出:
Price: 55.00
程序运行结果示例1:
输入:
4,4.5
输出:Price: 55.00
程序运行结果示例2:
输入:
5,3.2
输出:Error in Area
Price: 0.00
代码思路:
这题我在第一次运行的时候出现了一条错误提示:invalid operands to binary %,意思是采用浮点模数时,二进制 % 的操作数无效。那么我们该怎么解决“续重部分不足一公斤,按
1
公斤计算”这个问题呢?那就要用到ceil函数了,它的头文件是<math.h>,作用是返回大于或者等于指定表达式的最小整数。有了它,就可以用“(b-1)*续重价”解决续重问题,对于整题,我的思路就是一个区一个区分开计算,虽然较为繁琐,但理解起来较为简单
代码表示:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main(void)
{
/*********Begin*********/
int a;
float b;
scanf("%d,%f", &a, &b);
if (a >= 0 && a <= 4)
{
if (a == 0)
{
if (b >= 0 && b <= 1)
{
printf("Price: 10.00\n");
}
else if (b > 1)
{
b = ceil(b);
float c = (b - 1) * 3.0;
printf("Price: %.2f\n", c + 10);
}
}
else if (a == 1)
{
if (b >= 0 && b <= 1)
{
printf("Price: 10.00\n");
}
else if (b > 1)
{
b = ceil(b);
float d = (b - 1) * 4.0;
printf("Price: %.2f\n", d + 10);
}
}
else if (a == 2)
{
if (b >= 0 && b <= 1)
{
printf("Price: 15.00\n");
}
else if (b > 1)
{
b = ceil(b);
float d = (b - 1) * 5.0;
printf("Price: %.2f\n", d + 15);
}
}
else if (a == 3)
{
if (b >= 0 && b <= 1)
{
printf("Price: 15.00\n");
}
else if (b > 1)
{
b = ceil(b);
float d = (b - 1) * 6.5;
printf("Price: %.2f\n", d + 15);
}
}
else if (a == 4)
{
if (b >= 0 && b <= 1)
{
printf("Price: 15.00\n");
}
else if (b > 1)
{
b = ceil(b);
float d = (b - 1) * 10.0;
printf("Price: %.2f\n", d + 15);
}
}
}
else
{
printf("Error in Area\n");
printf("Price: 0.00\n");
}
/*********End**********/
return 0;
}
计算一元二次方程的根:
题目:
本关任务:根据下面给出的求根公式,计算并输出一元二次方程
ax2+bx+c=0
的两个实根,要求精确到小数点后4
位。其中a,b,c
的值由用户从键盘输入。如果用户输入的系数不满足求实根的要求,输出错误提示 "error!
"。
输入:
1,2,1
输出:Please enter the coefficients a,b,c:
x1=-1.0000, x2=-1.0000
输入:
2,1,6
输出:Please enter the coefficients a,b,c:
error!
代码思路:
我认为这题的难点有两个,第一个就是是否了解sqrt开平方函数以及其需要的头文件<math.h>,第二个就是求根公式在使用的时候是否注意加括号,乘法符号是否会被省略这类细节问题。只要能解决这两个问题,这题也就能迎刃而解了
代码表示:
#include<stdio.h>
#include<math.h>
int main(void)
{
/*********Begin*********/
float a, b, c, x1, x2;
scanf("%f,%f,%f", &a, &b, &c);
x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
printf("Please enter the coefficients a,b,c:\n");
if ((b * b - 4 * a * c) >= 0)
{
printf("x1=%.4f, x2=%.4f\n", x1, x2);
}
else
{
printf("error!\n");
}
/*********End**********/
return 0;
}
产品信息格式化:
题目:
本关任务:编写一个程序, 对用户录入的产品信息进行格式化。
样例输入:
385
12.5
12/03/2015
样例输出:
Enter item number:
Enter unit price:
Enter purchase date (mm/dd/yy):
Item Unit Purchase
385 $ 12.50 12032015
代码思路:
这题只需要根据题目提示,将所需内容输入输出即可
代码表示:
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int a, b, c, d;
float i;
scanf("%d", &a);
scanf("%f", &i);
scanf("%d/%d/%d", &b, &c, &d);
printf("Enter item number:\n");
printf("Enter unit price:\n");
printf("Enter purchase date (mm/dd/yy):\n");
printf("Item Unit Purchase\n");
printf("%-9d$ %-9.2f%02d%02d%02d\n", a, i, b, c, d);
/*********End**********/
return 0;
}