• 2020计算机应用能力大赛C语言决赛客观题


    14. 补全代码

    本题要求输入某一年的两天,计算这两天之间间隔的天数,有四处待补全。

    #include <stdio.h>
    #include <math.h>
    int jdg(int year)/*填空1*/
    {
        int  leap;
        leap= (year%4==0 && year%100!=0 || year%400==0);
        return  leap;
    }
    int fun1(int  y, int  m, int  d)
    {
        int  finall[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
        int  r=0, i;
        for(i=1; i<m; i++)
            r+=finall[i];/*填空2*/
        r=r+d;
        if(jdg(y)&&m>=3)/*填空3*/
            r=r+1;
        return  r;
    }
    int main()
    {
        int  y, m, d, dd ;
        printf("开始日期:");
        scanf("%d %d %d",&y, &m, &d);
        dd = fun1(y, m, d);
        printf("结束日期:");
        scanf("%d %d %d",&y, &m, &d);
        dd = fun1(y, m, d)-dd;/*填空4*/
        printf("从开始日期到结束日期总共有%d天
    ",dd);
        return 0;
    }

    tips: ① C语言没有bool变量;

       ② 填空3注意m>=3.

    15. 补全代码

    要求输入一个字符串,判断其位于给出字符串的第几个位置,有四处待补全。

    #include  <stdio.h>
    #include  <string.h>
    #define   N   10
    #define   M   10
    int f(char str[N][M],char temp[M])/*填空1*/
    {
        int  i;
        for(i=0; i<N ; i++)
            if(strcmp(str[i],temp)==0)
                return i ;/*填空2*/
        return -1;/*填空3*/
    }
    int main()
    {
        char  str[N][M]= {"jony","lucy","abbe","lily","rebeca","tomme","osca","tomas","jayjay","doan"},temp[M]= {}; /*填空4*/
        int  n,i;
        printf("
    原始字符串数组为:
    ");
        for(i=0; i<N; i++)
            puts(str[i]);
        printf("
    ");
        printf("请输入你想要查询的字符串:  ");
        gets(temp);
        n=f(str,temp);
        if(n== -1)
            printf("
    对不起,没找到!
    ");
        else
            printf("
    恭喜你,找到了,它是二维数组中第%d个一维数组.
    ",n);
        return 0;
    }

    16. 编程

    #include    <stdio.h>
    #define    N    5
    int r[N][N];
    void fun1(int (*a)[N])
    {
        int mid = N / 2;
        for(int i = 0; i < N; ++i)
        {
            for(int j = 0; j < N; ++j)
            {
                int x = i - 2;
                int y = j - 2;
                if((y > x && y < -x) || (y < x && y > -x))
                {
                    (*(a + i))[j] = 0;
                }
            }
        }
    }
    void printArray(int (*a)[N])
    {
        for(int i = 0; i < N; ++i)
        {
            printf("%2d",(*(a + i))[0]);
            for(int j = 1; j < N; ++j)
            {
                printf("  %2d",(*(a + i))[j]);
            }
            printf("
    ");
        }
    }
    void scanArray(int (*a)[N])
    {
        for(int i = 0; i < N; ++i)
        {
            for(int j = 0; j < N; ++j)
            {
                scanf("%d",&((*(a + i))[j]));
            }
        }
    }
    int main()
    {
        int t[N][N]= {25,33,14,28,19,42,57,48,39,53,39,34,27,40,77,61,21,36,74,51,42,82,38,25,40}, i, j;
        printf("原始矩阵:
    ");
        printArray(t);
        fun1(t);
        printf("变换后的矩阵:
    ");
        printArray(t);
        printf("
    随机输入一个%d*%d的矩阵:
    ",N,N);
        scanArray(t);
        fun1(t);
        printf("变换后的矩阵:
    ");
        printArray(t);
        return 0;
    }

    17. 编程

    题目以本次新冠肺炎疫情为背景,要求输入5个城市的信息,其中包括城市名字,新增感染人数,现有感染人数,累积感染人数,治愈人数和死亡人数,定义一种相似度并给出其计算方法。

    #include  <stdio.h>
    #include  <string.h>
    #include <math.h>
    #define   N   5
    #define   M   10
    float ans,tmp;
    char c1[M],c2[M]; //记录结果城市名字
    struct area   //结构体表示城市信息
    {
        char name[M];
        int data[N];
    } areas[N];
    
    float sim(int x,int y)  // 计算相似程度
    {
        float d=0;
        for(int i=0; i<N; i++)
            d+=((areas[x].data[i]-areas[y].data[i])*(areas[x].data[i]-areas[y].data[i]));
        return 1/(1+sqrt(d));
    }
    
    int main()
    {
        ans=0;
        // 分行输入城市数据信息,空格间隔,例如:CityB 20 49 1127 1074 4
        for(int i=0; i<N; i++)
        {
            scanf("%s",&areas[i].name);
            for(int j=0; j<N; j++)
                scanf("%d",&areas[i].data[j]);
        }
        for(int i=0; i<N-1; i++)
            for(int j=i+1; j<N; j++)
            {
                tmp=sim(i,j);
                printf("%s和%s的疫情相似程度是:%.6f
    ",areas[i].name,areas[j].name,tmp);
                // 迭代记录答案
                if(tmp>ans)
                {
                    strcpy(c1,areas[i].name);
                    strcpy(c2,areas[j].name);
                    ans=tmp;
                }
            }
        // 输出结果
        printf("
    %s和%s的当前疫情情况最相似。",c1,c2);
        return 0;
    }

  • 相关阅读:
    2018-2019-1 20189221 《从问题到程序》第 6 周学习总结
    2018-2019-1 20189221 《Linux内核原理与分析》第七周作业
    《文献管理与信息分析》第 2 周学习总结
    2018-2019-1 20189221 《从问题到程序》第 5 周学习总结
    2018-2019-1 20189221 《Linux内核原理与分析》第六周作业
    2018-2019-1 20189206 《深入理解计算机系统》第一章学习笔记
    2018-2019-1 20189206 《从问题到程序》速读
    2018-2019-1 20189206 《深入理解计算机系统》速读
    2018-2019-1 20189206 《构建之法》速读
    2018-2019-1 20189206 《Linux内核原理与分析》第二周作业
  • 原文地址:https://www.cnblogs.com/MissCold/p/13410760.html
Copyright © 2020-2023  润新知