@
目录- 7-1 PY圆面积
- 7-2 求正弦值 输入角度
- 7-3 PY时间差
- 7-2 计算存款利息
- 7-3 字符反序输出,并去ASCII码值之和
- 7-1 计算圆球体积
- 7-1 大小写字符转换
- 7-4 计算工资
- 7-3 计算符号函数的值
- 7-1 统计学生成绩
- 7-3 统计素数并求和
- 7-1 重要的话说三遍
- 7-2 输出倒三角图案
- 7-3 打印菜单
- 7-2 介绍一下你自己
- 7-3 美化姓名
- 7-4 半圆弧的长度
- 7-5 输出工资表
- 7-2 逆序的三位数
- 7-3 厘米换算英尺英寸
- 7-1 出租车计价
- 7-2 计算油费
7-1 PY圆面积
编写程序,输入圆的半径,计算圆的面积并输出。
提示:圆的计算公式为area=π×radius2,在这道题中,π取3.14159
。
输入格式:
输入为一个大于0的浮点数,表示圆的半径。
输出格式:
输出一个浮点数,小数点后输出两位,表示圆的面积。
输入样例:
3.2
输出样例:
32.17
radius = float(input())
pi = 3.14159
area = pi*radius**2
print("%.2f"%area)
7-2 求正弦值 输入角度
求正弦值。pi使用系统定义的pi值。
输入格式:
输入角度,小数
输出格式:
输出正弦值,保留两位小数
输入样例:
在这里给出一组输入。例如:
45
输出样例:
在这里给出相应的输出。例如:
0.71
import math
i = float(input())
result = math.sin((math.pi/180)*i)
print("%.2f"%result)
7-3 PY时间差
10点半到11点45之间,有几小时几分钟呢?
你要写一个程序,读入两个时间,计算它们之间的时间差,输出相差几小时几分钟。
输入格式:
输入两行,分别表示两个时间,均以24小时制表达,每个时间以“小时 分钟”的形式表达,第二个时间一定比第一个时间晚或相同,而且一定在同一天内。
输出格式:
输出表示两个时间之间的时间差的两个数字,第一个数字是时间差中的小时数,第二个数字是时间差中的分钟数。
输入样例:
10 30
11 45
输出样例:
1 15
使用最简单的方式
old = input()
new = input()
old_h,old_s = old.split(" ")[0],old.split(" ")[1]
new_h,new_s = new.split(" ")[0],new.split(" ")[1]
old_h,old_s,new_h,new_s = list(map(lambda x:int(x),[old_h,old_s,new_h,new_s]))
result_h = new_h - old_h
result_s = new_s - old_s
print(result_h,result_s)
利用date
from datetime import datetime
def calc_hours(old: str, new: str)->float:
old_time = datetime.strptime(old, "%Y-%m-%d %H:%M:%S")
new = datetime.strptime(new, "%Y-%m-%d %H:%M:%S")
sec = (new - old_time).seconds
return round(sec/3600, 3)
old = input().replace(" ", ":")
new = input().replace(" ", ":")
time_1 = f'2020-01-01 {old}:00'
time_2 = f'2020-01-01 {new}:00'
result = calc_hours(time_1, time_2)
if(result>1):
integer = result%result+1
decimal = (float(result)-float(integer))*60
print("%d %d"%(integer,decimal))
利用三方库numpy
from datetime import datetime
import numpy as np
def calc_hours(old: str, new: str)->float:
old_time = datetime.strptime(old, "%Y-%m-%d %H:%M:%S")
new = datetime.strptime(new, "%Y-%m-%d %H:%M:%S")
sec = (new - old_time).seconds
return round(sec/3600, 3)
old = input().replace(" ", ":")
new = input().replace(" ", ":")
time_1 = f'2020-01-01 {old}:00'
time_2 = f'2020-01-01 {new}:00'
result = calc_hours(time_1, time_2)
adecimal,integer=np.modf(result)
print(adecimal,integer)
7-2 计算存款利息
本题目要求计算存款利息,计算公式为interest=money×(1+rate)
year
−money,其中interest为存款到期时的利息(税前),money是存款金额,year是存期,rate是年利率。
输入格式:
输入在一行中顺序给出三个正实数money、year和rate,以空格分隔。
输出格式:
在一行中按“interest = 利息”的格式输出,其中利息保留两位小数。
输入样例:
1000 3 0.025
输出样例:
interest = 76.89
#include <stdio.h>
#include <math.h>
int main()
{
//本题目要求计算存款利息,计算公式为interest=money*(1+rate)^year-money
//其中interest为存款到期时的利息(税前),money是存款金额,year是存期,rate是年利率。
//输入在一行中顺序给出三个正实数money、year和rate,以空格分隔。
//在一行中按“interest = 利息”的格式输出,其中利息保留两位小数。
//输入样例1000 3 0.025
float money;
float year;
float rate;
float interest;
int result = scanf("%f %f %f", &money, &year, &rate);
interest = money * powf(1 + rate, year) - money;
printf("interest = %.2f\n", interest);
return 0;
}
7-3 字符反序输出,并去ASCII码值之和
从键盘输入3个字符,将它们反向输出,并输出这3个字符ASCII码值之和。
输入格式:
在一行中输入3个字符,每个字符之间用空格分隔。
输出格式:
在一行中逆序输出3个字符,每个字符之间用空格分隔。在另一行中输出3个字符ASCII码值之和。
输入样例:
在这里给出一组输入。例如:
a b c
输出样例:
在这里给出相应的输出。例如:
c b a
294
#include <stdio.h>
#include <string.h>
int get_ascii(char *str)
{
int num = 0;
for (size_t i = 0; i < strlen(str); i++)
{
num +=str[i];
}
return num;
}
void main()
{
char str[3];
scanf("%s %s %s", str,str+1,str+2);
printf("%c %c %c\n",str[2],str[1],str[0]);
int result = get_ascii(str);
printf("%d",result);
}
7-1 计算圆球体积
设圆球的半径为r,计算并输出圆球体积v。输出结果保留2位小数。提示:计算圆球的体积公式为:v=
3
4
πr
3
(π=3.14)
输入格式:
输入第一行给出一个正整数半径r(0< r ≤ 100)。
输出格式:
圆球的体积v保留两位小数。
输入样例:
5
输出样例:
v = 523.33
#include <stdio.h>
#include <math.h>
#define PI 3.14f
int main()
{
int r;
scanf("%d",&r);
float v = (4/3.0f) * PI * powf(r, 3);
printf("v = %.2f", v);
return 0;
}
7-1 大小写字符转换
分数 10
作者 齐心
单位 湖北汽车工业学院
输入一个字符,如果是大写字母,将它转换成小写字母并输出;如果是小写字母,将它转换成大写字母并输出;如果都不是,则输出:error
输入样例:
a
输出样例:
A
输入样例:
B
输出样例:
b
输入样例:
1
输出样例:
error
#include <stdio.h>
int main()
{
char msg;
scanf("%c", &msg);
if ('A' <= msg && msg <= 'Z')
{
msg = msg + 32;
printf("%c", msg);
}
else if ('a' <= msg && msg <= 'b')
{
msg = msg - 32;
printf("%c", msg);
}
else
{
printf("error");
}
return 0;
}
7-4 计算工资
分数 10
作者 沈睿
单位 浙江大学
某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。
输入格式:
输入在一行中给出2个正整数,分别为某员工入职年数和周工作时间,其间以空格分隔。
输出格式:
在一行输出该员工的周薪,精确到小数点后2位。
输入样例1:
5 40
输出样例1:
2000.00
输入样例2:
3 50
输出样例2:
1650.00
#include <stdio.h>
int calculate(int year, int weekHour)
{
int price;
float salary;
if (year >= 5)
{
price = 50;
salary = weekHour > 40 ? (weekHour - 40) * 1.5 * price + 2000 : weekHour * price;
printf("%.2f\n", salary);
}
else
{
price = 30;
salary = weekHour > 40 ? (weekHour - 40) * 1.5 * price + 1200 : weekHour * price;
printf("%.2f\n", salary);
}
return 0;
}
int main()
{
// 入职年数
int year;
// 周工作时间
int weekHour;
// 工资
float salary;
scanf("%d %d", &year, &weekHour);
calculate(year, weekHour);
return 0;
}
7-3 计算符号函数的值
分数 10
作者 C课程组
单位 浙江大学
对于任一整数n,符号函数sign(n)的定义如下:
请编写程序计算该函数对任一输入整数的值。
输入格式:
输入在一行中给出整数n。
输出格式:
在一行中按照格式“sign(n) = 函数值”输出该整数n对应的函数值。
输入样例1:
10
输出样例1:
sign(10) = 1
输入样例2:
0
输出样例2:
sign(0) = 0
输入样例3:
-98
输出样例3:
sign(-98) = -1
#include <stdio.h>
int sign(int n)
{
if (n < 0)
{
return -1;
}
else if (n == 0)
{
return 0;
}
else
{
return 1;
}
}
int main()
{
int num;
scanf("%d", &num);
printf("sign(%d) = %d", num, sign(num));
return 0;
}
7-1 统计学生成绩
分数 10
作者 陈建海
单位 浙江大学
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
输入样例:
7
77 54 92 73 60 65 69
输出样例:
1 0 2 3 1
#include <stdio.h>
void judge(int score, int *grade)
{
if (score >= 90)
{
grade[0]++;
}
else if (score < 90 && score >= 80)
{
grade[1]++;
}
else if (score < 80 && score >= 70)
{
grade[2]++;
}
else if (score < 70 && score >= 60)
{
grade[3]++;
}
else if (score < 60)
{
grade[4]++;
}
}
int main()
{
// 分数
int score;
// 装成绩成绩人数分布,初始化
int grade[5];
for (size_t i = 0; i < 5; i++)
{
grade[i] = 0;
}
// 读取人数
int times;
scanf("%d", ×);
// 循环读取分数
for (size_t i = 0; i < times; i++)
{
scanf("%d", &score);
judge(score, grade);
}
for (size_t i = 0; i < 5; i++)
{
if (i == 0)
{
printf("%d", grade[i]);
}
else
{
printf(" %d", grade[i]);
}
}
return 0;
}
7-3 统计素数并求和
分数 10
作者 张彤彧
单位 浙江大学
本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:
10 31
输出样例:
7 143
#include <stdio.h>
int judge(int i, int *sum)
{
// 判断i是否为素数
int o = 2;
for (; o < i; o++)
{
// 符合此条件则不为素数
if (i % o == 0)
{
return 0;
}
}
// 如果为素数,则返回1,并累计加和。
*sum += i;
return 1;
}
int main()
{
// 本题要求统计给定整数M和N区间内素数的个数并对它们求和。
// 输入样例10 31 正整数M和N
int m, n, flag, i, total, sum;
total = flag = sum = 0;
scanf("%d %d", &m, &n);
// 外循环m到n个数字
for (i = m; i <= n; i++)
{
if (i == 1)
{
continue;
}
// 如果判断为素数,那么素数总数加一
if (judge(i, &sum) == 1)
total++;
}
printf("%d %d\n", total, sum);
return 0;
}
7-1 重要的话说三遍
这道超级简单的题目没有任何输入。
你只需要把这句很重要的话 —— “I'm gonna WIN!”——连续输出三遍就可以了。
注意每遍占一行,除了每行的回车不能有任何多余字符。
#include <stdio.h>
int main()
{
for (size_t i = 0; i < 3; i++)
{
printf("I'm gonna WIN!");
if (i<2)
{
putchar('\n');
}
}
return 0;
}
7-2 输出倒三角图案
本题要求编写程序,输出指定的由“*”组成的倒三角图案。
输入格式:
本题目没有输入。
输出格式:
按照下列格式输出由“*”组成的倒三角图案。
简单实现
#include <stdio.h>
int main()
{
printf("* * * *\n");
printf(" * * *\n");
printf(" * *\n");
printf(" *");
return 0;
}
稍微复杂的代码
#include <stdio.h>
int main()
{
int i, j;
for (i = 0; i < 4; i++)
{
for (j = 0; j < i; j++)
putchar(' '); // 前面的空格
for (j = 4 - j; j > 0; j--)
{
putchar('*');
putchar(' '); // 中间的空格
}
if (i != 3)
{
putchar('\n');
}
}
return 0;
}
7-3 打印菜单
本题要求编写程序,在屏幕上打印5行菜单。
输入格式:
本题目没有输入。
输出格式:
按照下列格式打印菜单,每行显示一句。注意除了每行的换行不能有任何多余字符。
[1] Select crisps
[2] Select popcorn
[3] Select chocolate
[4] Select cola
[0] Exit
#include <stdio.h>
int main()
{
char *message = "Select";
printf("[1] %s crisps\n", message);
printf("[2] %s popcorn\n", message);
printf("[3] %s chocolate\n", message);
printf("[4] %s cola\n", message);
printf("[0] Exit\n");
return 0;
}
7-2 介绍一下你自己
本题目要求输入你的姓名、年龄和籍贯,然后输出一个自我介绍的字符串。
输入格式:
输入你的姓名、年龄和籍贯。
输出格式:
对每一组输入,在一行中输出一个自我介绍的字符串。
输入样例:
小明
20
北京
输出样例:
大家好!我是小明,今年20岁,来自北京。
name = input()
age = input()
place = input()
msg = f"大家好!我是{name},今年{age}岁,来自{place}。"
print(msg)
7-3 美化姓名
输入姓名,美化后输出。
输入格式:
输入一个姓名,如“张无忌
”、“哪吒
”、“Fiona
”
输出格式:
在姓名的左右各加上一个星号,如“*张无忌*
”、“*哪吒*
”、“*Fiona*
”
输入样例:
在这里给出一组输入。例如:
Tom
输出样例:
在这里给出相应的输出。例如:
Tom
msg = input()
print(f"*{msg}*")
7-4 半圆弧的长度
输入圆的半径,求半圆弧的长度(使用math库的pi常量)
输入格式:
输入圆的半径,可以是小数,也可以是整数。
输出格式:
输出结果,要求结果保留2位小数。输出格式为:L=×××
输入样例:
在这里给出一组输入。例如:
2
输出样例:
在这里给出相应的输出。例如:
L=6.28
from math import pi
receive = float(input())*pi
print("L=%.2f"%receive,end='')
7-5 输出工资表
现要求打印一份员工工资,输入员工的姓名、每小时收入、工作时长,税率和养老金比例,计算员工的净收入并输出相应的信息。
员工的工资 = 每小时收入 * 工作时长
税费 = 工资 * 税率
养老金 = 工资 * 养老金比例
净收入 = 工资 - 税费 - 养老金
输入格式:
输入共5行,每一行依次为员工的姓名、工作时长、每小时收入、税率和养老金比例
输出格式:
依次在每一行输出:姓名、工作小时、每小时收入、工资、扣除金额、净收入
输入样例:
在这里给出一组输入。例如:
于敏
8
110
0.1
0.05
输出样例:
在这里给出相应的输出。例如:
Employee Name: 于敏
Hours Worked: 8
Pay Rate: $110
Gross Pay: $880
Deductions: 132.0
Net Pay:748.0
def calculate():
# 姓名
name = input()
# 工作时长
durable = int(input())
# 每小时收入
hourly_revenue = int(input())
# 税率
rate = float(input())
# 养老金比例
pension_rate = float(input())
"""
员工的工资 = 每小时收入 * 工作时长
税费 = 工资 * 税率
养老金 = 工资 * 养老金比例
净收入 = 工资 - 税费 - 养老金
"""
salary = hourly_revenue*durable
rate_free = salary*rate
pension = salary*pension_rate
net_income = salary-rate_free-pension
out = '''Employee Name: {0}
Hours Worked: {1}
Pay Rate: ${2}
Gross Pay: ${3}
Deductions: {4}
Net Pay:{5}'''.format(name,durable,hourly_revenue,salary,rate_free+pension,net_income)
print(out)
if __name__=="__main__":
calculate()
7-2 逆序的三位数
分数 5
作者 翁恺
单位 浙江大学
程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
123
输出样例:
321
#include <stdio.h>
int main()
{
int num, ge, shi, bai;
scanf("%d", &num);
bai = (num - num % 100) / 100;
ge = (num - bai * 100) % 10;
shi = (num - bai * 100 - ge) / 10;
num = bai + shi * 10 + ge * 100;
printf("%d\n", num);
return 0;
}
7-3 厘米换算英尺英寸
分数 5
作者 翁恺
单位 浙江大学
如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。
输入格式:
输入在一行中给出1个正整数,单位是厘米。
输出格式:
在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。
输入样例:
170
输出样例:
5 6
#include <stdio.h>
#include <math.h>
int main()
{
int inch, cm, left, right;
float foot;
scanf("%d", &cm);
foot = cm / 30.48;
left = floor(foot);
right = floor((foot - left) * 12);
printf("%d %d", left, right);
return 0;
}
7-1 出租车计价
分数 10
作者 沈睿
单位 浙江大学
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为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:
34
#include <stdio.h>
#include <math.h>
int main()
{
float price, distance;
int result, wait_time, wait_price;
scanf("%f %d", &distance, &wait_time);
if (distance <= 3)
{
price += 10;
}
else if (3 < distance && distance <= 10)
{
price = (distance - 3) * 2 + 10;
}
else
{
price = 24 + (distance - 10) * 3;
}
wait_price = wait_time >= 5 ? wait_time / 5 * 2 : 0;
price += wait_price;
result = round(price);
printf("%d\n", result);
return 0;
}
7-2 计算油费
分数 10
作者 颜晖
单位 浙大城市学院
现在90号汽油6.95元/升、93号汽油7.44元/升、97号汽油7.93元/升。为吸引顾客,某自动加油站推出了“自助服务”和“协助服务”两个服务等级,分别可得到5%和3%的折扣。
本题要求编写程序,根据输入顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助),计算并输出应付款。
输入格式:
输入在一行中给出两个整数和一个字符,分别表示顾客的加油量a,汽油品种b(90、93或97)和服务类型c(m - 自助,e - 协助)。
输出格式:
在一行中输出应付款额,保留小数点后2位。
输入样例:
40 97 m
输出样例:
301.34
#include <stdio.h>
int main()
{
int oil, oil_variety;
char server_type;
float total, count, price;
scanf("%d %d %c", &oil, &oil_variety, &server_type);
switch (oil_variety)
{
case 97:
price = 7.93;
break;
case 93:
price = 7.44;
break;
default:
price = 6.95;
break;
}
if (server_type == 'm')
count = 0.95;
else
count = 0.97;
total = price * oil * count;
printf("%.2f\n", total);
return 0;
}
标签:输出,PAT,int,题解,printf,样例,格式,程序设计,输入
From: https://www.cnblogs.com/huanghongzhe/p/16767422.html