1 、计算 (a+b)/c 的值 给定 3 个整数 a、b、c,计算表达式(a+b)/c 的值,/是整除运算。 输入: 输入仅一行,包括三个整数 a、b、c, 数与数之间以一个空格分开。(-10,000 < a,b,c < 10,000, c 不等于 0) 输出: 输出一行,即表达式的值。 样例输入 1 1 3 样例输出
#include<iostream>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
cout<<(a+b)/c;
return 0;
}
2 、反向输出一个三位数( 2020 年真题) 将一个三位数反向输出。 输入: 一个三位数 n。 输出: 反向输出 n。 样例输入 100 样例输出 001
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
cout<<n%10<<n/10%10<<n/100;
return 0;
}
3 、打印字符 输入一个 ASCII 码,输出对应的字符。 输入 一个整数,即字符的 ASCII 码,保证存在对应的可见字符。 输出 一行,包含相应的字符。 样例输入 65 样例输出 A
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
cout<<(char)n;
return 0;
}
4 、输出保留 12 位小数的浮点数 读入一个双精度浮点数,保留 12 位小数,输出这个浮点数。 输入: 只有一行,一个双精度浮点数。 输出: 也只有一行,保留 12 位小数的浮点数。 样例输入 3.1415926535798932 样例输出 3.141592653580
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
double f;
cin>>f;
cout<<fixed<<setprecision(12)<<f;
return 0;
}
5 、判断能否被 3 , 5 , 7 整除 给定一个整数,判断它能否被 3,5,7 整除,并输出以下信息: 1、能同时被 3,5,7 整除(直接输出 3 5 7,每个数中间一个空格); 2、只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5 或者 3 7 或者 5 7,中间用空格分隔); 3、只能被其中一个数整除(输出这个除数); 4、不能被任何数整除,输出小写字符‘ n’,不包括单引号。 输入: 输入一行,包括一个整数。 输出: 输出一行,按照描述要求给出整数被 3,5,7 整除的情况。
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
if(n%3==0&&n%5==0&&n%7==0){
cout<<3<<" "<<5<<" "<<7;
}else if(n%3==0&&n%5==0){
cout<<3<<" "<<5;
}else if(n%3==0&&n%7==0){
cout<<3<<" "<<7;
}else if(n%5==0&&n%7==0){
cout<<5<<" "<<7;
}else if(n%3==0){
cout<<3;
}else if(n%5==0){
cout<<5;
}else if(n%7==0){
cout<<7;
}else{
cout<<"n";
}
return 0;
}
6 、骑车与走路 在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是 骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间.假设找到自行车, 开锁并车上自行车的时间为 27 秒;停车锁车的时间为 23 秒;步行每秒行走 1.2 米,骑车 每秒行走 3.0 米。请判断走不同的距离去办事,是骑车快还是走路快。 输入:输入一行,包含一个整数,表示一次办事要行走的距离,单位为米。 输出:输出一行,如果骑车快,输出一行"Bike";如果走路快,输出一行"Walk";如果一样 快,输出一行"All"。 样例输入 120 样例输出 Bike
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
double bs=n*1.0/3.0+50;
double ws=n*1.0/1.2;
if(bs<ws){
cout<<"Bike";
}else if(bs>ws){
cout<<"Walk";
}else{
cout<<"All";
}
return 0;
}
7 、画矩形 根据参数,画出矩形。 输入: 输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于 3 行 不多于 10 行,宽不少于 5 列不多于 10 列);第三个参数是一个字符,表示用来画图的 矩形符号;第四个参数为 1 或 0,0 代表空心,1 代表实心。 输出:输出画出的图形。 样例输入 7 7 @ 0 样例输出 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
#include<iostream>
using namespace std;
int main(){
int g,k;
char ch;
int f;
cin>>g>>k>>ch>>f;
if(f==1){
for(int i=0;i<k;i++){
for(int j=0;j<g;j++){
cout<<ch;
}
cout<<endl;
}
}else{
for(int i=0;i<k;i++){
for(int j=0;j<g;j++){
if(i==0||i==k-1||j==0||j==g-1)
cout<<ch;
else
cout<<" ";
}
cout<<endl;
}
}
return 0;
}
8 、含 k 个 3 的数 输入两个正整数 m 和 k,其中 1 < m < 100000,1 < k < 5 ,判断 m 能否被 19 整除,且恰好含有 k 个 3,如果满足条件,则输出 YES,否则,输出 NO。 例如,输入: 43833 3 满足条件,输出 YES。 如果输入: 39331 3 尽管有 3 个 3,但不能被 19 整除,也不满足条件,应输出 NO。 输入: m 和 k 的值,中间用单个空格间隔。 输出: 满足条件时输出 YES,不满足时输出 NO。 样例输入 43833 3 样例输出
#include<iostream>
using namespace std;
int main(){
int m, k, n, sum=0;
cin >> m >> k;
n = m;
while (n>0){
if (n%10==3) sum++;
n/= 10;
}
if (m%19==0 && sum==k)
cout << "YES" << endl;
else
cout << "NO" << endl;
return 0;
}
9 、计算表达式的值 给定整数 x,y 的值,计算 3x+2y 的值。 输入 一行包括 2 个整数 x,y,以空格作为分隔。数据保证最后计算结果还在整数表示范围内。 (-10000<a,b,c<10000) 输出 按照题目要求输出结果。 样例输入 2 3 样例输出 12
#include<iostream>
using namespace std;
int main(){
int x,y;
cin>>x>>y;
cout<<3*x+2*y;
return 0;
}
10 、判断是否存在重复的数( 2019 年真题) 给定 3 个数,判断是否存在 2 个数相等,如果存在输出“YES”,否则输出“ NO”。 输入 一行,包括 3 个整数,以空格分隔。 输出 按照题目要求输出结果。 样例输入:2 7 2 样例输出:YES
#include<iostream>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
if(a==b||b==c||a==c){
cout<<"YES";
}else{
cout<<"NO";
}
return 0;
}
11 、日期输出 给定两个整数,表示一个日期的月和日。请按照“ MM-DD”的格式输出日期,即如果 月和日不到 2 位时,填补 0 使得满足 2 位。 输入 2 个整数 m,d(0<m<=12,0<d<=31)。 数据保证日期合法。 输出 按照题目要求输出日期 样例输入 7 18 样例输出 07-18
#include<iostream>
using namespace std;
int main() {
int m,d;
cin>>m>>d;
if(m<10) cout<<"0";
cout<<m<<"-";
if(d<10)
cout<<"0";
cout<<d;
return 0;
}
12 、与指定数字相同的数的个数 输出一个整数序列中与指定数字相同的数的个数。 输入 输入包含 2 行:第一行为 N 和 m,表示整数序列的长度(N <= 100)和指定的数字,中间 用一个空格分开;第 2 行为 N 个整数,整数之间以一个空格分开。 输出 输出为 N 个数中与 m 相同的数的个数。 样例输入 3 2 2 3 2 样例输出 2
#include<iostream>
using namespace std;
int main() {
int N,m,k,sum=0; cin>>N>>m;
for(int i=1;i<=N;i++) {
cin>>k;
if(k==m)
sum++;
}
cout<<sum;
return 0;
}
13 、输出第二个整数 输入三个整数,把第二个输入的整数输出。 输入 只有一行,共三个整数,整数之间由一个空格分隔。整数是 32 位有符号整数。 输出 只有一行,一个整数,即输入的第二个整数。 样例输入:123 456 789 样例输出:456
#include<iostream>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
cout<<b;
}
14 、浮点数向零舍入 输入一个单精度浮点数,将其向零舍入到整数。 说明:向零舍入的含义是,正数向下舍入,负数向上舍入。 提示:可以使用强制类型转换来实现。 输入:一个单精度浮点数。 输出:一个整数,即向零舍入到整数的结果。 样例输入:2.3 样例输出:2
#include<iostream>
using namespace std;
int main(){
float f;
cin>>f;
cout<<(int)f;
}
15 、计算 (a+b)*c 的值 给定 3 个整数 a、b、C,计算表达式(a+b)*c 的值。 输入 输入仅一行,包括三个整数 a、 b、 C,数与数之间以一个空格分开。(-10000<a, b, c<10000) 输出 输出一行,即表达式的值。 样例输入:2 3 5 样例输出:25
#include<iostream>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
cout<<(a+b)*c;
}
16 、苹果和虫子 你买了一箱 n 个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每 X 小时能 吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过 y 小时你还有多 少个完整的苹果? 输入 输入仅一行,包括 n,X 和 y(均为整数)。输入数据保证 y<=n*X。 输出 输出也仅一行,剩下的苹果个数。 样例输入 10 4 9 样例输出 7
#include <iostream>
using namespace std;
int main(){
int n,x,y;
int m;
cin>>n>>x>>y;
if(y <= n * x){
m=y/x;
if(y%x>0)
cout<<n-m-1;
else
cout<<n-m;
}else{
cout<<0;
}
return 0;
}
17 、输出绝对值 输入一个浮点数,输出这个浮点数的绝对值。 输入 输入一个浮点数,其绝对值不超过 10000。 输出 输出这个浮点数的绝对值,保留到小数点后两位。 样例输入:-3.14 样例输出:3.14
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
float f;
cin>>f;
if(f<0){
cout<<fixed<<setprecision(2)<<-f;
}else{
cout<<fixed<<setprecision(2)<<f;
}
}
18 、计算邮资 根据邮件的重量和用户是否选择加急计算邮费。 计算规则: 重量在 1000 克以内(包括 1000 克),基本费 8 元。 超过 1000 克的部分每 500 克加收超重费 4 元,不足 500 克部分按 500 克计算;如果用户 选择加急,多收 5 元。 输入 输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加 急。 如果字符是 y,说明选择加急;如果字符是 n,说明不加急。 输出 输出一行,包含一个整数,表示邮费。 样例输入 1200 y
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int x;
char y;
int z;
cin>>x>>y;
if(x<=1000){
z=8;
}else{
if((x-1000)%500==0){
z=8+(x-1000)/500*4;
}else{
z=8+(x-1000)/500*4+4;
}
}
if(y=='y'){
z=z+5;
}
cout<<z;
return 0;
}
19 、求整数的和与均值 读入 n(1<=n<=10000)个整数,求它们的和与均值。 时间跟制:1000 内存限制:65536 输入 输入第一行是一个整数 n,表示有 n 个整数。 第 2~n+1 行每行包含 1 个整数。 每个整数的绝对值均不超过 10000 输出 输出一行,先输出和,再输出平均值(保留到小数点后 5 位), 两个数用单个空格分隔。 样例输入:4 344 222 343 222 样例输出 1131 282.75000
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n,t,sum=0;
cin>>n;
for(int i=1;i<=n;i++) {
cin>>t; sum=sum+t;
}
cout<<sum<<" ";
printf("%.5f",sum*1.0/n);
return 0;
}
20 、数 1 的个数 给定一个十进制正整数 n,写下从 1 到 n 的所有整数,然后数一下其中出现的数字 1 的个数。 例如: 当 n=2 时,写下 1,2。 这样只出现了 1 个 1; 当 n=12 时,写下 1,2,3,4,5,6,7,8,9,10,11,12。 这样出现了 5 个 1。 输入:正整数 n。1<=n<=10000。 输出:一个正整数,即 1 的个数。 样例输入 12 样例输出 5
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n,t,sum=0;
cin>>n;
for(int i=1; i<=n; i++) {
t=i;
while(t!=0) {
if(t%10==1)
sum++;
t=t/10;
}
}
cout<<sum; return 0;
}
21 、逻辑判断问题 输入三个数 a,b,c,输出最大者。
#include<iostream>
using namespace std;
int main() {
int a,b,c,max=0;
cin>>a>>b>>c;
max=a; //打擂法
if(b>max)
max=b;
if(c>max)
max=c;
cout<<max;
return 0;
}
22 、 ASCII 码 输入一个字符,通过计算输出该字符的前一个字符和后一个字符。
#include<iostream>
using namespace std;
int main() {
char n;
cin>>n;
cout<<char(n-1)<<" "<<char(n+1);
return 0;
}
23 、判断平闰年 判断闰年的规则:四年一闰,百年不闰, 四百年一闰。 输入的年份是闰年,则输出“YES”,否则输出“ NO”。
#include<iostream>
using namespace std;
int main() {
int year;
cin>>year;
if(year%4==0&&year%100!=0||year%400==0)
cout<<"YES";
else
cout<<"NO";
return 0;
}
24 、求最大公约数 输入两个整数后,求这两个整数的最大公约数。
#include <iostream>
using namespace std;
int main() {
int m,n,k,i;
cin>>m>>n;
k=min(m,n);
for(i=k; i>=1; i--) { //用最小数做循环次数
if(m%i==0&&n%i==0) {
cout<<i;
break;
}
}
return 0;
}
25 、分糖果游戏 有三个小朋友甲乙丙。甲有 50 粒糖果,乙有 43 粒糖果,丙有 13 粒糖果。现在他们做一个游戏。从甲开始,将自己的糖分三份,自己留一份,其余 两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。问最后甲、乙、 丙三人各有多少粒糖果?
#include<iostream>
using namespace std;
int main() {
int a=50,b=43,c=13;
a=a/3;
b=(a+b)/3;
c=(a+b+c)/3;
cout<<a<<" "<<b<<" "<<c;
return 0;
}
26 、自行车和三轮车 鸡兔同笼问题 某车棚存有自行车和三轮车共 65 辆,它 们的轮子数合计为 150 个,求该棚内存有的自行车和三轮车各是多少辆?
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
int a=65,b=150;
int bike,sanlun;
sanlun=b-a*2;
bike=a-sanlun;
cout<<bike<<" "<<sanlun;
return 0;
}
27 、数据分段问题 某市的士费起步价 8 元,可以行驶 3 公里。3 公里以后, 按每公里 1.6 元计算,输入的士的公里数,请你计算顾客需付费多少元?
#include <iostream>
using namespace std;
int main() {
int lc;
float fy;
cin>>lc;
if(lc<=3)
fy=8;
else
fy=8+(lc-3)*1.6;
cout<<fy;
return 0;
}
28 、字符菱形 给定一个字符,用它构造一个对角线长 5 个字符,倾斜放置的菱形。 输入:输入只有一行, 包含一个字符。 输出 该字符构成的菱形。 样例输入 * 样例输出 *
#include <iostream>
using namespace std;
int main() {
char a;
cin>>a;
cout<<" "<<" "<<a<<endl;
cout<<" "<<a<<a<<a<<endl;
cout<<a<<a<<a<<a<<a<<endl;
cout<<" "<<a<<a<<a<<endl;
cout<<" "<<" "<<a<<endl;
return 0;
}
29 、对齐输出 读入三个整数,按每个整数占 8 个字符的宽度,右对齐输出它们。 输入 只有一行,包含三个整数,整数之间以一个空格分开。 输出 只有一行,按照格式要求依次输出三个整数,之间以一个空格分开。 样例输入 123456789 0 -1 样例输出 123456789 0 -1
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
int a,b,c;
cin>>a>>b>>c;
printf("%8d %8d %8d",a,b,c);
return 0;
}
30 、等差数列末项计算 给出一个等差数列的前两项 a1,a2,求第 n 项是多少。 输入 一行,包含三个整数 a1,a2,n。-100 <= a1,a2 <= 100,0 < n <= 1000。 输出 一个整数,即第 n 项的值。 样例输入:1 4 100 样例输出:298
#include<iostream>
using namespace std;
int main() {
int a1,a2,an,n;
cin>>a1>>a2>>n;
an=a1+(n-1)*(a2-a1);
cout<<an;
return 0;
}
31 、计算线段长度 已知线段的两个端点的坐标 A( Xa,Ya),B( Xb,Yb),求线段 AB 的长度。 输入共两行。 第一行是两个实数 Xa,Ya,即 A 的坐标。 第二行是两个实数 Xb,Yb,即 B 的坐标。 输入中所有实数的绝对值均不超过 10000。 输出 一个实数,即线段 AB 的长度,保留到小数点后 3 位。 样例输入 1 1 2 2 样例输出 1.414 32 、计算 2 的幂 给定非负整数 n,求 2n。 输入 一个整数 n。0 <= n < 31。 输出 一个整数,即 2 的 n 次方。 样例输入 3 样例输出 8 33 、奇偶数判断 给定一个整数,判断该数是奇数还是偶数。 输入 输入仅一行,一个大于零的正整数 n。 输出 输出仅一行,如果 n 是奇数,输出 odd;如果 n 是偶数,输出 even。 样例输入 5 样例输出 odd 34 、分段函数 编写程序,计算下列分段函数 y=f(x)的值。 y=-x+2.5; 0 <= x < 5 y=2-1.5(x-3)(x-3); 5 <= x < 10 y=x/2-1.5; 10 <= x < 20 输入 一个浮点数 N,0 <= N < 20 输出 输出 N 对应的分段函数值:f(N)。结果保留到小数点后三位。 样例输入 1.0 样例输出 1.500 35 、银行利息 农夫约翰在去年赚了一大笔钱!他想要把这些钱用于投资,并对自己能得到多少收 益感到好奇。已知投资的复合年利率为 R( 0 到 20 之间的整数)。约翰现有总值为 M 的 钱( 100 到 1,000,000 之间的整数)。他清楚地知道自己要投资 Y 年(范围 0 到 400)。 请帮助他计算最终他会有多少钱,并输出它的整数部分。数据保证输出结果在 32 位有 符号整数范围内。 输入 一行包含三个整数 R,M,Y,相邻两个整数之间用单个空格隔开。 输出 一个整数,即约翰最终拥有多少钱(整数部分)。 样例输入内部资料 请勿外传 翻印必究 5 5000 4 样例输出 6077 提示 在样例中, 第一年后: 1.05 * 5000 = 5250 第二年后: 1.05 * 5250 = 5512.5 第三年后: 1.05 * 5512.50 = 5788.125 第四年后: 1.05 * 5788.125 = 6077.53125 6077.53125 的整数部分为 6077。 来源:USACO 2004 November 36 、财务管理 Larry 今年毕业并找到了一份工作。他赚很多钱,但似乎总是不够。Larry 认为他需 要控制他的投资以解决自己的财务问题。Larry 拿到了自己的银行账户详单,想看看自 己有多少钱。请帮助 Larry 写一个程序,通过过去 12 个月中每月的月末结余,计算平 均结余。 输入 输入包含 12 行,每行包含一个数,为某个月的结余。每个数都是不大于 1,000,000 的 正数,保留两位小数,省略""符。 样例输入 100.00 489.12 12454.12 1234.10 823.05 109.20 5.27 1542.25 839.18 83.99 1295.01 1.75 样例输出 $1581.42
37 、计算多项式的值 对于多项式 f(x) = ax3 + bx2 + cx + d 和给定的 a, b, c, d, x,计算 f(x)的值。 输入 输入仅一行,包含 5 个实数,分别是 x,及参数 a、b、c、d 的值,每个数都是绝对值不 超过 100 的双精度浮点数。数与数之间以一个空格分开。 输出:输出一个实数,即 f(x)的值,保留到小数点后 7 位。 样例输入:2.31 1.2 2 2 3 样例输出:33.0838692 38 、温度表达转化 利用公式 C = 5 * (F-32) / 9 (其中 C 表示摄氏温度,F 表示华氏温度) 进行计 算转化。 输入 输入一行,包含一个实数 f,表示华氏温度。( f >= -459.67) 输出 输出一行,包含一个实数,表示对应的摄氏温度,要求精确到小数点后 5 位。 样例输入 41 样例输出 5.00000 提示 C/C++,使用 double 39 、与圆相关的计算 给出圆的半径,求圆的直径、周长和面积。 输入 输入包含一个实数 r( 0 < r <= 10,000),表示圆的半径。 输出 输出一行,包含三个数,分别表示圆的直径、周长、面积,数与数之间以一个空格分开, 每个数保留小数点后 4 位。 样例输入 3.0 样例输出 6.0000 18.8495 28.2743 提示内部资料 请勿外传 翻印必究 如果圆的半径是 r,那么圆的直径、周长、面积分别是 2*r、2 * pi * r、pi * r * r, 其中约定 pi=3.14159。 可以使用 printf("%.4lf", ...)实现保留小数点后 4 位。 来源:习题(3-1) 计算概论 07(工学院)周文灵 40 、大象喝水 一只大象口渴了,要喝 20 升水才能解渴,但现在只有一个深 h 厘米,底面半径为 r 厘米的小圆桶(h 和 r 都是整数)。问大象至少要喝多少桶水才会解渴。 输入 输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深 h 和底面半径 r, 单位都是厘米。 输出 输出一行,包含一个整数,表示大象至少要喝水的桶数。 样例输入 23 11 样例输出 3 提示 如果一个圆桶的深为 h 厘米,底面半径为 r 厘米,那么它最多能装 Pi * r * r * h 立 方厘米的水。(设 Pi=3.14159) 1 升 = 1000 毫升 1 毫升 = 1 立方厘米