青少年软件编程(C++)等级考试试卷(一级)

2023/12/02

1.数的输入和输出

输入一个整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数。

时间限制:1000

内存限制:65536

输入

一行两个数,分别为整数N(不超过整型范围),双精度浮点数F,以一个空格分开。

输出

一行两个数,分别为保留2位小数输出的F,以及整数N,以一个空格分开。

样例输入

100 123.456789

样例输出

123.46 100

#include<iostream>
#include <iomanip>
using namespace std;
int main(){
  	int N;
	double F;
	cin>>N>>F;
	cout<<fixed<<setprecision(2)<<F<<" "<<N;
	return 0;	
} 

2.计算分数的浮点数值

两个整数a和b分别作为分子和分母,既分数 a/b ,求它的浮点数值(双精度浮点数,保留小数点后9位)

时间限制:1000

内存限制:65536

输入

输入仅一行,包括两个整数a和b(b不为0)

输出

输出也仅一行,分数 a/b 的浮点数值(双精度浮点数,保留小数点后9位)

样例输入

5 7

样例输出

0.714285714

#include <stdio.h>
int main(){
  int a, b;
  scanf("%d %d", &a, &b);
  printf("%0.9f", (double)a / b);
  return 0;
}

3.数字判断

输入一个字符,如果输入的字符是数字,输出yes, 否则输出no

时间限制:1000

内存限制:65536

输入

一个字符

输出

如果输入的字符是数字,输出yes, 否则输出no

样例输入

样例1输入:

5

样例2输入:

A

样例输出

样例1输出:

yes

样例2输出:

no

#include<iostream>
using namespace std;
int main()
{
    char a;
 	cin>>a;
 	if(a>=48&&a<=57)
  	{
  	  cout<<"yes";
  	}
  	else
 	 {
  	  cout<<"no";
  	}
	return 0;
}

4.统计数

给定一个数的序列S,以及一个区间[L, R], 求序列中介于该区间的数的个数,即序列中大于等于L且小于等于R的数的个数。

时间限制:1000

内存限制:65536

输入

第一行3个整数n、L、R,分别表示序列的长度,区间的左端点,区间的右端点。(0 < n ≤ 10000, 1 ≤ L ≤ R ≤ 1000000) 第二行n个正整数,表示序列里的每一个数,每个数小于等于10000000

输出

输出一个整数,表示序列中大于等于L且小于等于R的数的个数。

样例输入

5 1 10

11 8 1 10 16

样例输出

3

#include<iostream> 
using namespace std;
int main()
{
  int n,l,r,k,count = 0;
  cin >>n>>l>>r;
  for(int i=0;i<n;i++)
  {
    cin>>k;
    if(k>=l&&k<=r)
    {
      count++;
    }
  }
  cout<<count<<endl;
  return 0;
}

5.硬币翻转

假设有N个硬币(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于正面向上的状态;有M个人(M为不大于N的正整数)也从1到M依次编号。

第一个人(1号)将硬币全部翻转一次,第二个人(2号)将编号为2的倍数的硬币翻转一次,第三个人(3号)将编号为3的倍数的硬币翻转一次。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的硬币翻转一次。

请问:当第M个人操作之后,哪些硬币是正面向上的,按从小到大输出其编号,以空格分开。

时间限制:10000

内存限制:65536

输入

输入正整数N和M,以单个空格隔开。

输出

顺次输出正面向上的硬币的编号,其间用空格间隔。

样例输入

10 10

样例输出

2 3 5 6 7 8 10

#include<iostream> 
using namespace std;
int a[5000];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		a[i] = 1;
	}
	for(int i=1;i<=m;i++)//i表示人 
	{
		for(int j=i;j<=n;j++)//j表示硬币 
		{
			if(j%i == 0)
			{
				a[j] = !a[j];
			}
		}
	}
	//输出符合要求的 
	for(int i=1;i<=n;i++)
	{
		if(a[i] == 1)
		{
			cout<<i<<" ";
		}
	}
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值