选拔试题题解

前言

这些题目已经很简单了,你们主要的问题还是在语法上没有掌握该怎么去写。

第一题

不就是个简单的a+b吗,没什么要讲的吧,把这个格式记住了。

#include <cstdio>
int a,b;
int main()
{
	scanf("%d%d",&a,&b);//输入/给变量赋值
	//给变量赋值的时候除了字符串变量,其余类型的都要在变量名前加取址符&
	printf("%d",a+b);//输出
	return 0;
}

注意了:以后写头文件给我用cstdio,我们用c++的文件头去写c语言会方便很多,以后你就知道了。还有变量除了循环使用的变量都被我放到main函数上面去申请。 cstdlib和windows.h用不到,这些最简单的题目用一个cstdio就行了。

第二题

在这里插入图片描述
这思路很简单啊,如果答案不就是a.b(元)/1.9(元/个)吗,要是涉及到小数点的话有点麻烦我们直接将两边同时乘10换算成角来计算即可。
tips:int代表整型,不管是几除以几结果都是只保留整数—> 5/3=1

#include <cstdio>
int a,b,c,ans;
int main()
{
	scanf("%d%d",&a,&b);
	c = 10*a+b;
	ans = c/19;
	printf("%d",ans);
	return 0;
}

第三题

这里涉及到了数组的运用,我之前也是讲过的。
在这里插入图片描述
思路:用一个数组将10个苹果的高度记录下来,再于最大高度进行比较,符合条件就将ans + 1即可。

#include <cstdio>
int a[11];//第一个是a[0],第十一个是a[10];
int t;
int ans = 0;//其实全局变量初始化就是0,局部变量不是。
int main()
{
	int i;//用于循环变量放在函数里面
	for(i=1;i<=10;i++)scanf("%d",&a[i]);
	scanf("%d",&t);
	/*比较清楚的写法*/
	for(i=1;i<=10;i++)
		if(a[i] <= t+30)
			ans++;
	/*一行流,像这种只有一个语句的我一般直接一行解决*/
	for(i=1;i<=10;i++)if(a[i] <= t+30)ans++;
	printf("%d",ans);
	return 0;
}

第四题

在这里插入图片描述

模拟一下就行了

#include <cstdio>
int n,k;
int ans;
int main()
{
    int i;
    scanf("%d%d",&n,&k);
    ans=n;//他本来就有n支烟
    int num=n;//代表换完一轮烟后还剩下的烟蒂数
    int t;
    while((num/k)>0)//只要还能凑出一个新烟蒂的话
    {
        ans+=(num/k);//换来的烟
        t=(num/k)+(num%k);//换来的烟抽完后的烟蒂+由于不够换一支烟而剩下的烟蒂
        num=t;
    }
    printf("%d",ans);
    return 0;
}

第五题

在这里插入图片描述

还是模拟啊
我们现在之上画一下:以样例为例子乘号用x表示
第零轮:1 = 1
第一轮:1+1x10 = 11
第二轮:(1+1x10)+(1+1x10)x10 =11+11x10 = 11x11 =121
第三轮:121+121x10 = 121x11 11^3
设每个禽兽会传染n个禽兽:
第零轮:1
第一轮:1+1xn = 1+n
第二轮:(1+n)+(1+n)xn = (n+1)^2
设(n+1)^2 = N
第三轮:N + Nxn = Nx(n+1)
也就是(n+1)^3
还有什么问题吗?
这题我只用python写过现在现场手写好吧:

#include <cstdio>
int x,n;
long long int ans=1int main()
{
	scanf("%d%d",&x,&n);
	int i;
	for(i=1;i<=n;i++)ans *= (x+1);
	printf("%d",ans);
	return 0;
}

在这里插入图片描述

这里倒是有个注意事项:
int型变量能表达的数字的范围在-2147483648-2147483647[-2^31- 2^31-1],而题目有多个测试点的值已经超过的int所能表达的范围,所以我们的ans需要开long long int 。
为什么是这样呢?我以后会讲,有兴趣的可以先自行查查。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值