CCF试题C++

1.试题编号: 201312-1
试题名称: 出现次数最多的数

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
	int n,i,max=0,t;
	cin>>n;
	int a[n+5],b[10010];
	memset(b,0,sizeof(b));
	for(i=0;i<n;i++){
		cin>>a[i];
		b[a[i]]++;
	}
	for(i=0;i<10010;i++){
		if(b[i]>max){
			t=i;
			max=b[i];
		}
	}
	cout<<t;
	return 0;
} 

2.试题编号: 201312-2
试题名称: ISBN号码

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
	string a;
	int i,sum,m,y;
	cin>>a;
	sum=(a[0]-'0')*1+(a[2]-'0')*2+(a[3]-'0')*3+(a[4]-'0')*4+(a[6]-'0')*5+(a[7]-'0')*6+
	(a[8]-'0')*7+(a[9]-'0')*8+(a[10]-'0')*9;
	y=sum%11;
	if((a[12]==('0'+y))||((a[12]=='X')&&(y==10))){
		cout<<"Right";
	}
	else{
		for(i=0;i<=11;i++){
			cout<<a[i];
		}
		if(y==10){
			cout<<'X';
		}
		else{
			cout<<y;
		} 
		
	}
	return 0;
} 

3.试题编号: 201403-1
试题名称: 相反数

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
	int n,i,sum=0;
	cin>>n;
	int a[n+5],b[1010];
	memset(b,0,sizeof(b));
	for(i=0;i<n;i++){
		cin>>a[i];
		if(b[abs(a[i])]==0){
			b[abs(a[i])]=a[i];
		}
		else{
			if(a[i]==(-b[abs(a[i])])){
				sum++;
			} 
		}
		
	}
	cout<<sum;
	return 0;
} 

试题编号: 201403-2
试题名称: 窗口

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct point{
	int num;
	int x1;
	int y1;
	int x2;
	int y2;
	
};
struct click{
	int x;
	int y;

};
int main(){
	int N,M,i,j,k;
	cin>>N>>M;
	point p[N+2];
	click c[M+2];
	for(i=0;i<N;i++){
		p[i].num=i+1;
		cin>>p[i].x1>>p[i].y1>>p[i].x2>>p[i].y2;
	}
	for(i=0;i<M;i++){
		cin>>c[i].x>>c[i].y;
	}
	for(i=0;i<M;i++){
		for(j=N-1;j>=0;j--){
			if((c[i].x>=p[j].x1)&&(c[i].x<=p[j].x2)&&(c[i].y>=p[j].y1)&&(c[i].y<=p[j].y2)){
				cout<<p[j].num<<endl;
				point temp=p[j]; //第一次80,这里应该先移动,最后赋值。 
				for(k=j;k<N-1;k++){
					p[k]=p[k+1];
				} 
				p[N-1]=temp;
				break;
			}
		}
		if(j<0){
			cout<<"IGNORED"<<endl;
		}
	}
	 return 0;
} 

试题编号: 201409-1
试题名称: 相邻数对

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
	int n,i,sum=0;
	cin>>n;
	int a[n+5];
	for(i=0;i<n;i++){
		cin>>a[i];
	} 
	sort(a,a+n);
	for(i=0;i<n-1;i++){
		if(a[i+1]-a[i]==1){
		sum++;	
		}
		
	}
	cout<<sum;
	return 0;
}

试题编号: 201409-2
试题名称: 画图

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct point{
	int x1;
	int y1;
	int x2;
	int y2;
	
};
int main(){
	int n,i,sum=0;
	cin>>n;
	point p[n+2];
	int a[110][110];
	for(int i=0;i<110;i++){
		for(int j=0;j<110;j++){
			a[i][j]=0;
		}
	}
	for(i=0;i<n;i++){
		cin>>p[i].x1>>p[i].y1>>p[i].x2>>p[i].y2;
		for(int j=109-p[i].y1;j>109-p[i].y2;j--){
			for(int k=p[i].x2-1;k>=p[i].x1;k--){
				a[j][k]=1;
			}
		}
	}
	for(int i=0;i<110;i++){
		for(int j=0;j<110;j++){
			if(a[i][j]==1){
				sum++;
			}
		}
	}
	cout<<sum;
	 return 0;
} 

试题编号: 201412-1
试题名称: 门禁系统

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
	int n,i;
	cin>>n;
	int a[n+2],b[1002],c[n+2];
	memset(b,0,sizeof(b));
	for(i=0;i<n;i++){
		cin>>a[i];
		b[a[i]]++;
		c[i]=b[a[i]];	
	}
	for(i=0;i<n;i++){
	cout<<c[i]<<" ";	
	}	
	 return 0;
} 

试题编号: 201412-2
试题名称: Z字形扫描

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
	int n,i,j;
	cin>>n;
	int a[550][550];
	for(i=0;i<n;i++){
		for(j=0;j<n;j++){
			cin>>a[i][j];	
		}
	}
	//上三角
	for(i=0;i<n;i++){
		if(i%2==1){
			for(int j=0;j<=i;j++){
				cout<<a[j][i-j]<<" ";
			}
		}
		else{
			for(int j=i;j>=0;j--){
				cout<<a[j][i-j]<<" ";
			}
		}
	} 
	//下三角
	for(i=n-1;i>0;i--){
		if(i%2==1){
			for(int j=n-1;j>=n-i;j--){
				cout<<a[j][2*n-j-1-i]<<" ";
			}
			
		}
		else{
			for(int j=n-i;j<n;j++){
				cout<<a[j][2*n-j-1-i]<<" ";
			}
		}
	} 
	
	 return 0;
} 

试题编号: 201903-1
试题名称: 小中大
//错的原因,考虑错了四舍五入,负数和正负的四舍五入没有考虑,
先将两个数转化为double类型,再进行“/”除法。至于要规定输出保留多少位小数,则用cout<<fixed<<setprecision(2)<<……;其中2表示保留多少位小数(2表示两位)。同时要注意seprecision函数的使用要搭配头文件。

#include<iostream>
#include<cstring>
#include<iomanip>
#include<algorithm>
using namespace std;
int main(){
	int n,i;
	cin>>n;
	int a[n+5];
	int b[3];
	for(i=0;i<n;i++){
		cin>>a[i];
	} 
	b[0]=a[0];
	b[2]=a[n-1];
	//大 
	if(b[2]>=b[0]){
		cout<<b[2]<<" ";
	}
	else{
		cout<<b[0]<<" ";
	}
	//中 
	if(n%2==0){
		if(((a[n/2]+a[n/2-1])%2)!=0){
			double c=a[n/2];
			double d=a[n/2-1];
			 cout<<fixed<<setprecision(1)<<(c+d)/2<<" ";
		}
		else{
			b[1]=((a[n/2]+a[n/2-1]))/2;
			cout<<b[1]<<" ";
		}
	}
	else{
		b[1]=a[(n-1)/2];
		cout<<b[1]<<" "; 
	}
	//小 
	if(b[2]<=b[0]){
		cout<<b[2];
	}
	else{
		cout<<b[0];
	}


	 return 0;
} 

10.试题编号: 201903-2
试题名称: 二十四点
时间限制: 1.0s
内存限制: 512.0MB

#include<iostream>
#include <bitset>
#include<cstring>
#include<string>
#include<sstream>
#include<algorithm>
using namespace std;
int com(char op,int a,int b){
	if(op=='+'){
		return a+b;
	}
	else if(op=='-'){
		return a-b;
	}
	else if(op=='x'){
		return a*b;
	}
	else if(op=='/'){
		return a/b;
	}
} 
int lx(int a,char x,int b,char y,int c,char z,int d){
	if((y=='+'||y=='-')&&(z=='+'||z=='-')){//4*2*2=16
		return com(z,com(y,com(x,a,b),c),d);
	}
	else if((x=='x'||x=='/')&&(y=='x'||y=='/')&&(z=='x'||z=='/')){//2*2*2=8
		return com(z,com(y,com(x,a,b),c),d);
	}
	else if((x=='x'||x=='/')&&(y=='x'||y=='/')&&(z=='+'||z=='-')){//2*2*2=8
		return com(z,com(y,com(x,a,b),c),d);
	}
	else if((x=='x'||x=='/')&&(y=='+'||y=='-')&&(z=='x'||z=='/')){//2*2*2=8
		return com(y,com(x,a,b),com(z,c,d));
	}
	else if((x=='+'||x=='-')&&(y=='x'||y=='/')&&(z=='x'||z=='/')){//2*2*2=8
		return com(x,a,com(z,com(y,b,c),d));
	}
	else if((x=='+'||x=='-')&&(y=='x'||y=='/')&&(z=='+'||z=='-')){//2*2*2=8
		return com(z,com(x,a,com(y,b,c)),d);
	}
	else if((x=='+'||x=='-')&&(y=='+'||y=='-')&&(z=='x'||z=='/')){//2*2*2=8
		return com(y,com(x,a,b),com(z,c,d));
	}
}
int main(){
	int n,a,b,c,d,i,t;
	char x,y,z;
	cin>>n;
	string s;
	for(i=0;i<n;i++){
		cin>>s;
		a=s[0]-'0';
		b=s[2]-'0';
		c=s[4]-'0';
		d=s[6]-'0';
		x=s[1];
		y=s[3];
		z=s[5];
		t=lx(a,x,b,y,c,z,d);
		if(t==24){
			cout<<"Yes"<<endl;	
		}
		else{
			cout<<"No"<<endl;
		}
		
	}
	 return 0;
} 

试题编号: 201503-1
试题名称: 图像旋转

#include<iostream>
#include<algorithm>
using namespace std;
int a[1001][1001];//定义在main里面会出错
int main(){
	int n,m,i,j;
	cin>>n>>m;
	for(i=0;i<n;i++){
		for(j=0;j<m;j++){
			cin>>a[i][j];
		}
	} 
	for(j=m-1;j>=0;j--){
		for(i=0;i<n;i++){
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}

	 return 0;
} 

12
试题编号: 201503-2
试题名称: 数字排序

#include<iostream>
#include<algorithm>
using namespace std;
struct num{
	int x;
	int count;
}; 
bool com(num a,num b){
	if(a.count>b.count){
		return true;
	}
	else if(a.count==b.count){
		if(a.x<b.x){
			return true;
		}
		else{
			return false;
		}
	}
	else{
		return false;
	}
}
	num a[1001];
int main(){
	int n,i,p;
	cin>>n;
	for(i=0;i<1001;i++){
		a[i].x=i;
		a[i].count=0;	
	}
	for(i=0;i<n;i++){
		cin>>p;
		a[p].count++;
	}	
	sort(a,a+1001,com);
	for(i=0;i<n;i++){
		if((a[i].x!=0)&&(a[i].count!=0)){
			cout<<a[i].x<<" "<<a[i].count<<endl;
		}
		
	}

	
	 return 0;
} 

13
试题编号: 201509-1
试题名称: 数列分段

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	int n,i,count=1,p,a;
	cin>>n;
	cin>>p;
	for(i=1;i<n;i++){
		cin>>a;
		if(a!=p){
			p=a;
			count++;
		}
	}
	cout<<count;
	 return 0;
} 

14
试题编号: 201509-2
试题名称: 日期计算

#include<iostream>
#include<algorithm>
using namespace std;
bool pd(int y){
	if(((y%4==0)&&(y%100!=0))||(y%400==0)){
		return 1;
	}
	else{
		return 0;
	}
}
int main(){
	int y,d,i,month,day;
	cin>>y>>d;
	int p[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	int r[12]={31,29,31,30,31,30,31,31,30,31,30,31};
	if(pd(y)==1){
		for(i=0;i<12;i++){
			if(d<=r[i]){
				month=i+1;
				day=d;
				break;
			}
			else{
				d=d-r[i];
			}
		}
	} 
	else{
		for(i=0;i<12;i++){
			if(d<=p[i]){
				month=i+1;
				day=d;
				break;
			}
			else{
				d=d-p[i];
			}
		}
	}
	cout<<month<<endl<<day;
	 return 0;
} 

15
试题编号: 201512-1
试题名称: 数位之和

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	string s;
	int n,i,sum=0;
	cin>>s;
	n=s.length();
	for(i=0;i<n;i++){
		sum=sum+s[i]-'0';
	}
	cout<<sum;
	 return 0;
} 

16
试题编号: 201512-2
试题名称: 消除类游戏

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	int n,m,i,j,p,count,k;
	int a[31][31],b[31][31];
	cin>>n>>m;
	for(i=0;i<n;i++){
		for(j=0;j<m;j++){
			cin>>a[i][j];
			b[i][j]=a[i][j];
		}
	}	
	for(i=0;i<n;i++){//行
		p=a[i][0];
		count=1;
		for(j=1;j<m;j++){
			while(a[i][j]==p){
				count++;
				j++;
			}
			if(count>=3){
				for(k=j-1;k>=j-count;k--){
					a[i][k]=0;
				}
				count=1;
				p=a[i][j];
			}
			else{
				count=1;
				p=a[i][j];
			}
		}
				
	}
	for(j=0;j<m;j++){//列 
		p=b[0][j];
		count=1;
		for(i=1;i<n;i++){
			while(b[i][j]==p){
				count++;
				i++;
			}
			if(count>=3){
				for(k=i-1;k>=i-count;k--){
					b[k][j]=0;
				}
				count=1;
				p=b[i][j];
			}
			else{
				count=1;
				p=b[i][j];
			}
		}
				
	}
	for(i=0;i<n;i++){
		for(j=0;j<m;j++){
			if((a[i][j]==0)||(b[i][j]==0)){
				cout<<0<<" ";
			}
			else{
				cout<<a[i][j]<<" ";
			}
		}
		cout<<endl;
	}
	return 0;
	
} 

17
试题编号: 201604-1
试题名称: 折点计数

#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	int n,i,count=0;
	int a[1001];
	cin>>n;
	for(i=0;i<n;i++){
		cin>>a[i];
	}
	if(n<=2){
		cout<<0;
	}
	else{
		for(i=1;i<n-1;i++){
			if(((a[i]-a[i-1])*(a[i]-a[i+1]))>0){
				count++;
			}
		}
		cout<<count;
	}

	return 0;
	
} 

18
试题编号: 201609-1
试题名称: 最大波动

#include<iostream>
#include<map>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
	int n,i,max=-1,c;
	cin>>n;
	int a[n+5];
	for(i=0;i<n;i++){
		cin>>a[i];
	}
	for(i=1;i<n;i++){
		c=abs(a[i]-a[i-1]);
		if(c>max){
			max=c;
		}
	}
	cout<<max;
	return 0;
	
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值