AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 c语言选择判断题库 题目详情
CA4E3A01C46000013755684012D01E55
c语言选择判断题库
379
单选题

1、第238题 (1.0分) 题号:522 若有 char s1[]=“abc”,s2[20],*t=s2;gets( ); 则下列语句中能够实现当字符串s1大于字符串s2时,输出s2的语句是()。

A
 if(strcmp(s1,s1)>0)puts(s2);
B
 if(strcmp(s2,s1)>0)puts(s2);
C
 if(strcmp(s2,t)>0)puts(s2);
D
 if(strcmp(s1,t)>0)puts(s2);

答案解析

正确答案:D

解析:

**解析:** 本题考查 C 语言中字符串比较函数 `strcmp` 的使用以及指针的基本概念。 1. **理解题意**: * 题目要求:当字符串 `s1` **大于** 字符串 `s2` 时,输出 `s2`。 * 已知条件: * `char s1[] = "abc"`:定义并初始化了字符串 `s1`。 * `char s2[20], *t = s2;`:定义了字符数组 `s2` 和指向 `s2` 首地址的指针 `t`。 * `gets(...)`:从标准输入读取字符串存入 `s2`(题目中 `gets( )` 括号内虽为空或省略,但结合上下文语境,通常意指读取输入到 `s2` 中,或者考察点仅在于后续的比较逻辑,假设 `s2` 已有内容)。 2. **分析 `strcmp` 函数**: * 函数原型:`int strcmp(const char *str1, const char *str2);` * 功能:按字典序比较两个字符串。 * 返回值: * 若 `str1` > `str2`,返回正整数(>0)。 * 若 `str1` == `str2`,返回 0。 * 若 `str1` < `str2`,返回负整数(<0)。 * 因此,“`s1` 大于 `s2`” 对应的表达式为 `strcmp(s1, s2) > 0`。 3. **分析选项**: * **A. `if(strcmp(s1,s1)>0)puts(s2);`** * `strcmp(s1, s1)` 比较的是 `s1` 和它自己,结果恒为 0。 * `0 > 0` 为假,永远不执行 `puts(s2)`。 * **错误**。 * **B. `if(strcmp(s2,s1)>0)puts(s2);`** * `strcmp(s2, s1) > 0` 意味着 `s2` 大于 `s1`。 * 这与题目要求的“`s1` 大于 `s2`”条件相反。 * **错误**。 * **C. `if(strcmp(s2,t)>0)puts(s2);`** * 已知 `t = s2`,即 `t` 指向 `s2` 的首地址。 * `strcmp(s2, t)` 等同于 `strcmp(s2, s2)`,结果恒为 0。 * `0 > 0` 为假,永远不执行 `puts(s2)`。 * **错误**。 * **D. `if(strcmp(s1,t)>0)puts(s2);`** * 因为 `t` 指向 `s2`,所以 `strcmp(s1, t)` 等价于 `strcmp(s1, s2)`。 * `strcmp(s1, t) > 0` 即表示 `s1` 大于 `s2`(或者说 `s1` 大于 `t` 所指向的字符串)。 * 这完全符合题目要求的条件:“当字符串 `s1` 大于字符串 `s2` 时”。 * 条件满足时,执行 `puts(s2)`,输出 `s2`。 * **正确**。 **结论:** 正确答案是 **D**。
题目纠错
c语言选择判断题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码