HNU程序设计 练习二-编程基础

1.长度单位换算

【问题描述】

编程,将从键盘输入的n英寸换算成用英里(mi)、码(yd)、英尺(ft)和英寸(in)的表示形式(1英里=1760码,1码=3英尺,1英尺=12英寸)输出。

【输入形式】

从键盘输入英寸数(整数)

【输出形式】

输出用英里(mi)、码(yd)、英尺(ft)和英寸(in)的表示形式。

【样例输入1】 

12345678

【样例输出1】 

194 mi 1495 yd 1 ft 6 in

【样例输入2】 

3071

【样例输出2】

85 yd 11 in
//长度单位换算
//【问题描述】
//编程,将从键盘输入的n英寸换算成用英里(mi)、码(yd)、英尺(ft)和英寸(in)的
//表示形式(1英里=1760码,1码=3英尺,1英尺=12英寸)输出。
//【输入形式】
//从键盘输入英寸数(整数)
//【输出形式】
//输出用英里(mi)、码(yd)、英尺(ft)和英寸(in)的表示形式//
#include<iostream>
using namespace std;
int main()
{
	int n=0;
	cin>>n;
	int mi=n/(1760*3*12);   //获得mi数目 
	int yd=(n-1760*3*12*mi)/(3*12);  //余数继续获得yd的数目 
	int ft=(n-1760*3*12*mi-3*12*yd)/12;
	int in=(n-1760*3*12*mi-3*12*yd-12*ft); //余数就是in的值 
	if(mi!=0){   //判断对应数目是否为0,若为0则不输出 
		cout<<mi<<" mi ";
	}
	if(yd!=0){
		cout<<yd<<" yd ";
	}
	if(ft!=0){
		cout<<ft<<" ft ";
	}
	if(in!=0){
		cout<<in<<" in";
	}
	return 0;
}

2.苹果和虫子

【问题描述】

你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?

【输入形式】

输入仅一行,包括n,x和y(均为非负整数)。        

【输出形式】

输出也仅一行,剩下的苹果个数。

【样例输入】

10 4 9
【样例输出】

7
【提示】

判断虫子可能能吃掉的最多苹果数量(包含咬了,却没有吃完的)

(y+x-1)/x

//苹果和虫子
//【问题描述】
//你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。
//虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?
//【输入形式】
//输入仅一行,包括n,x和y(均为非负整数)。        
//【输出形式】
//输出也仅一行,剩下的苹果个数。
#include<iostream>
using namespace std;
int main()
{
	int n=0,x=0,y=0;
	cin>>n>>x>>y;
	int max=(y+x-1)/x ; //可能吃掉的苹果最多数目,包含咬了没吃完的 
	if((n-max)>0){
		cout<<n-max<<endl; 
	}else{
		cout<<0<<endl; //已经吃完了 
	}
	
	return 0;
}

3.温度表达转化

【问题描述】

利用公式 C = 5*(F-32)/9(其中C表示摄氏温度,F表示华氏温度)进行计算转化,输入华氏温度F,输出摄氏温度C,要求精确到小数点后5位。

【输入形式】

输入一行,包含一个实数F,表示华氏温度。(F >= -459.67)

【输出形式】

输出一行,包含一个实数,表示对应的摄氏温度,要求精确到小数点后5位。

【样例输入】

41
【样例输出】

5.00000
【样例说明】

对于小数,在无特殊要求的情况下,推荐大家使用double类型;

对于整数,在无特殊要求的情况下,推荐大家使用int类型;

#include<iostream>
#include<iomanip> //引入头文件 
//温度表达转化【问题描述】
//利用公式 C = 5*(F-32)/9(其中C表示摄氏温度,F表示华氏温度)进行计算转化,输入华氏温度F,输出摄氏温度C,要求精确到小数点后5位。
using namespace std;
int main()
{
	double f=0.0;
	cin>>f;
	double c=5*(f-32)/9.0;  //转换温度
	cout<<fixed<<setprecision(5)<<c<<endl;  //精确到小数点后5位 
	return 0;
}

4.sizeof的作用

【问题描述】

    运算符sizeof()通常用于求指定数据类型或者变量的字节数,请输出短整型、整型、长整型、长长整型、单精度浮点、双精度浮点、长双精度浮点、字符类型的字节数。其含义为如果sizeof(int)的结果为4,则所有声明的数据类型为int的变量,在存储时均占用4bytes,理解内存字节数非常重要,请大家记住。
【输入形式】

    无
【输出形式】

字节数

【样例输入】

【样例输出】

2
4
4
8
4
8
16
1
//sizeof的作用
//运算符sizeof()通常用于求指定数据类型或者变量的字节数,
//请输出短整型、整型、长整型、长长整型、单精度浮点、双精度浮点、
//长双精度浮点、字符类型的字节数。其含义为如果sizeof(int)的结果为4,
//则所有声明的数据类型为int的变量,在存储时均占用4bytes,理解内存字节数非常重要,请大家记住。
#include<iostream>
using namespace std;
int main()
{
	cout<<sizeof(short int)<<endl;
	cout<<sizeof(int)<<endl;
	cout<<sizeof(long int)<<endl;
	cout<<sizeof(long long)<<endl;
	cout<<sizeof(float)<<endl;
	cout<<sizeof(double)<<endl;
	cout<<sizeof(long double)<<endl; 
	cout<<sizeof(char)<<endl;
	return 0;
}

5.游泳训练时间计算

【问题描述】

       为了备战游泳比赛,小张在拼命训练以获取好的名次。某天小张对自己的游泳训练时间进行了计时(计时按24小时制),分别记录了自己当天开始训练的时间a时b分c秒和结束训练的时间d时e分f秒。请计算出小张当天总的游泳训练时间。
【输入形式】

       游泳训练的开始时间和结束时间,开始与结束时间之间以空格作为间隔,时间格式均为“时:分:秒”。
【输出形式】

       总的训练时间,格式为“时:分:秒”,其中分秒不足两位的左补0。
【样例输入】

       11:20:15 11:25:21
【样例输出】

        0:05:06
【提示】

       数据输入部分参考“数据格式化处理”

//游泳训练时间计算
//为了备战游泳比赛,小张在拼命训练以获取好的名次。
//某天小张对自己的游泳训练时间进行了计时(计时按24小时制),
//分别记录了自己当天开始训练的时间a时b分c秒和结束训练的时间d时e分f秒。请计算出小张当天总的游泳训练时间。
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
	int s1,f1,m1,s2,f2,m2;
	char ch;
	cin>>s1>>ch>>f1>>ch>>m1>>s2>>ch>>f2>>ch>>m2;
	int sum1=s1*3600+f1*60+m1;
	int sum2=s2*3600+f2*60+m2; 
	int temp=sum2-sum1;  //时间差
	int s0=temp/3600;  //小时数
	int f0=(temp-s0*3600)/60;  //分钟数
	int m0=temp-3600*s0-60*f0;
	printf("%d:%02d:%02d",s0,f0,m0);  //输出考虑分秒不足补0 
	return 0;
}

6.坐标格式化处理

【问题描述】

输入3组坐标(整形),按指定格式输出
【输入形式】

(x1,y1),(x2,y2),(x3,y3)

【输出形式】

[x1,y1]

[x2,y2]

[x3,y3]

【样例输入】

(1,1),(2,3),(4,5)

【样例输出】

[1,1]

[2,3]

[4,5]

【样例说明】

所有输入输出的符号均为半角英文字符

本题考核的重点是数据的格式化输入

【输入方法一】

int x1,y1,x2,y2,x3,y3;
scanf("(%d,%d),(%d,%d),(%d,%d)",&x1,&y1,&x2,&y2,&x3,&y3);

【输入方法二】

int x1,y1,x2,y2,x3,y3;
char ch;
cin>>ch>>x1>>ch>>y1>>ch>>ch>>ch>>x2>>ch>>y2>>ch>>ch>>ch>>x3>>ch>>y3>>ch;
//坐标格式化处理
//输入3组坐标(整形),按指定格式输出
#include<iostream>
using namespace std;
int main()
{
	char c; //声明一个变量
	int x1,x2,x3,y1,y2,y3;
	cin>>c>>x1>>c>>y1>>c>>c>>c>>x2>>c>>y2>>c>>c>>c>>x3>>c>>y3>>c;
	cout<<'['<<x1<<','<<y1<<']'<<endl; 
	cout<<'['<<x2<<','<<y2<<']'<<endl;
	cout<<'['<<x3<<','<<y3<<']'<<endl;
	return 0;
}

7.支票代码输出 

【问题描述】

输入支票代码(正整数)和支票金额(浮点数);按格式要求输出:支票代码占8位,不足8位,则补充前导符‘0’;支票金额保留两位小数 。

【样例输入】

123456 123.1

【样例输出】

00123456

123.10

【样例说明】

相关知识点:浮点数输出时的精度,宽度和填充字符

//支票代码输出
//输入支票代码(正整数)和支票金额(浮点数);按格式要求输出:
//支票代码占8位,不足8位,则补充前导符‘0’;支票金额保留两位小数 。
#include<iostream>
#include<iomanip>
#include<bit/stdc++.h>  //万能 
using namespace std;
int main()
{
	int zp=0;
	double money=0.0;
	cin>>zp>>money;
	cout<<setw(8)<<setfill('0')<<zp<<endl; //占8位,不足补充0 
	cout<<fixed<<setprecision(2)<<money<<endl; //保留两位小数 
	return 0;
}
当然可以。这个程序设计通常需要分为两个部分: 1. 计算两个数字的基本运算:对于输入的两个非零正整数 `num1` 和 `num2`,你需要创建四个函数分别用于计算它们的和 (`sum`)、差 (`difference`)、积 (`product`) 和商 (`quotient`,保留两位小数)。这里可以用到 Python 的基本数学运算符。 ```python def sum_of_two_numbers(num1, num2): return num1 + num2 def difference_of_two_numbers(num1, num2): return num1 - num2 def product_of_two_numbers(num1, num2): return num1 * num2 def quotient_and_decimal(num1, num2): quotient = float(num1) / num2 return round(quotient, 2) ``` 2. 转换长度单位:这部分需要一些额外的转换因子。例如,将英寸(`in`)转换为其他单位(码、英尺和英里),你可以定义一个辅助函数来处理这种转换。 ```python def convert_inches_to_other_units(inches): yards = inches / 3 feet = inches / 12 miles = inches / (1760 * 12) # 1 英里等于 1760 码,1 码等于 3 英尺 return yards, feet, miles # 主函数 def main(): num1 = int(input("输入第一个非零正整数:")) num2 = int(input("输入第个非零正整数:")) result_sum = sum_of_two_numbers(num1, num2) result_diff = difference_of_two_numbers(num1, num2) result_prod = product_of_two_numbers(num1, num2) result_quotient = quotient_and_decimal(num1, num2) yards, feet, miles = convert_inches_to_other_units(num1) # 用num1作为示例,num2同样处理 print(f"和: {result_sum}") print(f"差: {result_diff}") print(f"积: {result_prod}") print(f"商 (保留2位小数): {result_quotient}") print(f"{num1}英寸相当于:") print(f" yd: {yards:.2f}, ft: {feet:.2f}, mi: {miles:.2f}") if __name__ == "__main__": main() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值