共用体练习
给定n和m接下来有n个描述每个描述包含一个类型标志和一组相应的数据。类型标志共3种INT DOUBLE STRING然后对应一组相应的数据。紧接着有m个询问每个询问仅包含一个整数x要求输出第x个描述对应的数据STRING类型保证不含空格每组对应STRING数据不会超过19个字符。输入格式:输入的第一行为两个整数n和m (n100000, m100000 ), 分别代表描述的个数和询问的个数。接下来为 n 行描述;最后为m行询问具体格式见样例输入输出。输出格式:对于每个询问输出对应的结果注意浮点数保留两位小数。输入样例:5 4 INT 456 DOUBLE 123.56 DOUBLE 0.476 STRING welcomeToC STRING LemonTree 0 1 2 4输出样例:456 123.56 0.48 LemonTree答案#includestdio.h #includestring.h union Data{ int int_val; double double_val; char str_val[20]; }; struct Dase{ char k[7]; union Data data; }; int main(){ int n,m; scanf(%d %d,n,m); struct Dase arr[100000]; for(int i0;in;i){ char temp[7]; scanf(%s,temp); strcpy(arr[i].k,temp); if(strcmp(temp,INT)0){ scanf(%d,arr[i].data.int_val); } else if(strcmp(temp,DOUBLE)0){ scanf(%lf,arr[i].data.double_val); } else if(strcmp(temp,STRING)0){ scanf(%s,arr[i].data.str_val); } } for(int j0;jm;j){ int num; scanf(%d,num); if(strcmp(arr[num].k,INT)0){ printf(%d\n,arr[num].data.int_val); } else if(strcmp(arr[num].k,DOUBLE)0){ printf(%.2f\n,arr[num].data.double_val); } else if(strcmp(arr[num].k,STRING)0){ printf(%s\n,arr[num].data.str_val); } } return 0; }