单选题
1、第42题 (1.0分) 题号:518 char a[]=“This is a program.”;输出前5个字符的语句是()。
A
printf(”%.5s”,a);
B
puts(a);
C
printf(”%s”,a);
D
a[5*2]=0;puts(a);
答案解析
正确答案:A
解析:
**解析:**
本题考查 C 语言中字符串的输出控制,特别是 `printf` 函数的格式说明符用法。
1. **分析题目要求**:
题目定义了一个字符数组 `char a[] = "This is a program.";`,要求输出该字符串的**前 5 个字符**。
字符串的前 5 个字符是 `'T', 'h', 'i', 's', ' '`(注意空格也算一个字符)。
2. **逐项分析选项**:
* **A. `printf("%.5s", a);`**
* 在 `printf` 函数中,`%s` 用于输出字符串。
* `.5` 是精度修饰符。对于字符串类型 `%s`,精度指定了**最大输出字符数**。
* `%.5s` 表示最多输出字符串的前 5 个字符。如果字符串长度不足 5,则输出全部;如果超过 5,则截断只输出前 5 个。
* 因此,该语句会输出 `"This "`,符合题目要求。**(正确)**
* **B. `puts(a);`**
* `puts()` 函数用于输出整个字符串,并自动在末尾添加一个换行符 `\n`。
* 它会输出 `"This is a program."` 的全部内容,而不是仅前 5 个字符。**(错误)**
* **C. `printf("%s", a);`**
* `%s` 没有指定精度限制,默认输出从起始地址直到遇到结束符 `\0` 为止的所有字符。
* 它会输出 `"This is a program."` 的全部内容。**(错误)**
* **D. `a[5*2]=0; puts(a);`**
* `a[5*2]` 即 `a[10]`。将 `a[10]` 赋值为 `0`(即 `\0`),相当于人为地在第 11 个位置截断字符串。
* 原字符串索引对应关系:
* 0: 'T'
* 1: 'h'
* 2: 'i'
* 3: 's'
* 4: ' '
* 5: 'i'
* 6: 's'
* 7: ' '
* 8: 'a'
* 9: ' '
* 10: 'p' <-- 这里被改为 '\0'
* 执行后,`puts(a)` 将输出 `"This is a "`(前 10 个字符),而不是前 5 个字符。此外,这种写法修改了原数组的内容,通常不是单纯的“输出”操作的首选方式。**(错误)**
**结论:**
只有选项 A 能够准确且非破坏性地输出字符串的前 5 个字符。
**正确答案:A**
题目纠错
c语言选择判断题库
相关题目
单选题
1、第217题 (1.0分) 题号:154在以下给出的表达式中,与 do--while(E)语句中的(E)不等价的表达式是()。
单选题
1、第216题 (1.0分) 题号:166 下列定义数组的语句中不正确的是()。
单选题
1、第215题 (1.0分) 题号:162 设j和k都是int类型,则for循环语句 for(j=0,k=0;j<=9&&k!=876;j++) scanf(”%d”,&k);()。
单选题
1、第214题 (1.0分) 题号:192 下面选择中正确的赋值语句是(设char a[5],*p=a;)()。
单选题
1、第213题 (1.0分) 题号:600 若有说明语句:char c='\72';则变量c()。
单选题
1、第212题 (1.0分) 题号:688 若a=1,b=2则 a|b的值是()。
单选题
1、第211题 (1.0分) 题号:622 putchar函数可以向终端输出一个()。
单选题
1、第210题 (1.0分) 题号:493 C语言的注释定界符是()。
单选题
1、第209题 (1.0分) 题号:177 以下描述中,正确的是()。
单选题
1、第208题 (1.0分) 题号:577 在C语言中,int、char和short三种类型数据在内存中所占用的字节数()。
