计算变量的内存大小

单点时限: 1.0 sec

内存限制: 512 MB

在程序设计语言中,我们需要先定义变量,再对变量进行操作。现在让你计算一下这些变量总共占用了多少内存空间(单位 Byte字节)。本题中涉及的数据类型所占空间大小如表所示,也可以用sizeof()运算符得到。

数据类型大小(字节)
short2
int4
float4
double8
char1

输入格式

输入一个整数n,表示接下来有n行变量定义语句,变量定义语句为以下两种格式:

int a
类型 变量名

或者

int a[10]
类型 变量名[数组长度L]

保证数据类型仅包含short, int, float, double, char,不包含指针;

变量名仅由一个大写字母或小写字母构成。在此不同语句的变量名可以重复,每条语句都算作定义了一个新的变量;

如果变量是数组,则仅为一维数组,不会出现多维数组,数组长度为正整数L。

输入规模约定

对于60%的数据,0<n<=100, 变量定义语句中不包含数组

对于100%的数据,0<n<=100,变量定义语句中可以包含数组,且数组长度L满足0<L<=1000

输出格式

输出一个整数,表示所有变量占用的总内存空间大小,单位为字节。

样例

input

3
float b
int a
int c

output

12

input

5
float b
int a
char s[10]
double d[5]
int c

output

62
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int n;
    scanf("%d",&n);
    int sum=0;
    while(n--)
    {
       char s1[10],s2[10];
       scanf("%s %s",s1,s2);
       int size=0;
       if(!strcmp(s1,"short"))size=2;
       else if(!strcmp(s1,"int"))size=4;
       else if(!strcmp(s1,"float"))size=4;
       else if(!strcmp(s1,"double"))size=8;
       else if(!strcmp(s1,"char"))size=1;

       int i=0,t=0;
       while(s2[i])
        if(s2[i++]=='[')break;
       while(s2[i]!=']'&&s2[i])
       {t=s2[i]-'0'+t*10;i++;}
       if(t==0)t=1;
       sum+=t*size;
    }
    printf("%d",sum);
    return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值