青少年软件编程C++一级真题(202106)

本文提供了一系列C++编程的基础练习题目,包括数值输入输出、数学运算、字符判断、特定条件求和及逻辑控制等内容,适合初学者进行实战训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

详见视频课https://edu.csdn.net/course/detail/370181.数的输入和输出

输入一个整数和双精度浮点数,先将浮点数保留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<<" ";
	cout<<N;
} 

2、(a/b)*c的值

给定整数a、b、c,计算(a / b)*c的值,这里的除法为实数除法。

时间限制:1000
内存限制:65536
输入
一行,三个整数a、b、c,整数间以空格分隔。(1 ≤ a,b,c ≤ 1000)
输出
将计算结果保留6位小数输出。
样例输入
1 3 3
样例输出
1.000000
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
	int a,b,c;
	cin>>a>>b>>c;
	
	cout<<fixed<<setprecision(6)<<(a*1.0/b)*c;
	return 0;
} 

3、大写字母的判断

输入一个字符,判断是否是英文大写字母,即是否是A-Z中的一个。

时间限制:1000
内存限制:65536
输入
一个字符。
输出
如果是英文大写字母,则输出YES,否者输出NO。
样例输入
K
样例输出
YES
#include<iostream>
using namespace std;
int main(){
	char ch;
	cin>>ch;
	if(ch>='A'&&ch<='Z'){
		cout<<"YES";
	}else{
		cout<<"NO";
	}
	return 0;
}

4、特殊求和

如果一个数能够被7整除或者十进制表示中含有数字7,那么我们称这个数为幻数,比如17,21,73是幻数,而6,59不是。

对于给定的N,求出1~N中所有幻数的和。

时间限制:1000
内存限制:65536
输入
一个整数N(1 < N < 10000)。
输出
一个整数,表示1~N中所有幻数的和。
样例输入
14
样例输出
21
#include<iostream>
using namespace std;
int reversal(int x){ 
    int remain = 0;
    while(x){
      remain =x%10;
      if(remain==7){
        return true;
      }
      x = x / 10;
    }
    return false;
}
int main(){
	int N;
	int sum=0;
	cin>>N;
	for(int i=1;i<=N;i++){
		if(i%7==0||reversal(i)){
			sum+=i;
		}
	}
	cout<<sum;
	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 main(){
	int N,M;
	cin>>N>>M;
	int a[N];
	a[N]={0};
	for(int i=2;i<=M;i++){
	  for(int j=2;j<=N;j++){
		  if(j%i==0){
			 if(a[j]==1)	
			    a[j]=0;
			 else
			    a[j]=1;
          }
		}
	  }	
	  for(int i=1;i<=N;i++){
	  	if(a[i]==1){
	  		cout<<i<<" ";
		  }
	  }
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值