共用体练习

    xiaoxiao2021-03-25  101

    共用体练习

    Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic

    Problem Description

     给定n和m,接下来有n个描述,每个描述包含一个类型标志和一组相应的数据。类型标志共3种:INT DOUBLE STRING,然后对应一组相应的数据。紧接着有m个询问,每个询问仅包含一个整数x,要求输出第x个描述对应的数据(STRING类型保证不含空格,每组对应STRING数据不会超过19个字符)。

     

    Input

    输入的第一行为两个整数,n和m (n<=100000, m<=100000),分别代表描述的个数和询问的个数。接下来为 n 行描述,最后为m行询问,具体格式见样例输入输出。

    Output

    对于每个询问,输出对应的结果,注意:浮点数保留两位小数。

    Example Input

    5 4 INT 456 DOUBLE 123.56 DOUBLE 0.476 STRING welcomeToC STRING LemonTree 0 1 2 4

    Example Output

    456 123.56 0.48 LemonTree #include<stdio.h> #include<string.h> union node {     int a;     double b;     char c[30]; }q[100001]; char str[100001][30]; int main() {     int m , n ,i, j ,k;     double ib;     char ic[30];     scanf("%d %d",&n,&m);     for(i = 0;i<n;i++)     {         scanf("%s",str[i]);         if(strcmp(str[i],"INT")==0)         {             scanf("%d",&j);             q[i].a = j;         }         else if(strcmp("DOUBLE",str[i])==0)         {             scanf("%lf",&ib);             q[i].b = ib;         }         else if(strcmp("STRING",str[i])==0)         {             scanf("%s",ic);             strcpy(q[i].c,ic);         }     }     for(i = 0;i<m;i++)     {         scanf("%d",&k);         if(strcmp("INT",str[k])==0)         printf("%d\n",q[k].a);         else if(strcmp("DOUBLE",str[k])==0)         printf("%.2lf\n",q[k].b);         else if(strcmp("STRING",str[k])==0)         printf("%s\n",q[k].c);     }     return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-17577.html

    最新回复(0)