用C语言实现:C/C++语言中,表示整数和浮点数有好多种数据类型。在32位平台中,每种类型在内存中占用的字节数各不相同: char: 1 Byte int: 4 Byte long: 4 Byte long long: 8 Byte __int128: 16 Byte (前面两个下划线'_',此类型仅在C++支持,但不影响本题求解) float: 4 Byte double: 8 Byte long double: 16 Byte 一个字节对应8位二进制数,这也决定了他们能表达数值的范围是有差异的。现在给你一些数据类型的查询,请输出其对应的字节数。 建议大家使用函数进行模块化编程,例如: int getByteofType(char t[]) { } int main() { } 输入格式: 第一行一个整数N(1<=N<=1000),表示待查询的类型的数量。以下N行,每行给出一种类型。 输出格式: 每行一个整数,表示输入中类型对应的字节数。 输入样例: 6 char long long char int long __int128 输出样例: 在这里给出相应的输出。例如: 1 8 1 4 4 16
时间: 2024-02-16 19:00:17 浏览: 110
下面是用 C 语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
int getByteofType(char t[]) {
if(strcmp(t, "char") == 0) return 1;
else if(strcmp(t, "int") == 0) return 4;
else if(strcmp(t, "long") == 0) return 4;
else if(strcmp(t, "long long") == 0) return 8;
else if(strcmp(t, "__int128") == 0) return 16;
else if(strcmp(t, "float") == 0) return 4;
else if(strcmp(t, "double") == 0) return 8;
else if(strcmp(t, "long double") == 0) return 16;
else return 0;
}
int main() {
int n;
scanf("%d", &n);
getchar(); // 读掉换行符
while(n--) {
char type[20];
fgets(type, 20, stdin);
type[strlen(type)-1] = '\0'; // 去掉换行符
printf("%d\n", getByteofType(type));
}
return 0;
}
```
思路是定义一个函数 `getByteofType`,输入参数是一个字符串类型的数据类型名称,返回值是该数据类型在内存中占用的字节数。在 `main` 函数中,先读入需要查询的数据类型数量 `n`,然后循环读入每个类型名称,调用 `getByteofType` 函数获取字节数并输出。
阅读全文