如果希望记录 10 个最长为 99 字节的字符串,可以将字符串数组定义为 char s[100][10];。
这道题考二维数组存字符串时,每行长度必须包含结束符''。看到'最长99字节’先想:99个字符+1个结束符=100字节,所以每行要开100,10个字符串只需10行,题目把行列写反了。
考生常把'最长99字节’直接当成数组长度填99,忘了''占位;或看到100就以为要开100行,没分清行数是字符串个数。还有人把char s[100][10]理解成'100个字符串每个10字节’,完全颠倒了行列含义。
本题考查二维数组存储字符串的容量计算。C语言字符串以''结尾,这个结束符必须占用一个字符位置。因此,要存储一个长度为L的字符串,数组每行长度至少为L+1。
命题人喜欢用'最长N字节'这种表述,诱导考生直接填N,而忽略结束符。同时,二维数组的行列顺序是易错点:第一维通常表示字符串个数,第二维表示每个字符串的最大长度。题目给出'10个最长为99字节的字符串’,却写成char s[100][10],明显把行列颠倒了。