ZZUIL题解1011-1020

1011: 圆柱体表面积

1012: 求绝对值

1013: 求两点间距离

1014: 求三角形的面积

1015: 计算时间间隔

1016: 银行利率

1017: 判断正整数位数

1018:奇数偶数

1019: 公园门票

1020: 两整数排序

1011: 圆柱体表面积

题目描述

输入圆柱体的底面半径r和高h,计算圆柱体的表面积并输出到屏幕上。要求定义圆周率为如下宏常量
#define PI 3.14159

输入

输入两个实数,为圆柱体的底面半径r和高h。

输出

输出一个实数,即圆柱体的表面积,保留2位小数。

样例输入 Copy

42.1 71.6

样例输出 Copy

30076.14

解题思路:

按照求解公式求解即可需要注意宏常量的定义方式

AC代码:

#include<stdio.h>
#define PI 3.14159
int main(){
    double r,high;
    scanf("%lf %lf", &r,&high);
    printf("%.2f\n", 2*PI*r*r+PI*r*2*high);
    return 0;
}

1012: 求绝对值

题目描述

求实数的绝对值。

输入

输入一个实数。

输出

输出它的绝对值,结果保留两位小数

样例输入 Copy

-234.00

样例输出 Copy

234.00

解题思路:

直接利用函数求解

AC代码:

#include<stdio.h>
#include<math.h>
int main(){
    double a;
    scanf("%lf", &a);
    printf("%.2f\n", fabs(a));
    return 0;
} 

1013: 求两点间距离

题目描述

给定A(x1, y1), B(x2, y2)两点坐标,计算它们间的距离。

输入

输入包含四个实数x1, y1, x2, y2,分别用空格隔开,含义如描述。其中0≤x1,x2,y1,y2≤100。

输出

输出占一行,包含一个实数d,表示A, B两点间的距离。结果保留两位小数。

样例输入 Copy

1 1.5 2 2.5

样例输出 Copy

1.41

解题思路:

利用两点间距离求解公式

AC代码:

#include<stdio.h>
#include<math.h>
int main(){
    double x1,y1,x2,y2;
    scanf("%lf %lf %lf %lf", &x1,&y1,&x2,&y2);
    printf("%.2f\n", sqrt((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1)));
    return 0;
} 

1014: 求三角形的面积

题目描述

给出三角形的三条边,求三角形的面积。

输入

输入三角形的三条边长(实数),数据之间用空格隔开。

输出

输出三角形的面积,结果保留2位小数。

样例输入 Copy

2.5 4 5

样例输出 Copy

4.95

解题思路:

利用海伦公式求解:
p=(a+b+c)/2
s=sqrt(p*(p-a)(p-b)(p-c));

AC代码:

#include<stdio.h>
#include<math.h>
int main(){
    double a,b,c;
    scanf("%lf %lf %lf", &a,&b,&c);//海伦公式p=(a+b+c)/2
    //s=根号(p*(p-a)*(p-b)*(p-c)) 
    double p=(a+b+c)/2;
    printf("%.2f\n", sqrt(p*(p-a)*(p-b)*(p-c)));
    return 0;
} 

1015: 计算时间间隔

题目描述

读入两个用“时:分:秒”表示的时间点,计算以秒为单位的时间间隔。

输入

输入有两行,每行是一个用“时:分:秒”表示的时间点。测试数据保证第二个时间点晚于第一个时间点。

输出

输出一个整数,表示时间间隔的秒数。

样例输入 Copy

08:00:00
09:00:00

样例输出 Copy

3600

解题思路:

计算出每一个时间代表的秒的总数量,相减即可得出时间间隔的秒数

AC代码:

#include<stdio.h>
#include<math.h>
int main(){
    int hou1,min1,sec1;
    int hou2,min2,sec2;
    char ch;
    scanf("%d %c %d %c %d", &hou1,&ch,&min1,&ch,&sec1);
    scanf("%d %c %d %c %d", &hou2,&ch,&min2,&ch,&sec2);
    int sum1,sum2;
    sum1=hou1*3600+min1*60+sec1;
    sum2=hou2*3600+min2*60+sec2;
    printf("%d\n", sum2-sum1);
    return 0;
}

1016: 银行利率

题目描述

设银行1年期定期存款年利率为2.25%,存款本金为capital元,试编程计算并输出n年后的本利之和。
(注: 目前银行活期存款的利息是按单利计息的。如果是定期存款,连本带息转入下一个存期,那么会继续计入定期的,相当于是复利。)

输入

输入一个正整数和一个实数,分别代表存款年数和存款本金。

输出

输出一个实数为n年后的本利之和,小数点后保留6位数字。

样例输入 Copy

2 100.0

样例输出 Copy

104.550625

解题思路:

使用一个循环,将当年的本金加利息均作为下一年的本金即可得出答案
说明a+=b表示的含义是a=a+b;
另外a++,++a分别表示当前先用后加和当前先加后用,在后面学习栈和数组的时候可能会用到;

AC代码:

#include<stdio.h>
#define APR 0.0225
int main(){
    int n,i;
    double capital,sum;
    scanf("%d%lf", &n,&capital);
    sum=capital+capital*APR;//计算第一年的后面的用循环计算计即可 
    for(i=2; i<=n; i++)
        sum+=sum*APR;
    printf("%.6f\n", sum);
    return 0;
}

1017: 判断正整数位数

题目描述

给定一个不多于5位的正整数,判断它是几位数,并输出。

输入

一个不多于5位的正整数。

输出

输出正整数的位数,单独占一行。

样例输入 Copy

111

样例输出 Copy

3

解题思路:

直接使用数学函数求解详细公式见代码

AC代码:

#include<stdio.h>
#include<math.h> 
int main(){
    int n,total;
    scanf("%d", &n);
    total=(int)log10(n)+1;
    printf("%d\n", total);
    return 0;
} 

1018: 奇数偶数

题目描述

输入一个整数,判断该数是奇数还是偶数。

输入

输入整数n。

输出

如果该数是奇数就输出“odd”,偶数就输出“even”(输出不含双引号)。

样例输入 Copy

-3

样例输出 Copy

odd

解题思路:

直接对2求余数判断等于1表示奇数否则即为偶数

AC代码:

#include<stdio.h>
#include<math.h> 
int main(){
    int n,n1;
    scanf("%d", &n);
    n1=fabs(n);
    if(n%2==0) 
    printf("even\n");
    else
    printf("odd\n");
    return 0;
}

1019: 公园门票

题目描述

某公园门票的票价是每人50元,一次购票满30张,每张可以少收2元。试编写自动计费系统程序。

输入

输入一个正整数,表示购票的数量。

输出

输出一个整数,表示用户实际需要支付的金额。

样例输入 Copy

30

样例输出 Copy

1440

解题思路:

按照题意每人50元,一次购票满30张,每张可以少收2元,计算出结果即可(自己分析)

AC代码:

#include<stdio.h>
#include<math.h> 
int main(){
    int n,tatal=0;
    scanf("%d", &n);
    if(n>=30) 
    printf("%d\n", 48*n);
    else
    printf("%d\n", 50*n);
    return 0;
} 

1020: 两整数排序

题目描述

从键盘输入两个整数x,y,按从小到大的顺序输出它们的值。

输入

输入两个整数x,y。

输出

按从小到大的顺序输出它们的值。数据之间以空格间隔。

样例输入 Copy

20 16

样例输出 Copy

16 20

解题思路:

两个数比较大的先输出,小的后输出
题目旨在锻炼if else的使用

AC代码:

#include<stdio.h>
#include<math.h> 
int main(){
    int numb1,numb2;
    scanf("%d %d", &numb1,&numb2);
    if(numb1>numb2) 
    printf("%d %d\n", numb2,numb1);
    else
    printf("%d %d\n", numb1,numb2);
    return 0;
}
  • 23
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮皮皮皮皮皮卡乒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值