解题思路:我们需要在草稿纸上模拟c语言的输入变量的定义,这样可以帮助你更好的理解 后面的输出注意一下单位的换算
一定要在草稿纸上,按照这个代码,模拟一下输入输出,能让你更好地理解
参考代码:
t = int(input())
ans = 0
for i in range(t):
s = input()
a = s.split()
if a[0]=='int':
b = a[1].split(',') #相似的,这个是将已经被切分(以空格为切分符)的输入字符,从数组下标为1处,取出变量名,由题目可知(去看看题目的描述)
ans += len(b)*4 #变量名有几个,就乘多少个 4 (这里的4,指的是4个字节)
elif a[0]=='long':
b = a[1].split(',') #与上面的int类似操作
ans += len(b)*8
elif a[0] == 'String':
b = a[1].split(',')
for x in b:
ans += len(x) - x.find('=') - 3
#len(x)是为获取总长度,为了放回字符串的长度,x.find('=')返回=的下标为1
#然后名字和=的长度共占4,所以减去‘=’下标长再减去3剩下的就是字符串的长
ans-=1 #减去后面的分号
elif a[0]=='long[]':
s=s.lstrip('long[]') #去除前面的"long[]"后为形成新的字符串
b=s.split(',')#将函数的类型与变量定义分离,然后形成list装住
for j in b:
st = j.find('[')+1 #例如这是分离后的-- int a[20] -->找到'['的下标 再加1就是 第一个数字的位置
end = j.find(']') #找到结束位置,[:] 的划分是取左不取右
x = int(j[st:end])
ans+=x*8
elif a[0]=='int[]':
s=s.lstrip('int[]')
b=s.split(',')
for j in b:
st = j.find('[')+1 #与上面类似
end = j.find(']')
x = int(j[st:end])
ans+=x*4
G = ans//(1024**3)
M = ans%(1024**3)//(1024**2)
K = ans%(1024**2)//1024
B = ans%1024
if G!=0:
print(f'{G}GB',end='')
if M!=0:
print(f'{M}MB',end='')
if K!=0:
print(f'{K}KB',end='')
if B!=0:
print(f'{B}B',end='')
#lstrip(),用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
#find:Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。
0.0分
2 人评分
【明明的随机数】 (C++代码)浏览:834 |
母牛的故事 (C语言代码)浏览:478 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:1110 |
【偶数求和】 (C语言代码)浏览:588 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:468 |
1009题解浏览:802 |
C语言训练-数字母 (C语言代码)浏览:648 |
字符逆序 (C语言代码)浏览:645 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:913 |
幸运数 (C++代码)浏览:1309 |