蓝桥杯入门题 赛前练一练,喝前摇一摇

文章目录

        • 蓝桥杯入门题
          • 1.顺序输出这32种01串。
          • 2.n个数的最大值,最小值,和。
          • 3.基础练习 查找整数
          • 4.特殊的数字
          • 5.回文数
          • 6.数列排序
          • 7.日期转换
          • 8.字符比较
          • 9.数的读法
          • 10.阶乘计算

蓝桥杯入门题

1.顺序输出这32种01串。
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

#include 

int main()
{
  int a,b,c,d,e;
  for(a=0;a<=1;a++)
	   for(b=0;b<=1;b++)
		    for(c=0;c<=1;c++)
				 for(d=0;d<=1;d++)
					  for(e=0;e<=1;e++)
						  printf("%d%d%d%d%d\n",a,b,c,d,e);
   return 0;
}
2.n个数的最大值,最小值,和。
给出n个数,找出这n个数的最大值,最小值,和。
#include 
#define MaxSize 10000

main()
{
    int n;
    int sum=0,min=MaxSize,max=-MaxSize;
    
    scanf("%d",&n);
    while(n--)
    {
        int temp,st;
        scanf("%d",&temp);
        
        if(temp>max)
        {
            max=temp;
        }
        if(temp<min)
        {
            min=temp;
        }
        sum+=temp;
    }
    printf("%d\n%d\n%d\n",max,min,sum);
    
    return 0;
}
3.基础练习 查找整数
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
#include 

int main()
{
   int n;
	int m;
	int sum;
	int arr[n];
	scanf("%d",&n);
	for(int i=0;i<n;i++){
	  scanf("%d",&arr[i]);
	}
	scanf("%d",&m);
	for(int i=0;i<n;i++){
	  if(m==arr[i]){
	   	printf("第%d",i+1);
	   	  return 0;
	  }
	}
   
   return 0;
}
4.特殊的数字
 153是一个非常特殊的数,它等于它的每位数字的立方和,
 即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。
输出格式
  按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
#include
 
int main()
{
	int i,j,k;
	int n;
	
	for(i=1;i<=9;i++)
	for(j=0;j<=9;j++)
	for(k=0;k<=9;k++)
	{
		if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
		printf("%d%d%d\n",i,j,k);
	}
	return 0;
}
5.回文数
 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位
#include
 
int main()
{
	int i,j,k,s;
	int n;
	
	for(i=1;i<=9;i++)
	for(j=0;j<=9;j++)
	for(k=0;k<=9;k++)
	for(s=0;s<=9;s++)
	{
		if(i==s&&j==k)
		printf("%d%d%d%d\n",i,j,k,s);
	}
	return 0;
}
6.数列排序
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
  第一行为一个整数n。
  第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
  输出一行,按从小到大的顺序输出排序后的数列。
#include 

int main()
{
    int n,i,j,s,a[200];
    
    scanf("%d",&n);

    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    
    i=n+1;
     
    while(i--)
    for(j=1;j<i;j++)
    {
        if(a[j]>a[j+1])
        {
            s=a[j+1];
            a[j+1]=a[j];
            a[j]=s;
        }
    }
    
    for(i=1;i<=n;i++)
    printf("%d ",a[i]);
    
    return 0;
}
7.日期转换
 给定一个以秒为单位的时间t,要求用“::”的格式来表示这个时间。
 表示时间,表示分钟,而表示秒,它们都是整数且没有前导的“0”。
 例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。
输入格式
  输入只有一行,是一个整数t(0<=t<=86399)。
输出格式
  输出只有一行,是以“::”的格式所表示的时间,不包括引号。
#include 

int main()
{
   int t,h,m,s;
	scanf("%d",&t);
	h=n/3600;
	m=n/60%60;
	s=n%60;
	printf("%d:%d:%d",h,m,s);
}
8.字符比较
给定两个仅由大写字母或小写字母组成的字符串
#include 
#include 

int main()
{
   char arr1[100];
   char arr2[100];
   scanf("%s",arr1);
	scanf("%s",arr2);
	if(strcmp(arr1,arr2)==0){
	  printf("相同");
	}else{
	 printf("不相同");
	}
	return 0;
}
9.数的读法
问题描述
  Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染

色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。
  比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念

出来的。
  所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法:
  十二亿三千四百五十六万七千零九
  用汉语拼音表示为
  shi er yi san qian si bai wu shi liu wan qi qian ling jiu
  这样他只需要照着念就可以了。
  你的任务是帮他设计这样一个系统:给定一个阿拉伯数字串,你帮他按照中文读写的

规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。
  注意必须严格按照规范,比如说“10010”读作“yi wan ling yi shi”而不是“yi wan 

ling shi”,“100000”读作“shi wan”而不是“yi shi wan”,“2000”读作“er qian”而

不是“liang qian”。
#include
#include
int main()
{
    char a[100];int i,j,k,l;
    char b[20][10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    char c[20][10]={"","","shi","bai","qian","wan","shi","bai","qian","yi","shi"};
    gets(a);
    l=strlen(a);
    for(i=0;i<l;i++){
        j=a[i]-48;
        if(j==0){if(i<l-1)if(a[i+1]!=48)printf("%s ",b[j]);}
        else 
        if((l-i==2||l-i==6||l-i==10)&&j==1)printf("%s ",c[l-i]);
        else if(a[i-1]==48&&j==1)printf("%s ",c[l-i]);
        else printf("%s %s ",b[j],c[l-i]);
    }
    printf("\n");
    return 0;
}

10.阶乘计算
问题描述
  输入一个正整数n,输出n!的值。
  其中n!=1*2*3*…*n。
#include 
#include 
#define MaxSize 3000+5

void resultProduct(int P[],int num)
{
    int i,tp=0,st=0;
    
    for(i=0;i<MaxSize;i++)
    {
        st=tp;
        tp=(P[i]*num+st)/10;
        P[i]=(P[i]*num+st)%10;
    }

    return 0;
}

你可能感兴趣的:(算法,c++,蓝桥杯)