共用体练习

来源:互联网 发布:决战武林进阶数据亲 编辑:程序博客网 时间:2024/05/02 05:06

think:
1可以用二维字符串数组辅助记录每一次输入使用的数据类型
2共用体可以节约内存的申请
3共用体在某一瞬间只能记录存放一种类型成员
4只有先定义了共用体变量才能在后续程序中引用它,有一点需要注意:不能引用共用体变量,而只能引用共用体变量中的成员。——参考自百度百科
5共用体类型可以出现在结构体类型的定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体类型的定义中,数组也可以作为共用体的成员——参考自百度百科
6

main(){    union data    {        int a;        char b;    }data1;    data1.b='A';    data1.a++;    printf("%c\n",data1.b);}

共用体不同于结构体,会共有一处空间,对于其中一个成员的赋值,会影响到另一个成员,因此虽然是对data1.a++ (表示该值加1,由于该值共用data1.b,也即是 ‘A’ +1 ,将会将字符A变为其ASCII码再加1,也即是B)。所以最终结果是B。——参考自百度百科

sdut原题链接

共用体练习
Time Limit: 1000MS Memory Limit: 65536KB

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

Hint
必须使用共用体完成。

Author

以下为accepted代码

#include <stdio.h>#include <string.h>char st[100004][24];union node{    int x;    double y;    char z[24];}ans[100004];int main(){    int n, m, i, t;    scanf("%d %d", &n, &m);    for(i = 0; i < n; i++)    {        scanf("%s", st[i]);        if(strcmp(st[i], "INT") == 0)        {            scanf("%d", &ans[i].x);        }        else if(strcmp(st[i], "DOUBLE") == 0)        {            scanf("%lf", &ans[i].y);        }        else if(strcmp(st[i], "STRING") == 0)        {            scanf("%s", ans[i].z);        }    }    for(i = 0; i < m; i++)    {        scanf("%d", &t);        if(strcmp(st[t], "INT") == 0)            printf("%d\n", ans[t].x);        else if(strcmp(st[t], "DOUBLE") == 0)            printf("%.2lf\n", ans[t].y);        else if(strcmp(st[t], "STRING") == 0)            printf("%s\n", ans[t].z);    }    return 0;}/***************************************************User name: Result: AcceptedTake time: 120msTake Memory: 2756KBSubmit time: 2017-03-01 18:49:19****************************************************/
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中国银行u盾冻结怎么办 京东账号被拉黑怎么办 自己配电脑系统怎么办 没有京东白条怎么办 还款银行卡丢了怎么办 注销不符合条件房地产怎么办 淘宝买东西买完就降价怎么办 闲鱼收到空包怎么办 咸鱼上没收到货怎么办 沙发颜色错了怎么办 运动鞋网面发黄怎么办 京东不让退货怎么办 第一次送美团又不会怎么办 退货把货寄错了怎么办 冰箱发动机没坏不制冷怎么办 冰箱发动机坏了怎么办 冰箱侧面有坑怎么办 冰箱门上有坑怎么办 冰箱面板磕了怎么办 信用卡寄错地址怎么办 利润低税负低怎么办 公司利润太高怎么办 狗老咬自己的脚怎么办 qq支付忘记密码怎么办 社保存钱晚了怎么办 购机发票丢了怎么办 快递已发货拒收怎么办 买家硬是不退款怎么办 余额宝利息下降怎么办 建行卡没激活怎么办 怎么办长沙银行的卡 淘宝入不了群怎么办 咸鱼上联系不上卖家怎么办 闲鱼联系不上卖家怎么办 卖家想退款要回车辆怎么办 卖家还没发货想退款怎么办 海尔冰箱无发票怎么办 苹果8没发票怎么办 购房的发票丢失怎么办 ipad密码忘了怎么办 老顾客要求优惠怎么办