蓝桥杯——基础练习答案

来源:互联网 发布:网络歌曲太多 翻唱 编辑:程序博客网 时间:2024/06/06 02:41


注:不全,慢慢更新


BASIC-1.闰年判断

#include <stdio.h>

int main() {

    int year;

    scanf("%d",&year);

    if(year%4 == 0 && year%100 != 0) {

       printf("yes");

    } else if(year%400 == 0) {

       printf("yes");

    } else {

       printf("no");

    }

    return 0;

}


 BASIC-2.01字符串

#include<stdio.h>

int main() {

    int i, j, k, m, n, a;

    for(i=0; i<2; i++) {

       for(j=0; j<2;j++) {

           for(k=0; k<2;k++) {

              for(m=0;m<2; m++) {

                  for(n=0;n<2; n++) {

                     printf("%d%d%d%d%d\n",i,j,k,m,n);

                  }

              }

           }

       }

    }

    return 0;

}


BASIC-3.字母图形

#include <stdio.h>

int main() {

    int i,j,k,n,m;

    scanf("%d%d",&n,&m);

    for(i=0; i<n; i++){

       if(m>i) {

           for(k=i;k>0&&k<m;k--)

              printf("%c",'A'+k);

           for(j=0;j<m-i;j++)

              printf("%c",'A'+j);

           printf("\n");

       } else {

           for(k=i;k>i-m; k--) {

              printf("%c",'A'+k);

           }

           printf("\n");

       }

    }

    return 0;

}


BASIC-4.数列特征

#include <stdio.h>

int main() {

    inti,j,n,a[10000],min_num,max_num;

    long sum = 0;

    scanf("%d",&n);

    for(i=0; i<n; i++) {

       scanf("%d",&a[i]);

    }

    min_num = a[0];

    max_num = a[0];

    for(j=1; j<i; j++) {

       if(a[j] >max_num) {

           max_num = a[j];

       }

       if(a[j] <min_num) {

           min_num = a[j];

       }

    }

    for(i=0; i<n; i++) {

       sum += a[i];

    }

    printf("%d\n%d\n%ld",max_num,min_num,sum);

    return 0;

}


BASIC-5.查找整数

#include <stdio.h>

int main() {

    int i,m,n,x=1,a[1000];

    scanf("%d",&n);

    for(i=0; i<n; i++) {

       scanf("%d",&a[i]);

    }

    scanf("%d",&m);

    for(i=0; i<n; i++) {

       if(m == a[i]) {

           printf("%d",x);

           break;

       } else {

           x++;

       }

    }

    if(x == n+1) {

       printf("-1");

    }

    return 0;

}


BASIC-6.杨辉三角形

#include <stdio.h>

int main() {

    inti,j,n,a[34][34]={0};

    scanf("%d",&n);

    for(i=0; i<n; i++) {

       a[i][0] = 1;

    }

    for(i=1; i<n; i++) {

       for(j=1;j<=i;j++) {

           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("");

       }

       printf("\n");

    }

    return 0;

}


BASIC-7.特殊的数字

#include <stdio.h>

int main(){

    int i,a,b,c;

    for(i=100; i<1000;i++){

       a = i/100;

       b = i/10 - a*10;

       c = i%10;

       if(i == a*a*a +b*b*b+ c*c*c){

           printf("%i\n",i);

       }

    }

    return 0;

}


BASIC-8. 回文数

#include <stdio.h>

int main(){

    int i = 1000;

    int a,b,c,d;

    for(; i < 10000;i++) {

       a = i/1000;

       b = i/100 - a*10;

       c = i/10 - a*100 -b*10;

       d = i%10;

       if(a == d &&b == c) {

           printf("%d\n",i);

       }

    }

    return 0;

}

BASIC-9.特殊回文数

#include<stdio.h>

int main() {

    int n,a,b,c,d,e,f;

    long number;

    scanf("%d", &n);

    for(number=10000; number<100000; number++) {

       a = number/10000;

       b = number/1000 - a*10;

       c = number/100 - a*100 - b*10;

       d = number/10 - a*1000 - b*100 - c*10;

       e = number%10;

       if(a==e && b==d) {

           if (a+b+c+d+e == n) {

              printf("%d\n", number);

           }

       }

    }

    for(number=100000; number<1000000; number++) {

       a = number/100000;

       b = number/10000 - a*10;

       c = number/1000 - a*100 - b*10;

       d = number/100 - a*1000 - b*100 - c*10;

       e = number/10 - a*10000 - b*1000 - c*100 - d*10;

       f = number%10;

       if(a==f && b==e && c==d) {

           if(a+b+c+d+e+f == n) {

              printf("%d\n",number);

           }

       }

    }

    return 0;

}

 

BASIC-10.十进制转十六进制

#include<stdio.h>

int main() {

    long a;

    int r, num[32], i=0,m;

    char b[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F'};

    scanf("%d", &a);

    if (a!= 0) {

       while(a>0) {

           r = a%16;

           num[i++] = r;

           a = a/16;

       }

       for (i=i-1; i>=0; i--) {

           m = num[i];

           printf("%c", b[m]);

       }

    } else {

       printf("0");

    }

    return 0;

}


BASIC-11.十六进制转十进制

#include <stdio.h>

int main() {

    long long n;

    scanf("%I64x",&n);

    printf("%I64d",n);

return 0;

}

 

BASIC-13.数列排序

#include <stdio.h>

int main() {

    int n,i,j,t,a[200];

    scanf("%d",&n);

    for(i=0;i<n;i++){

        scanf("%d",&a[i]);

    }

    for(i=0;i<n;i++){

    for(j=0;j<n-1-i;j++){

    if(a[j]>a[j+1]){

    t = a[j];

    a[j] = a[j+1];

    a[j+1] = t;

    }

    }

    }

    for(i=0;i<n;i++)

    printf("%6d",a[i]);

    return 0;

}


BASIC-14.时间转换

#include <stdio.h>

int main(){

    longn;

    inta,b,c;

    scanf("%ld",&n);

    a= n/3600;

    b= n/60 - a*60;

    c= n%60;

    printf("%d:%d:%d",a,b,c);

    return0;

}


BASIC-15.字符串对比

#include <stdio.h>

#include <string.h>

int main() {

    chara[10],b[10];

    gets(a);

    gets(b);

    if(strlen(a) != strlen(b)) {

       printf("1");

    }elseif (strcmp(a,b) == 0) {

       printf("2");

    }elseif (strcmp(strupr(a),strupr(b)) == 0) {

       printf("3");

    }else{

       printf("4");

    }

    return0;

}


BASIC-20.数的读法

#include <stdio.h>

#define CUT a = m/1000; b = m/100 - a*10; c= m/10 - a*100 - b*10; d = m%10

void str (int x) {

    switch(x){

       case1: printf("yi "); break;

       case2: printf("er "); break;

       case3: printf("san "); break;

       case4: printf("si "); break;

       case5: printf("wu "); break;

       case6: printf("liu "); break;

       case7: printf("qi "); break;

       case8: printf("ba "); break;

       case9: printf("jiu "); break;

    }

}

int main() {

    longnum;

    inta, b, c, d, k=0, m, n=0;

    scanf("%d",&num);

    //亿

    if(num > 99999999) {

       m= num/100000000;

       num= num - m*100000000;

       CUT;

       if(c != 0) {

           if(c > 1) {

              str(c);

           }

           printf("shi");

       }

       if(d != 0) {

           str(d);

       }

       printf("yi");

       n= 1;

    }

    //万

    if(num > 9999) {

       m= num/10000;

       num= num - m*10000;

       CUT;

       if(a != 0) {

           str(a);

           printf("qian");

       }else if (n == 1) {

           printf("ling");

       }

      

       if(b != 0) {

           str(b);

           printf("bai");

       }else if (a != 0 && c != 0) {

           printf("ling");

       }

      

       if(c != 0) {

           if(c > 1) {

              str(c);

           }

           printf("shi");

       }else if (a != 0 && b != 0 && d != 0) {

           printf("ling");

       }

      

       if(d != 0) {

           str(d);

       }

       printf("wan");

       k= 1;

    }

    //个

    if(num > 0) {

       m= num;

       CUT;

       if(a != 0) {

           str(a);

           printf("qian");

       }else if (n == 1 || k ==1) {

           printf("ling");

       }

      

       if(b != 0) {

           str(b);

           printf("bai");

       }else if (a != 0 && c != 0) {

           printf("ling");

       }

      

       if(c != 0) {

           if(c > 1) {

              str(c);   

           }

           printf("shi");

       }else if (a != 0 && b != 0 && d != 0) {

           printf("ling ");

       }

      

       if(d != 0) {

           str(d);

       }

    }

    return0;

}


BASIC-26.报时助手

#include<stdio.h>

int main() {

    charstring1();

    charstring2();

    inth, m,a,b;

    scanf("%d%d",&h, &m);

    if(h<=20){

       string1(h);

    }else {

       a= 2;

       b= h%20;

       string2(a);

       string1(b);

    }

    if(m==0) {

       printf("o\'clock");

    }else if (m<=20) {

       string1(m);

    }else {

       a= m/10;

       b= m%(a*10);

       string2(a);

       string1(b);

    }

    return0;

}

char string1 (int a) {

    switch(a){

       case0: printf("zero ");break;

       case1: printf("one ");break;

       case2: printf("two ");break;

       case3: printf("three ");break;

       case4: printf("four ");break;

       case5: printf("five ");break;

       case6: printf("six ");break;

       case7: printf("seven ");break;

       case8: printf("eight ");break;

       case9: printf("nine ");break;

       case10: printf("ten ");break;

       case11: printf("eleven ");break;

       case12: printf("twelve ");break;

       case13: printf("thirteen ");break;

       case14: printf("fourteen ");break;

       case15: printf("fifteen ");break;

       case16: printf("sixteen ");break;

       case17: printf("seventeen ");break;

       case18: printf("eighteen ");break;

       case19: printf("nineteen ");break;

       case20: printf("twenty ");break;

    }

}

char string2 (int a) {

    switch(a){

       case2: printf("twenty ");break;

       case3: printf("thirty ");break;

       case4: printf("forty ");break;

       case5: printf("fifty ");break;

    }

}


BASIC-29.高精度加法

#include<stdio.h>

#include<string.h>

int main() {

    chara[100],b[100];

    intc[105],i,j,t,r=0,n=0,la,lb;

    memset(c,0,sizeof(c));

    scanf("%s%s",a, b);

    la= strlen(a);

    lb= strlen(b);

    for(i=la-1,j=lb-1;i>=0&&j>=0; i--,j--) {

       t= (a[i]-'0') + (b[j]-'0') +r;

       c[n++]= t%10;

       r= t/10;

    }

    if(la>lb){

       for(;i>=0; i--){

           t= a[i] - '0' + r;

           c[n++]= t%10;

           r= t/10;

       }

    }elseif (lb>la) {

       for(;j>=0; j--) {

           t= b[j] - '0' + r;

           c[n++]= t%10;

           r= t/10;

       }

    }else{

       c[n]= r;

    }

    for(i=104;i>=0; i--) {

       if(c[i]){

           break;

       }

    }

    for(;i>=0; i--) {

       printf("%d",c[i]);

    }

    printf("\n");

    return0;

}


BASIC-30.阶乘计算

#include<stdio.h>

#include<string.h>

#define MAX 3000

int main() {

    inta[MAX],i,j,n;

    intc=0;

    ints;

    memset(a,0,sizeof(a));

    scanf("%d",&n);

    a[0]=1;

    for(i=2;i<=n;i++){

       for(j=0;j<MAX;j++){

           s=a[j]*i+c;

           a[j]=s%10;

           c=s/10;

       }

    }

    for(i=MAX-1;i>=0;i--)

       if(a[i])

       break;

    for(j=i;j>=0;j--){

       printf("%d",a[j]);

    }

    return0;

}

1 0