正在加载图片...
全国计算机二级C语言常考题型专题讲座 字符串长度的计算方法 提示:(1)计算字符串长度时关键是要注意辨认转义字符:(2)一个转义字符总是以反斜 杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意! 1、不带转义字符的字符串 如:“abc!x=/”,其长度为7 2、带转义字符的字符串 (1)字符串“abcn”:其中的n’为转义字符(换行符),计算字符串长度时只 能计作一个字符,所以该字符串的长度为4(而不是5) (2)字符串“abcⅦn\\\":其中有4个转义字符:'\n’(换行符)、’\'(反斜 杠)、’\’(单引号)、’\"(双引号),所以该字符串的长度为7(而不是11) (3)字符串“abc\Oxyz”:其中有一个转义字符’\0,它是字符串结束符,所以, 当用函数 strlen来测试该字符串的长度时,结果应该为3(而不是7)。 (4)字符串“abc\0xy”:其中有一个转义字符\'(反斜杠),这样,后面的字 符串“0xy”照样计算,所以,该字符串的长度为7(而不是将第二个反斜杠与其后的0 结合为一个转义字符\0’,若那样的话,第一个反斜杠将无法处理,因为一个转义字符 总是由反斜杠加其他字符组成的,单独的一个反斜杠不能作为任何合法的字符) (5)若将字符串“abc\Oxy”改为“abc\0xy”:则其中有二个转义字符\(反 斜杠)和”\0’(字符串结束符),这时,当用函数 strlen来测试该字符串的长度时 结果应该为4(而不是7) (6)若将字符串“abc\\Oxy”改为“abc\06lxy”:则其中有二个转义字符’\ (反斜杠)和\061’(ASCI码值等于061的字符,也即数字字符’1),这时,当用函 数 strlen来测试该字符串的长度时,结果应该为7(而不是4或9)。所以,当遇到转 义字符0时,还要看其后面是否还有数字,若有,则应将后面的数字(一至二位)与 前面的’\0相结合作为一个字符计入整个字符串的长度 若用 printf(“abc\\06lxy”);输出,则输出结果为:abc\lxy 例题一:请选出以下语句的输出结果() printf(%od\n", strlen("\t\"\065\xff\n")) (A)5(B)14(C)8(①)输出项不合法,无正常输出 正确答案是(A):字符串中包含的5个字符是:\t’(跳格符)、”\"(双引号)、\065 ( ASCII值为八进制065,也即十进制为51的字符)、'wxf'( ASCII值为十六进制ff, 也即十进制为255的字符)、’Ⅷn’(换行符)。 例题二:若有以下程序段 char str[="ab\n\012\\\ printf(%d", strlen(str))全国计算机二级 C 语言常考题型专题讲座 字符串长度的计算方法 提示:(1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜 杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意!!! 1、不带转义字符的字符串 如:“abc!x=/”,其长度为 7 2、带转义字符的字符串 (1) 字符串“abc\n”:其中的'\n'为转义字符(换行符),计算字符串长度时只 能计作一个字符,所以该字符串的长度为 4(而不是 5) (2) 字符串“abc\n\\\'\"":其中有 4 个转义字符:'\n'(换行符)、'\\'(反斜 杠)、'\''(单引号)、'\"'(双引号),所以该字符串的长度为 7(而不是 11)。 (3) 字符串“abc\0xyz”:其中有一个转义字符'\0',它是字符串结束符,所以, 当用函数 strlen 来测试该字符串的长度时,结果应该为 3(而不是 7)。 (4) 字符串“abc\\0xy”:其中有一个转义字符'\\'(反斜杠),这样,后面的字 符串“0xy”照样计算,所以,该字符串的长度为 7(而不是将第二个反斜杠与其后的 0 结合为一个转义字符'\0',若那样的话,第一个反斜杠将无法处理,因为一个转义字符 总是由反斜杠加其他字符组成的,单独的一个反斜杠不能作为任何合法的字符)。 (5) 若将字符串“abc\\0xy”改为“abc\\\0xy”:则其中有二个转义字符'\\'(反 斜杠)和'\0'(字符串结束符),这时,当用函数 strlen 来测试该字符串的长度时, 结果应该为 4(而不是 7)。 (6) 若将字符串“abc\\\0xy”改为“abc\\\061xy”:则其中有二个转义字符'\\' (反斜杠)和'\061'(ASCII 码值等于 061 的字符,也即数字字符'1'),这时,当用函 数 strlen 来测试该字符串的长度时,结果应该为 7(而不是 4 或 9)。所以,当遇到转 义字符'\0'时,还要看其后面是否还有数字,若有,则应将后面的数字(一至二位)与 前面的'\0'相结合作为一个字符计入整个字符串的长度。 若用 printf(“abc\\\061xy”);输出,则输出结果为:abc\1xy 例题一:请选出以下语句的输出结果( ) printf("%d\n",strlen("\t\"\065\xff\n")); (A) 5 (B) 14 (C) 8 (D) 输出项不合法,无正常输出 正确答案是(A):字符串中包含的 5 个字符是:'\t'(跳格符)、'\"'(双引号)、'\065' (ASCII 值为八进制 065,也即十进制为 51 的字符)、'\xff'(ASCII 值为十六进制 ff, 也即十进制为 255 的字符)、'\n'(换行符)。 例题二:若有以下程序段: char str[]="ab\n\012\\\""; printf("%d",strlen(str));
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有