2767184930 发表于 2020-12-12 01:30:18

作业题求助

1. 正确的数组定义语句是()。
A. int n=5, x;                                                B. intx={0,1,3,5,7,9};
C. charc1[ ]={′1′,′2′,′3′,′4′,′5′};                        D. charc2[ 5]= "12345";
为啥感觉这道题ACD都是对的emmm

一世轻尘 发表于 2020-12-12 08:03:18

C赋值时使用的不是单引号,D字符数组没有地方存放'\0'.

风过无痕1989 发表于 2020-12-12 09:42:53

A、对支持C99的编译器而言,此题是对的。不支持C99的编译器,就不支持这种变长数组,这题就是错的
B、定义正确
C、定义错误,没有给出数组元素的个数
D、错误,给字符赋值,现有5个字符,数组长度也只有5个,最后的结束符,就没有单元放了。改为:charc2[ 6]= "12345"; 就正确了

xieglt 发表于 2020-12-12 09:49:54

A. int n=5, x;                               错误,应该写为 int x;
B. intx={0,1,3,5,7,9};               错误,数组长度为5,初始化了6个元素,溢出。
C. charc1[ ]={′1′,′2′,′3′,′4′,′5′};      正确,数组没给定长度,初始化5个元素则确定了数组长度为5
D. charc2[ 5]= "12345";                  错误,数组长度为5,但字符串"12345"的长度为6,溢出。

405794672 发表于 2020-12-12 18:05:31

这题只有C对。A不允许这么定义。你可以用C++的new来。但C语言不允许
B有六个数字,超出了定义的5个长度
D同样有六个位置,超出了5个长度。

dongli2020 发表于 2020-12-12 18:32:38

A是错的,C语言中数组长度必须为常量
B是错的,超过定义的长度
C是对的
D是错的,同样也是超过了定义的长度,别忘了字符数组保存字符串还有个隐藏的'\0'
页: [1]
查看完整版本: 作业题求助