• 2019年全国高校计算机能力挑战赛初赛C语言解答


    http://www.ncccu.org.cn

    2019年全国高校计算机能力挑战赛分设大数据算法赛,人工智能算法赛,Office高级应用赛,程序设计赛4大赛项

    C语言初赛解答

    1:编程1

    16.现有一个数字闹钟(时间采用24时制)。已知当前时间和预订的闹钟时间(全部为整点时间),请你帮忙计算,几小时后闹钟会响。
    输入说明:每个输入有ct和tt,ct是当前时间,t是预定的闹铃时间。
    输出说明:距离闹钟响起的时间。
    输入样例:22 5

    输出样例:7

    代码提交说明:
    1.请严格按照每道题目给出的输入/输出样例编写相关I/O代码,数字间的默认间隔是一个空格,浮点数的默认输出精度是保持小数点后2位。样例以外的提示信息请不要在屏幕上输出。
    2.请大家确保提交的代码可以在指定的编译条件下正确地编译执行,否则自动评测程序将给出编译错误或运行时错误的信息。
    3.每道编程题目,如果没有特殊说明,需要在1秒内完成程序的运行和输出结果,超过这个时间限制将会被判超时,失去相应测试用例的分数。每个可执行文件可使用的空间不得大于1MB。
    4.每道编程题会有多个测试用例,每通过一些测试用例可以获得相应的分值,但只有通过全部测试用例才能拿到这题全部的分

    #include <stdio.h> 
    int main(){
        int st,et;
        int i,res=0;
        scanf("%d",&st); 
        scanf("%d",&et); 
        if(et<st){
          for(i=st;i<24;i++){
            res++;
            }
            for(i=0;i<et;i++){
            res++;
            }
        }else{
            for(i=st;i<et;i++){
            res++;
                }
        }
        printf("%d",res);
        return 0;
    }

    2:编程2

    17.输入正整数N和M(O<N<M<=100000),请输出N到M(含N和M)之间不能被3或11整除但可以被5整除的数的个数。
    输入说明:输入两个正整数N和M。输出说明:统计满足条件数的个数。
    输入样例:40 50

    输出样例:1

    #include <stdio.h> 
    #include <stdlib.h>
    int main(){
        int n,m;
        int i,res=0;
        scanf("%d%d",&n,&m); 
        for(i=n;i<=m;i++){
            if((i%3!=0&&i%11!=0)){
                continue;
            }
            if(i%5==0){
                res++;
            }
        }
        printf("%d",res);
        return 0;
    }

    3:编程3

    18.在体操比赛中,每位选手的得分是由多名裁判综合打分所得。现在已经汇总了N名选手的个人总得分

    (选手的编号依次为1,2,……N),请你设计程序找出第K名选手在所有选手中的排名。
    输入说明:第一行是N和K,N表示运动员的个数,K是选手序号;第二行依次是这N位运动员的个人总得分。
    输出说明:第K名(从1开始)选手在所有选手中的排名。
    输入样例1:6  4

    500 450 460 480 510 530

    输出样例1:4

    输入样例2: 6  2

    500 490 490 490 490 530

    输出样例2:3

    #include <stdio.h> 
    #include <stdlib.h>
    int a[1000000];
    int cmp(const void *a,const void *b)
    {
        return *(int *)b-*(int *)a;
    }
    int main(){
        int n,m,dest=0;
        int i,res=0;
        scanf("%d%d",&n,&m); 
        for(i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        dest=a[m-1];
          qsort(a,n,sizeof(a[0]),cmp);
          for(i=0;i<n;i++){
              if(a[i]==dest){
                  printf("%d",i+1);
                  break;
              }
          }
        return 0;
    }

    4:编程4

    19.假设以某个雷达站所在位置为基点,坐标记为(0,0),侦察半径是R千米。现有N个运动物体坐标(单位是干米),请计算有多少个运动物体会被雷达侦测到。
    输入说明:第一行是两个数N和R,分别表示运动物体的个数和侦察半径。接下来是N行分别输入运动物体的坐标(XY)。
    输出说明:N个运动物体中能够被雷达发现的个数。
    输入样例:5 30

    10 25

    18 12

    19 10

    20 25

    21 22

    输出样例:3

    #include <stdio.h> 
    #include <stdlib.h>
    int main(){
        int n,m,dest=0;
        int i,res=0,x,y;
        scanf("%d%d",&n,&m); 
        for(i=0;i<n;i++){
            scanf("%d%d",&x,&y); 
            dest = sqrt(x*x+y*y);
            if(dest<m){
                res++;
            } 
        }
        printf("%d",res);
        return 0;
    }

    5:编程5

    因部分同学反应比赛刚开始时间网页较卡顿,现统一延长比赛时间至17:10,特此公告!
    20.给出N(N<1000)个整数,用它们构建一个二叉排序树。请给出元素K是其双亲节点的左子树还是右子树。
    输入说明:第一行输入N和K,第二行输入N个整数。
    输出说明:如果是左子树输出Left child,如果是右子树输出Right child

    输入样例:7 6

    12 15 11 8 6 10 3

    输出样例:Right child

    #include <stdio.h> 
    #include <stdlib.h>
    struct TNode{
        int data;
        struct TNode *lt;
        struct TNode *rt;    
    };
    struct TNode* insrtTree(struct TNode *t,int key,int i);
    int arr[1000]={0};
    int main(){
        int n,m;
        int i,t;
        scanf("%d%d",&n,&m); 
        struct TNode *root=NULL;
        for(i=0;i<n;i++){
            scanf("%d",&arr[i]); 
            root=insrtTree(root,arr[i],i);
        }
        if(arr[m-1]==0){
            printf("Right child");
        }else{
            printf("Light child");
        }
        return 0;
    }
    
    struct TNode* insrtTree(struct TNode *t,int key,int i){
        if(t==NULL){ 
            t=(struct TNode*)malloc(sizeof(struct TNode));
            t->lt=t->rt=NULL;
            t->data=key;
            return t;
        }
        if(t->data>key){
             arr[i]=1;
            t->lt=insrtTree(t->lt,key,i);
        }else{        
            arr[i]=0;
            t->rt=insrtTree(t->rt,key,i);
        }
        return t;
    }

    结果:

  • 相关阅读:
    WPF之窗体说明
    WPF之基本概念
    WPF学习之button
    写一本”错误百出”的C语言学习教程(一)
    JSP的工作原理-还是没理解--多看点再写。
    Java将中文转换成unicode字符。
    postgres 导出数据到csv 文件
    python小试身手-文件重命名,文件复制和压缩(.gz)
    python 环境安装 mark下。
    JRE,JVM,JDK的区别---粘自百度知道、
  • 原文地址:https://www.cnblogs.com/dgwblog/p/11874419.html
Copyright © 2020-2023  润新知