注册 登录
编程论坛 C语言论坛

判断内存空间

qazxsw321 发布于 2019-11-01 16:58, 2057 次点击


在 C 语言中,sizeof() 是一个判断数据类型或者表达式的值所占的内存空间为多少(单位为字节)的运算符。现请你写一段程序来测试一下这个运算符。

输入:
共5行,第一行是一个字符c(只可能是大写字母或小写字母,要求用char存储);第二行是一个整数n(要求用int存储);第三行为一个整数m(要求用 long long 存储),第四行是一个浮点数(要求用float存储);第五行是一个浮点数(要求用double存储)。测试用例保证合法,不会出现超出我们指定的数据类型的范围。

输出:
共五行,每行一次对应输入的五行,输出格式见测试用例。
注意:
1、浮点数均要求保留3位小数;
2、每种数据类型在不同的系统下所占存储的大小可能不通。我们给出的样例是在32位的windows下运行的结果,在其他环境下有可能不同。判题的服务器为64位的linux,测试用例也是按在64位的linux上运行的结果给出,所以部分结果与在32位的windows上的结果不同。但程序只要写对,一定会通过。



输入样例
a
100
1000000000000
3.14
1.23456789



输出样例
Size of 'a' is 1 .
Size of 100 is 4 .
Size of 1000000000000 is 8 .
Size of 3.140 is 4 .
Size of 1.235 is 8 .
#include<stdio.h>
int main()
{
    char c;
    int n;
    long long m;
    float x;
    double y;
    scanf("%c\n %d\n %lld\n %f\n %lf",&c,&n,&m,&x,&y);
    int q,w,e,r,t;
    q=sizeof(c);
    w=sizeof(n);
    e=sizeof(m);
    r=sizeof(x);
    t=sizeof(y);
    printf("Size of '%c' is %d .\n",c,q);
    printf("Size of '%d' is %d .\n",n,w);
    printf("Size of '%lld' is %d .\n",m,e);
    printf("Size of '%.3f' is %d .\n",x,r);
    printf("Size of '%.3lf' is %d .",y,t);
    return 0;
}
运行时答案是对的,但是提交后却显示答案错误。
2 回复
#2
zbjzbj2019-11-01 18:04
输出多了几个引号。最好一行输出要不要回车?
#3
rjsp2019-11-01 19:42
主要错误在于 除了a 其它不应该加单引号

其它错误有
scanf("%c\n %d\n %lld\n %f\n %lf" 应该是 scanf(" %c%d%lld%f%lf"
sizeof的类型是size_t,不是int
size_t在printf中用 %zu
1