输入格式:算法
输入在一行中给出实数x。ide
输出格式:函数
在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。学习
输入样例1:spa
10
输出样例1:设计
f(10.00) = 3.16
输入样例2:3d
-0.5
输出样例2:调试
f(-0.50) = -2.75code
double x,y;
scanf("%lf",&x);
if(x>=0){
y=sqrt(x);
}
else{
y=pow(x+1,2)+2*x+pow(x,-1);
}
printf("f(%.2f) = %.2f",x,y);blog
问题:格式错误
解决办法:再次读题后增添等号左右的空格,提交后答案正确
本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=√
s(s−a)(s−b)(s−c)
,其中s=(a+b+c)/2。
输入格式:
输入为3个正整数,分别表明三角形的3条边a、b、c。
输出格式:
若是输入的边能构成一个三角形,则在一行内,按照
area = 面积; perimeter = 周长
的格式输出,保留两位小数。不然,输出
These sides do not correspond to a valid triangle
输入样例1:
5 5 3
输出样例1:
area = 7.15; perimeter = 13.00
输入样例2:
1 4 1
输出样例2:
These sides do not correspond to a valid triangle
int a,b,c;
double s,area,perimeter;
scanf("%d%d%d",&a,&b,&c);
s=(a+b+c)/2.0;
area=sqrt(s(s-a)(s-b)*(s-c));
perimeter=a+b+c;
if(a+b>c&&a+c>b&&b+c>a){
printf("area = %.2f; perimeter = %.2f",area,perimeter);
}
else{
printf("These sides do not correspond to a valid triangle");
}
问题:(1)s=(a+b+c)/2.0 除数必定要用浮点数2.0,不然整型除整型获得的结果是整型,可能会改变s的值,致使后面结果错误
(2)又忘记空格了致使格式错误
解决办法:(1)将2改成2.0
(2)增长等号左右空格
出租车计价
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准以下:
起步里程为3千米,起步费10元;
超起步里程后10千米内,每千米2元;
超过10千米以上的部分加收50%的回空补贴费,即每千米3元;
营运过程当中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为千米,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例1:
2.6 2
输出样例1:
10
输入样例2:
5.1 4
输出样例2:
14
输入样例3:
12.5 9
输出样例3:
double kilometre,price1,price; int time,price2; scanf("%lf%d",&kilometre,&time); if(kilometre<=3){ price1=10; } else { if(kilometre<=10){ price1=10+(kilometre-3)*2; } else{price1=24+(kilometre-10)*3; } } price2=(time/5)*2; price=price1+price2; printf("%.0f",price);
(1)题目中有:输入行驶里程(单位为千米,精确到小数点后1位)因此我在输入时将%lf改为了%.1f
结果:
运行时不能进入正确的if语句,price1计算结果不对,解决方法:%.nf是输出时用来控制输出位数的,用于printf语句中而不是scanf语句,因此我将%.0f改回%lf,再次运行就能正确执行相应if语句了
(2)我开始的算法是打算计算出小数部分,而后用if语句判断与0.5的大小,大于0.5,price整数部分就加一,而后输出,并且在计算price2时再次使用了if-else语句,算法看上去很麻烦,并且运行结果不对
如图:
解决办法:经过对price1,price2的输出发现,由于我定义的变量都是浮点型,price2获得的结果就不是整型的了,致使price数值可能变大,最终影响输出结果。另外发现price2的计算不须要if结构,并且%.0f有四舍五入的做用,因此对代码进行了删减,最终运行获得正确结果
自从湖南农业大学、吉首大学和怀化学院组织程序设计课程联考之后,举办联考的经验越来丰富。尤为是在使用PTA系统做为考试平台以后,联考工做获得了不少学校的承认和支持。因此,如今参与联考的学校比较多。为了便于区分考生,考生帐号的第一位是学校代号。1表明Hunan Agricultural University,2表明Jishou University,3表明Huaihua University,4表明Aerospace University,5表明Ocean University。 请编写程序根据考生的帐号区分考生的学校。
输入格式:
在一行中给出1个6位的正整数account。
输出格式:
在一行中输出account的学校。注意:若是不清楚学校代号是哪一个学校,则输出"OtherUniversity"。
输入样例:
123456
输出样例:
Hunan Agricultural University
int account,number; scanf("%d",&account); number=account/100000; switch(number){ case 1: printf("Hunan Agricultural University"); break; case 2: printf("Jishou University"); break; case 3: printf("Huaihua University"); break; case 4: printf("Aerospace University"); break; case 5: printf("Ocean University"); break; default: printf("Other University"); break; }
这题没有遇到什么问题,以为如何计算number是一个思考的地方,其余都很简单了,另外break是一个注意点,别漏了
(4)嵌套的if语句,通常形式:
if(表达式1)
if(表达式2)语句1;
else 语句2;
else
if(表达式3)语句3;
else 语句4;
重点:else和if的匹配原则:else与最靠近它的,没有与其余else语句匹配的if匹配
字符型数据的输入和输出还不熟练,没有遇到涉及到的题目
写的代码太繁琐了,惯性思惟,像车费那题不须要用if判断的时候,我也用了,调试的时候找错误就很麻烦了。多练练,调试的时候修改代码,对了,先写算法很重要。