首页 > 试题广场 >

以下程序段的输出结果是?

[单选题]
以下程序段的输出结果是
#include<stdio.h>
void main() { 
    char s[] = "\\123456\123456\t";
    printf("%d\n", strlen(s));
}
  • 12
  • 13
  • 16
  • 以上都不对
推荐
【正确答案】A
【解析】strlen() 函数用于获取字符串的长度(即字符串中字符的个数,不包括\0)。\\、\123、\t是转义字符。所以长度是 12。
\\ 表示单个字符\
\123 表示八进制的ASCII码值为123对应的字符
\t 表示制表符
 
字符串处理函数知识点讲解】
更多C++基础专业知识讲解,点击链接即可查看
https://www.nowcoder.com/link/zxyl-cpp26
编辑于 2021-11-17 15:30:22 回复(0)
答案:A
这里考查转义字符,注意 \\ 表示字符 \
\123表示字符 {
\t 表示制表符
这些都是一个字符。
发表于 2015-01-27 16:25:55 回复(11)
答案: A
解释:

char s[] = "//123456/123456/t";
这样strlen(s)输出17.

 char s[] = "\\123456\123456\t";

这样strlen(s)输出12.

计算字符串长度时关键是要注意辨认转义字符;
含转义字符的有:
//
/123
/t
编辑于 2021-11-17 15:30:22 回复(25)
应该是 12位
\\ 表示 \
\123 表示 S
\t 是制表符
都占用一位
所以一共是12位
发表于 2016-02-29 17:25:34 回复(4)
这里主要是考察转义字符的使用:\\  \123  \t 这些都是转义字符,在计算字符串长度时,这些转移字符代表一个字符。
注意这里的  \123 ,在ascii中,‘\ddd’表示八进制,而'\xdd'表示十六进制,(d是一个数字占位符,表示八进制,x表示十六进制)。所以\123的十进制为83,在ASCII码表中对应的是 S
发表于 2016-03-10 10:02:20 回复(0)
\\=\,\123=S,\t=Tab键
 %d int类型的
 %c 字符形式/指针
%s 字符串形式
\\123456\123456\t也就等于\123456S456(+隐形的Tab键)

编辑于 2015-09-24 15:29:54 回复(2)
\123   转义为8进制   再对应到相应ascii    显示出来是  S
发表于 2015-08-19 16:10:33 回复(0)
大家可以去百度词条查,可以发现\0到\31是ascii的控制字符,负责控制不输出,\32到\127是打印字符,可以打印出来,所以解释了为什么其中不是匹配\1或者\12只匹配\123,其中是以八进制匹配的所以\123为S
发表于 2018-02-12 11:29:15 回复(0)
转义字符以反斜线'\'开头,后面可以跟三种形式:
        1. 一个字符。如:char c1 =  '\t'
        2. 一个八进制数。如:char c2 = '\110'
        3. 一个十六进制数。如:char c3 = '\x0d'
发表于 2016-12-19 14:50:06 回复(1)
strlen()返回字符串长度,是不包括结束符的。
发表于 2016-03-01 22:52:35 回复(0)
正确答案应该为13。
除了\符号转义外,用字符串初始化char数组时会在末尾添加'\0',所以最后长度要加1.
发表于 2017-07-10 21:53:06 回复(2)
\\,1,2,3,4,5,6,\123,4,5,6,\t
发表于 2022-01-22 15:22:20 回复(0)
除号是/斜杠,反斜杠为\表示转义字符,\ddd表示ASCII码。 \123不表示\1,\12而表示\123,是因为\0-\31是ASCII的控制字符,\32-\127是打印字符
编辑于 2020-10-03 00:05:45 回复(0)
注意这里的  \123 ,在ascii中,‘\ddd’表示八进制,而'\***'表示十六进制,(d是一个数字占位符,表示八进制,x表示十六进制)。所以\123的十进制为83,在ASCII码表中对应的是 S
发表于 2018-04-21 16:15:55 回复(0)
该字符串中含有三个转义字符,转义字符表示一个字符,\ddd,是用八进制表示的转义字符,八进制对应Ascii表中的字符。
发表于 2015-09-09 16:56:51 回复(0)
\ddd  d 为 8进制
\xhh  h 为16进制
发表于 2015-08-18 12:01:57 回复(0)
Ascll码表中,两个字符输出为一个字符\\就是\ 1\123代表八进制转义字符,\t也是转义字符 所以为1 2 3 4 5 6 7 8 9 10 11 12
发表于 2023-02-07 12:40:53 回复(0)
应该是 12位 \\ 表示 \ \123 表示 S \t 是制表符 都占用一位 所以一共是12位
发表于 2022-01-17 19:44:36 回复(0)
1(\\)+6(123456)+1(\123)+3(456)+1(\t)=12;\\表示\,\123表示{,\t表示制表符
发表于 2021-03-15 16:41:54 回复(0)

选 A,

C 标准里规定,字符串字面量是由 s-char 组成的序列。

s-char 是以下两种情形之一:

  1. 除了",\,换行之外的其他字符
  2. 转义序列

转义序列时如下情形之一:

  1. 一般转义序列,只包括\'\"\?\\\a\b\f\n\r\t
  2. 八进制转义序列\ 加 1~3 位的八进制数字字符(0-7)。
    ...其他略

本着贪心匹配的原则,\123 是一个字符,\078 是两个字符。

发表于 2019-09-03 13:44:04 回复(0)
转义字符:\\  \123  \t 这些都是转义字符,在计算字符串长度时,这些转移字符代表一个字符。
“\**”八进制,“\x**”十六进制
编辑于 2018-04-20 16:43:58 回复(0)