琼海市网站建设_网站建设公司_需求分析_seo优化
2026/1/2 18:08:37 网站建设 项目流程

🔭个人主页:散峰而望

《C语言:从基础到进阶》《编程工具的下载和使用》《C语言刷题》《算法竞赛从入门到获奖》《人工智能AI学习》《AI Agent》

愿为出海月,不做归山云

🎬博主简介

【算法竞赛】C++入门(三)、C++输入输出 -- 习题篇

  • 鸡兔共笼
  • 计算 (a+b)×c 的值
  • 带余除法
  • 整数的个位
  • 整数的十位
  • 时间转换
  • 小鱼的游泳时间
  • 账户余额
  • 交换值
  • 成绩
  • 浮点数向零舍入
  • 打印 ASCII 码
  • 打印字符
  • 浮点除法
  • 甲流疫情死亡率
  • 温度表达转化
  • 计算并联电阻的阻值
  • 与圆相关的计算
  • 对齐输出
  • 糖果游戏
  • 数字反转
  • 三角形面积
  • 结语

鸡兔共笼

鸡兔共笼

由题目要求算出鸡兔各有多少只,该题有多种解法,这里我例举两种方法:

题解:

  1. 设鸡有 j 只,兔有 t 只,头记为 h,脚记为 f
  2. 法一:用方程j + t == hj * 2 + t * 4 == f
    法二:假设都是 4 只脚(j + t) * 4 = 140,则多出来的脚数再除以 2 便得到鸡的数量
//法一#include<iostream>usingnamespacestd;intmain(){intj=0;//鸡intt=0;//兔inth=35;//头intf=94;//脚t=(f-h*2)/2;j=h-t;cout<<t<<" "<<j<<endl;return0;}
//法二#include<iostream>usingnamespacestd;intmain(){intj=0;//鸡intt=0;//兔inth=35;//头intf=94;//脚j=(4*h-f)/2;t=h-j;cout<<t<<" "<<j<<endl;return0;}

计算 (a+b)×c 的值

计算 (a+b)×c 的值

题目简单按照题目要求即可

#include<iostream>usingnamespacestd;inta,b,c;intmain(){cin>>a>>b>>c;intr=(a+b)*c;cout<<r<<endl;return0;}

提示:
这个题目一定能注意,数据范围,-10^4 < a,b,c < 10^4,(a+b)*c 的结果也不会超过有符号整型的最大值,而如果取值范围变成 -10^5 < a,b,c < 10^5,就需要使用 long long 类型了。

做题的时候一定要多留意数据范围。

带余除法

带余除法

题目要求不仅得到整商,还要得到余数,即用/得到商,用%得到余数

#include<iostream>usingnamespacestd;inta,b;intmain(){cin>>a>>b;cout<<a/b<<" "<<a%b<<endl;}

整数的个位

整数的个位

非常简单的题直接上代码

#include<iostream>usingnamespacestd;inta;intmain(){cin>>a;cout<<a%10<<endl;return0;}

整数的十位

整数的十位

如果想要得到十位那么就要余上 100 得到十位和个位上面的数之后再把个位数除去即可。

题解:

  1. 假设输入的为 a
  2. 之后 a % 100 / 10即可
#include<iostream>usingnamespacestd;inta;intmain(){cin>>a;cout<<a%100/10<<endl;return0;}

时间转换

时间转换

题解:
由题目的示例 1,我们可以推测出秒是余数,而分钟需要除以 60 并余下 60 得到,小时除两次 60。
即:

  1. time除以60(1分钟有60秒)先换算出分钟数,分钟数除以60(1小时有60分钟)交换算成小时。
  2. time除以60(1分钟有60秒)先换算出分钟数,分钟数对60取模,就是换完小时后剩余的分钟数
  3. time对60取模,每60秒凑1分钟,还剩多少多少秒,没办法凑够一分钟。
#include<iostream>usingnamespacestd;intmain(){inttime;cin>>time;cout<<time/60/60<<" "<<time/60%60<<" "<<time%60<<endl;return0;}

小鱼的游泳时间

小鱼的游泳时间

由题目可知,题目让我们求小鱼的游泳时间,即我们算出两个时间段的差值,然后按照小时分钟输出即可

题解:

  1. 输入两个时间点的时分
  2. 之后将小时换算成分钟计算两个时间点之间的时间段
  3. 接着将算出的时间重新换算成时分
#include<iostream>usingnamespacestd;intmain(){inta,b,c,d;cin>>a>>b>>c>>d;intt=c*60+d-a*60-b;inth,m;h=t/60;m=t%60;cout<<h<<" "<<m<<endl;return0;}

账户余额

小明账户有 100 元,经过了下面的操作:

  • 往里面存了 10 元
  • 购物花掉了 20 元
  • 把里面的钱全部取出
    请在每次操作后输出账户余额:
#include<iostream>usingnamespacestd;intmain(){intbalance=100;balance+=10;cout<<balance<<endl;balance-=20;cout<<balance<<endl;balance=0;cout<<balance<<endl;return0;}

提示:
使用复合赋值操作符能够让代码更简洁,但需要注意,不要一味地追求代码简洁,过于简洁的代码在可读性上会差一些。

交换值

交换值

题解:
非常简单的题目只需要设一个中间的变量,然后利用中间值交换一下就行。不过还有一种写法就是使用^来处理不能使用中间变量交换的情况,到后面位运算和操作符会进行详细的讲解

#include<iostream>usingnamespacestd;intmain(){inta=0;intb=0;cin>>a>>b;intc=a;//c是一个临时变量,作为中间变量实现交换的a=b;b=c;cout<<a<<" "<<b<<endl;return0;}

成绩

成绩

题解:
按照题目要求让 a,b,c 每一科乘以对应的百分比
同时还要注意题目要求总成绩一定是整数,需要乘以完各对应成绩的百分比后强转为整型

#include<iostream>usingnamespacestd;inta,b,c;intret;intmain(){cin>>a>>b>>c;ret=(int)(a*0.2+b*0.3+c*0.5);//这里进行了强制类型转换//也可以写成这样 int ret = (a * 0.2 + b * 0.3 + c * 0.5);cout<<ret<<endl;return0;}

浮点数向零舍入

浮点数向零舍入

非常简单题目,只需要注意一下图片中红框的内容。

#include<iostream>usingnamespacestd;doublex;intmain(){cin>>x;cout<<(longlong)x<<endl;//题目给的数据较大,强制转换为int,存在漏洞return0;}

打印 ASCII 码

打印 ASCII 码

也是一道简单题只需要输出强转一下整型即可。

#include<iostream>usingnamespacestd;intmain(){charc=0;cin>>c;cout<<(int)c<<endl;//如果没有强制类型转换,编译器会认为c是字符类型,打印的依然是字符return0;}

打印字符

打印字符

和上面的那道题一样输出时需要强转类型。

#include<iostream>usingnamespacestd;intmain(){intn=0;cin>>n;cout<<(char)n<<endl;//利用强制类型转换,将ASCII码值按照字符类型打印return0;}

浮点除法

浮点除法

题解:
根据题目要求输入两个整数然后相除得到一个小数,并且只有小于等于 10^3 时才被接受。
即我们需要保证最后输出的小数保留有 3 位小数

#include<iostream>#include<cstdio>usingnamespacestd;intmain(){inta,b;cin>>a>>b;printf("%.3lf\n",a*1.0/b);return0;}

甲流疫情死亡率

甲流疫情死亡率

和上面一道题类似,只需要注意一下以下一些情况:

  1. 百分号 % 可以这样输出:printf(“%%”);
  2. 注意a和b的取值范围
  3. 百分比不是直接b/a,是需要乘以100.0的,因为需要得到小数,所以要是小数除法
  4. 有时候:先乘 100 再除 a,还是先除 a 再乘 100 是有差异的。
    比如:4/8 * 100 和 4 * 100/8 的结果就有差异的。

#include<cstdio>intmain(){inta,b;scanf("%d%d",&a,&b);printf("%.3lf%%\n",b*100.0/a);return0;}

温度表达转化

温度表达转化

按照题目要求输入输出就行。

#include<cstdio>intmain(){doublef=0;scanf("%lf",&f);doublec=5*(f-32)/9.0;printf("%.5lf\n",c);return0;}

计算并联电阻的阻值

计算并联电阻的阻值

按照题目要求输入输出就行。

#include<iostream>#include<cstdio>usingnamespacestd;intmain(){doubler1=0,r2=0;cin>>r1>>r2;doubleret=1.0/(1.0/r1+1.0/r2);printf("%.2lf\n",ret);return0;}

与圆相关的计算

与圆相关的计算

按照题目要求输入输出就行。

#include<iostream>#include<cstdio>usingnamespacestd;constdoublePI=3.14159;doubler,z,len,area;intmain(){cin>>r;z=2*r;len=2*PI*r;area=PI*r*r;printf("%.4lf %.4lf %.4lf\n",z,len,area);return0;}

对齐输出

对齐输出

按照题目要求输入输出就行。

#include<iostream>#include<cstdio>usingnamespacestd;intmain(){inta,b,c;cin>>a>>b>>c;printf("%8d %8d %8d\n",a,b,c);return0;}

糖果游戏

糖果游戏

题解:
这道题稍微复杂一些,这里举个例子。假如 1 小朋友有 7 个糖果,需要分成 3 份,分别给旁边的 2 和 5 小朋友,即最后 1 小朋友留下 2 个糖果,2 和 5 各得 2 糖果,多的糖果被 1 小朋友吃掉。之后 2,3,4,5 小朋友重复以上操作。
然后最好画一个图分清每个小朋友给糖情况。

#include<iostream>#include<cstdio>usingnamespacestd;intmain(){inta,b,c,d,e;cin>>a>>b>>c>>d>>e;a/=3;e+=a;b+=a;b/=3;a+=b;c+=b;c/=3;b+=c;d+=c;d/=3;c+=d;e+=d;e/=3;d+=e;a+=e;printf("%5d%5d%5d%5d%5d\n",a,b,c,d,e);return0;}

数字反转

数字反转

按照题目要求输入输出即可。

//代码1#include<iostream>usingnamespacestd;intmain(){chara,b,c,d,e;cin>>a>>b>>c>>d>>e;cout<<e<<d<<c<<b<<a<<endl;return0;}//代码2#include<cstdio>intmain(){chara,b,c,d;scanf("%c%c%c.%c",&a,&b,&c,&d);printf("%c.%c%c%c\n",d,c,b,a);return0;}

三角形面积

三角形面积

//代码1#include<iostream>#include<cmath>#include<iomanip>usingnamespacestd;intmain(){doublea,b,c;cin>>a>>b>>c;doublep=(a+b+c)/2;doublearea=sqrt(p*(p-a)*(p-b)*(p-c));cout<<fixed<<setprecision(1)<<area<<endl;return0;}//代码2#include<iostream>#include<cmath>#include<cstdio>usingnamespacestd;intmain(){doublea,b,c;cin>>a>>b>>c;doublep=(a+b+c)/2;doublearea=sqrt(p*(p-a)*(p-b)*(p-c));printf("%.1f\n",area);return0;}

这里给大家介绍一个库函数sqrt,这个函数是计算平方根的,函数原型如下:

doublesqrt(doublex);floatsqrt(floatx);longdoublesqrt(longdoublex);

函数可以计算出参数 x 的平方根,然后返回,这个函数需要的头文件是< cmath >


结语

这些可以熟悉C++的基本输入输出操作,包括cincout的使用、数据类型的匹配以及简单的格式化输出。

掌握这些基础技能是算法竞赛的起点,后续的题目会涉及更复杂的数据处理和逻辑控制。建议反复练习,确保能快速准确地处理输入输出,为更高阶的算法学习打下坚实基础。

多尝试不同的输入输出方式,如读取多组数据、处理字符串或特殊格式要求,逐步提升代码的效率。

愿诸君能一起共渡重重浪,终见缛彩遥分地,繁光远缀天

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询