题目:设串s1-'ABCDEFG',s2-'PQRST’,函数con (x,y)返回x和y串的连接串,subs(s,i,j返回串s 的从序号开始的个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,len(s2)), subs (s1,len(s2),2))的结果串是:
A. BCDEF
B. BCDEFG
C. BCPCRST
D. BCDEFEF
正确答案:
D 答案解析:con(x,y)返回x和y串的连接串,即con(x,y)='ABCDEFGPQRST'; subs(s,ij返回串s的从序号开始的个字符组成的子串,则subs(s1,2, len(s2))= subs(s1,2,5)='BCDEF'; subs (s1, len(s2),2)= subs(s1, 5,2)='EF';所以con(subs(S1,2,len(s2)), subs(s1, len(s2),
2))=con(' BCDEF','EF')之连接,即BCD EFEF
我的疑问:c语言中字符串下标是从0开始的,为什么答案不是CDEFG FG呢?
请大家帮忙解惑,感谢!
C语言字符串是从0开始吗?为什么答案从1开始?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
一轮明月照丘壑 2024-10-03 21:29关注以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
这个问题涉及到字符串处理和字符串下标的理解。在C语言中,字符串的下标确实是从0开始的。但是在这个特定的问题中,我们需要理解subs函数的含义和行为。
首先,我们来理解subs函数的定义和行为:subs(s, i, j)返回串s的从第i个位置开始的j个字符组成的子串。这里的下标是从给定的起始位置开始计数,而不是从全局的字符串开始位置计数。换句话说,它并不是在整个字符串中寻找特定的位置,而是在给定的字符串中寻找特定的位置。因此,当我们在计算subs(s1, 2, len(s2))时,我们从s1的第2个位置开始取字符,取的长度是s2的长度。同样,当我们计算subs(s1, len(s2), 2)时,我们从s1的第len(s2)个位置开始取字符,取的字符个数为2个。然后两个结果作为参数传给con函数进行连接。因为C语言中字符串是从0开始下标计算的,但这里涉及的“从特定位置开始取字符”的过程并不能直接在整个字符串的下标体系下进行操作,因此不受整体从0开始的限制。因此在这种操作中看似逻辑比较绕人,但通过深入理解下标以及函数的功能就能够明白原因。这个例子中不是基于全局的字符串下标来拼接结果串的。而是要按照函数内部的操作逻辑来理解。因此答案是正确的,是BCDEFG中的后半部分与EF的组合结果串BCD EFEF。所以选项D是正确的。
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 2无用