蓝桥杯 基础练习

基础练习 第一题 闰年判断

 
问题描述

给定一个年份,判断这一年是不是闰年。

当以下情况之一满足时,这一年是闰年:

1. 年份是4的倍数而不是100的倍数;

2. 年份是400的倍数。

其他的年份都不是闰年。

输入格式
输入包含一个整数y,表示当前的年份。
 
 
#include <stdio.h>
int main()
{
    int y;
    scanf("%d",&y);
    if((y%4==0 && y%100!=0) || y%400==0)
    printf("yes");
    else
    printf("no");
    return 0;
}

 

基础练习 第二题 01字串

资源限制
时间限制:1.0s   内存限制:256.0MB
问题描述

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

00000

00001

00010

00011

00100

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

#include "stdio.h"
int main() //十进制转化
{
    int a;
    for(a=0;a<32;a++)
    {
        printf("%d",a%32 /16);
        printf("%d",a%16 /8);
        printf("%d",a%8 /4);
        printf("%d",a%4 /2);
        printf("%d",a%2);
        printf("\n");
    }
        return 0;
 } 

 

 基础练习 第三题 字母图形


资源限制
时间限制:1.0s   内存限制:256.0MB
问题描述

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

#include "stdio.h"
#include "math.h"
int main()
{
    int n,m,i,j;
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%c",abs(i-j)+'A');
        }
        printf("\n");
    }
    return 0;
 } 

 

基础练习 第四题 数列特征

 
资源限制
时间限制:1.0s   内存限制:256.0MB
问题描述

给出n个数,找出这n个数的最大值,最小值,和。

输入格式

第一行为整数n,表示数的个数。

第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。

输出格式
输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
样例输入
5
1 3 -2 4 5
#include "stdio.h"
int main()
{
    int n,a,b[10000],max,min,sum=0;
    scanf("%d",&n);
    for(a=0;a<n;a++)
    {
        scanf("%d",&b[a]);
    }
    
    max=b[0];min=b[0];
    for(a=0;a<n;a++)
    {
        if(max<b[a])
        max=b[a];
        if(min>b[a])
        min=b[a];
        sum+=b[a]; 
    }
    printf("%d\n",max);
    printf("%d\n",min);
    printf("%d\n",sum);
    return 0;
}

 

 

 基础练习 第五题 查找整数

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入格式

第一行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

#include "stdio.h"
int main()
{
    int a,n,i,j;
    int b[1000];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&b[i]);
    }
    
    scanf("%d",&a);
    for(j=0;j<n;j++)
    {
        if(a==b[j])
        printf("%d",j+1);
        return 0;/这里的意思是找到后就立刻退出循环,原本用的是break,但发现用其不行
    }
    printf("-1");
    return 0;
}
for(j=0;j<n;j++)
{
    if(a==b[j])
    {
        printf("%d",j+1);  //加括号,break退出的是if判断
        break;
        }
}


for(j=0;j<n;j++) { if(a==b[j]) printf("%d",j+1); //不加括号,for循环进行一次就会停止 break; }

 

 基础练习 第六题 杨辉三角形


资源限制
时间限制:1.0s   内存限制:256.0MB
问题描述

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

  

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

  

下面给出了杨辉三角形的前4行:

  

   1

  

  1 1

  

 1 2 1

  

1 3 3 1

  

给出n,输出它的前n行。

#include "stdio.h"
int main()
{
    int i,j,a[34][34],n;
    scanf("%d",&n);
    
    for(i=0;i<n;i++){
        for(j=0;j<=i;j++)
        {
            if(i==j || j==0)
            a[i][j]=1;
            else
            a[i][j]=a[i-1][j-1]+a[i-1][j];
        }
    }    


    for(i=0;i<n;i++)
    {
        for(j=0;j<=i;j++)
        {
            printf("%d ",a[i][j]);
         } 
         printf("\n");
    }
    return 0;
}

 

 

基础练习 第七题 特殊的数字

时间限制:1.0s   内存限制:512.0MB
问题描述
  153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。
#include "stdio.h"
int main()
{
    int i,a,b,c;
    for(i=100;i<1000;i++)
    {
        a=i%10;
        b=i/10%10;
        c=i/100;
        if(a*a*a+b*b*b+c*c*c==i)
        printf("%d\n",i);
    }
    return 0;
 } 

 

 

基础练习 第八题 回文数

时间限制:1.0s   内存限制:512.0MB
问题描述
  1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
 
#include "stdio.h"
int main()
{
    int i,a,b,c,d;
    for(i=1000;i<10000;i++)
    {
        a=i/1000;
        b=i/100%10;
        c=i/10%10;
        d=i%10;
        if(a==d&&b==c)
        printf("%d\n",i);
    }
    return 0;
}

 

 

 基础练习 第九题 特殊回文数

时间限制:1.0s   内存限制:512.0MB
问题描述
  123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
 
#include "stdio.h"
int main()
{
    int i,a,b,c,d,e,f,n;
    scanf("%d",&n);
    for(i=10000;i<100000;i++)
    {
        a=i/10000;
        b=i/1000%10;
        c=i/100%10;
        d=i/10%10;
        e=i%10;
        if(a==e&&b==d&&a+b+c+d+e==n)
        printf("%d\n",i);
    }
    
    for(i=100000;i<1000000;i++)
    {
        a=i/100000;
        b=i/10000%10;
        c=i/1000%10;
        d=i/100%10;
        e=i/10%10;
        f=i%10;
        if(a==f&&b==e&&c==d&&a+b+c+d+e+f==n)
        printf("%d\n",i);
    }
    return 0;
    
}

 

 

 基础练习 第十题 十进制转十六进制


资源限制
时间限制:1.0s   内存限制:512.0MB
问题描述
  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。
 
#include "stdio.h"
int main()
{
    int i=0,j;
    char a[100];
    long long x;
    scanf("%l64d",&x);
    if(x==0)
    printf("%d",0);
    
    while(x!=0)
    {
        a[i++]=x%16;
        x=x/16;
    }
    for(j=i-1;j>=0;j--)
    {
        if(a[j]>9&&a[j]<16)
        
            printf("%c",a[j]-10+'A');
         
        else
            printf("%d",a[j]);
    
    }
    
    return 0;
}

 

基础练习 第十一题 十六进制转十进制


资源限制
时间限制:1.0s   内存限制:512.0MB
问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
int main(){  
    char strHex[10];  
    int i = 0, len = 0, temp = 0;  
    long long answer = 0;  
    gets(strHex);  
    len = strlen(strHex);  
    for (i = 0; strHex[i] != '\0'; ++i){  
        switch(strHex[i]){  
            case 'A': temp = 10; break;  
            case 'B': temp = 11; break;  
            case 'C': temp = 12; break;  
            case 'D': temp = 13; break;  
            case 'E': temp = 14; break;  
            case 'F': temp = 15; break;  
            default: temp = strHex[i]-'0'; break;  
        }  
        answer += (temp*pow(16,len-1-i));  
    }  
    printf("%lld",answer);  
    return 0;  
}

 

 

基础练习 第十三题 数列排序


资源限制
时间限制:1.0s   内存限制:512.0MB
问题描述
  给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
int main()
{
    int n,i,j;//n<=200 
   int output[210]={0};
   int min;
   scanf("%d",&n);
   //输入数组 
   for(i=0;i<n;i++)
    scanf("%d",&output[i]);
    for(i=0;i<n;i++)
    {
        min=output[i];
        for(j=i+1;j<n;j++)
        {
            if(output[j]<min)
               {
               min=output[j];
               output[j]=output[i];
               output[i]=min;    
               }
        }
    }
    for(i=0;i<n;i++)
            printf("%d ",output[i]);
    return 0;
} 

 

posted @ 2020-02-28 20:27  ~Wal  阅读(424)  评论(0)    收藏  举报