蓝桥软件竞赛 预选赛 2014-01-21 22:54 206人阅读 评论(0) 收藏

1、把一个二进制的串转换为十进制整数

#include<stdio.h>
#include<math.h>
int main(){
	long long n;
	long long k=0;
	long long m=0;
	while(scanf("%lld",&n)!=EOF){
		while(n){
			k=k+(n%10)*pow(2,m++); 
			n=n/10;
		}
		printf("%lld
",k);
		k=m=0;
	}
	return 0;
}


2、判决素数个数

#include<stdio.h>
#include<math.h>
int pd(int n){
	if(n<=1)  return 0;
	if(n<3) return 1;
	int k;
	for(k=2;k<=sqrt(n);k++){
		if(n%k==0)return 0;
	}
	return 1;
}
int main(){
	int a,b,c,d;
	scanf("%d%d",&a,&b);
	if(b>a){
		c=b;
		b=a;
		a=c;
	}
	c=0;
	for(d=a;d>=b;d--){
		if(pd(d)){
			c++;
		}
	}
	printf("%d
",c);
	return 0;
}


3、数字求和

#include<stdio.h>
int main(){
	int num[10];
	int i,m=0;
	for(i=0;i<=5;i++){
		scanf("%d",&num[i]);
		if((i>0)&&(num[i]<num[0])){
			m+=num[i];
		}
	}
	printf("%d
",m);
	
	return 0;
}


4、字符串排序

#include<stdio.h>
#include<string.h>
char str[10][20];
char s[20];
int main(){
	int n,m;
	for(n=0;n<5;n++){
		scanf("%s",str[n]);
	}
	for(n=0;n<5;n++){
		for(m=n+1;m<5;m++){
			if(strcmp(str[n],str[m])>1){
				strcpy(s,str[m]);
				strcpy(str[m],str[n]);
				strcpy(str[n],s);
			}
		}
	}
	for(n=0;n<5;n++){
		printf("%s
",str[n]);
	}
	return 0;
}

5、奇偶排序

#include<stdio.h>
int main(){
	int num[1000000]={0};
	int k,n;
	for(k=0;k<10;k++){
		scanf("%d",&n);
		num[n]=1;
	}
	for(k=0;k<1000000;k++)
		if((k%2==1)&&(num[k]==1))	printf("%d ",k);
	for(k=0;k<1000000;k++)
		if((k%2==0)&&(num[k]==1))	printf("%d ",k);
	
	return 0;
}

6、球弹跳高度计算

#include<stdio.h>
int main(){
	int k;
	double d=0;
	double sum=0;
	scanf("%lf",&d);
	sum=d;
	for(k=0;k<9;k++){
		sum+=d;
		d/=2;
	}
	printf("%lf
",sum);
	printf("%lf
",d/2);
	return 0;
}

7、求最长字符串

#include<stdio.h>
#include<string.h>
int main(){
	char str[1000][1000];
	int n,id=0;
	scanf("%d",&n);
	id=n-1;
	while(n--){
		scanf("%s",str[n]);
		if(strlen(str[n])>=strlen(str[id])){
			id=n;
		}
	}
	printf("%s
",str[id]);
	return 0;
}

8、1的个数

#include<stdio.h>
int num(int k){
	int d=0;
	while(k){
		d+=(k%2);
		k=k/2;
	}
	return d;
}
int main(){
	int n,m;
	scanf("%d",&n);
	while(n--){
		scanf("%d",&m);
		printf("%d
",num(m));
	}
	return 0;
}

9、递归求和

#include<stdio.h>
int dg(int k){
	if(k==1)	return 1;
	if(k>1)	return k*k+dg(k-1);
}
int main(){
	int n;
	scanf("%d",&n);
	printf("%d
",dg(n));
	return 0;
}

10、求一个数的小数部分

#include<stdio.h>
#include<string.h>
int pd(char s[]){
	int i;
	for(i=0;i<strlen(s);i++){
		if(s[i]=='.')	return i;
	}
	return 0;
}
int main(){
	char num[1000];
	scanf("%s",num);
	int k=pd(num);
	int d;
	if(k){
		for(d=k+1;d<strlen(num);d++){
			printf("%c",num[d]);
		}
	}
	else{
		printf("0");
	}
	printf("
");
	return 0;
}

预选赛的题目:http://haut.openjudge.cn/train1/

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文为博主原创文章,未经博主允许不得转载。
原文地址:https://www.cnblogs.com/you-well-day-fine/p/4671671.html