*1:老王又卖瓜
*2:星号阵列-17
*3:第几个星期
*4:数字和
*5:最大分差
*6:乘积最大的两个数
1:老王又卖瓜
描述 |
---|
老王第一天卖n个瓜,第二天只卖第一天一半的瓜(如果不是整数,则取整,任何一天皆如此处理),第三天只卖第二天一半的瓜,…,直到某一天一个瓜都不卖了。问老王总共卖了多少瓜? |
输入 |
一个正整数n,表示老王第一天卖的瓜。(n<=10000) |
输出 |
一个正整数,表示老王总共卖了多少瓜。 |
样例输入复制样例 |
5 |
样例输出 |
8 |
提示说明 |
5+2+1=8 |
解:
考点1:整数型/整数型=整数型,所以类似细节3/2=1
考点2:循环和退出条件
for(;;)
{
更新n
if(n为0) break;
累积和
}
2:星号阵列-17
描述 |
---|
输出左下三角形区域以及右下三角形区域都由*构成的星号阵列 |
输入 |
一个正整数n,表示星号阵列由多少行组成 |
输出 |
输出左下三角形区域以及右下三角形区域都由*构成的星号阵列。最后一行阵列输出完毕后也要换行。 |
样例输入复制样例 |
6 |
样例输出 |
解:
考点:纯纯的细心就行,找规律
这还要看代码?
略
3:第几个星期
描述 |
---|
规定一个完整的星期是从星期一到星期日。在某一年内,把1月1日规定为该年的第1个星期(当然,第1个星期不一定完整,有可能不是从星期一开始)。例如2021年的1月1日是星期五,故从2021年1月1日至1月3日是第1个星期,1月4日到1月10日是第2个星期,…,以此类推,2021年12月27日至12月31日是该年最后一个星期。现在给定一个日期,并给定这一年的1月1日是星期几,求该日期是在这一年的第几个星期。 |
输入 |
4个正整数a、b、c、d,表示a年b月c日,a年的1月1日是星期d(保证是合法日期,1<=d<=7,d=7时表示是星期日) |
输出 |
一个正整数,表示该日期是在这一年的第几个星期。不要换行。 |
样例输入复制样例 |
2021 1 12 5 |
样例输出 |
3 |
解:
考点1:闰年判断
考点2:计算天数
考点3:将数字限制在区间内
if(被4整除)
{
if((被100整除)&&(不被400整除)
{
No
}
else if(被3200整除)
{
No
}
else Yes
}
else No
m月d天
for(1到m-1)
{
计算1到m-1月天数和
}
加上d天
得到天数和sum和1月1月星期d
for(sum-1,d+1)
{
每当d超过7(非法的星期)
if(d>7)
{
周数+1
d=1(回到周一)
}
}
4:数字和
描述 |
---|
计算0到n之间所有整数的和 |
输入 |
一个整数n(-10000<=n<=10000) |
输出 |
一个整数,表示0到n之间所有整数的和。不要换行。 |
样例输入复制样例 |
-4 |
样例输出 |
-10 |
解:
考点,判断循环方向
cin>>n;
if(n<0) 循环要--
else 循环要++
5:最大分差
描述 |
---|
一个班级里有n名学生,现在已知这n名学生的C++考试成绩,求其中的成绩差距最大的两个学生之间相差了多少分 |
输入 |
一个正整数n,表示班级学生的数量。(2<=n<=100)然后是n个非负整数,表示这n名学生的成绩。(分数范围在0到100之间) |
输出 |
一个整数,表示分差最大的两个学生之间的差距。不要换行。 |
样例输入复制样例 |
540 100 80 90 65 |
样例输出 |
60 |
提示说明 |
100-40=60 |
解:
这边重点,很多题的技巧
要点:一开始默认的最大值要范围内的最小,最小值要范围内的最大
for(n次循环)
{
输入的数字t
if(t比记录的最大值大) 替换最大值;
if(t比记录的最小值小) 替换最小值;
}
6:乘积最大的两个数
描述 |
---|
找出三个整数中乘积最大的两个数 |
输入 |
三个整数a、b、c(-10000~10000之间),保证只有唯一的解。 |
输出 |
乘积最大的两个数,按小的在前大的在后的顺序,中间隔一个空格。不要换行。 |
样例输入复制样例 |
7 6 5 |
样例输出 |
6 7 |
解:
先给排个序
就能发现不是前两个就是后两个,记得考虑负数
来源
21-22(1)第1次线上赛