单选题
1、第78题 (1.0分) 题号:503 以下语句中,不能实现回车换行的是()。
A
printf(”\n”);
B
putchar(”\n”);
C
fprintf(stdout,”\n”);
D
fwrite(”\n”,1,1,stdout);
答案解析
正确答案:B
解析:
这道题考查的是 C 语言中标准输出函数的参数类型及用法。我们需要逐一分析各个选项,判断其是否能正确输出换行符 `\n`。
**1. 选项分析**
* **A. `printf("\n");`**
* `printf` 是格式化输出函数。
* 参数 `"\n"` 是一个字符串常量,其中包含一个换行字符。
* `printf` 会解析格式字符串并输出其中的内容,因此该语句可以正常实现回车换行。
* **结论:可以实现。**
* **B. `putchar("\n");`**
* `putchar` 函数的原型是 `int putchar(int c);`。
* 它接收的参数是一个 **整数(int)** 或 **字符(char)**,即单个字符的 ASCII 码值。
* 选项中传入的参数 `"\n"` 是一个 **字符串常量**(在 C 语言中,双引号括起来的是字符串,其类型是指向字符的指针 `char *`)。
* 将字符串指针传递给期望接收 `int` 类型的 `putchar` 函数,会导致 **类型不匹配**。虽然在某些编译器下可能只会产生警告并输出不可预知的结果(通常是将指针地址的低字节当作字符输出,而不是换行符),但这在语法逻辑上是错误的,无法保证实现回车换行功能。
* 正确的写法应该是 `putchar('\n');`(使用单引号表示字符常量)。
* **结论:不能实现(语法/类型错误)。**
* **C. `fprintf(stdout, "\n");`**
* `fprintf` 是格式化输出到指定流的函数。
* 第一个参数 `stdout` 指定标准输出流。
* 第二个参数 `"\n"` 是格式字符串。
* 这与 `printf("\n")` 的效果完全一致,因为 `printf` 本质上就是 `fprintf(stdout, ...)` 的封装。
* **结论:可以实现。**
* **D. `fwrite("\n", 1, 1, stdout);`**
* `fwrite` 用于向流中写入数据块。
* 原型:`size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);`
* 参数解释:
* `ptr`: `"\n"`,指向包含换行符的字符串的指针。
* `size`: `1`,每个元素的大小为 1 字节。
* `nmemb`: `1`,写入 1 个元素。
* `stream`: `stdout`,输出到标准输出。
* 该语句会将 `"\n"` 字符串中的第一个字符(即换行符)写入标准输出。
* **结论:可以实现。**
**2. 总结**
* 选项 A、C、D 均能正确输出换行符。
* 选项 B 错误地将字符串常量 `"\n"` 传递给了只接受单个字符的 `putchar` 函数,正确的用法应使用字符常量 `'\n'`。
因此,不能实现回车换行的是 **B**。
**正确答案:B**
题目纠错
c语言选择判断题库
相关题目
单选题
1、第181题 (1.0分) 题号:508 int a=1,b=2,c=3; if( )b=a;a=c;c=b;则c的值为()。
单选题
1、第180题 (1.0分) 题号:169 下列说法不正确的是()。
单选题
1、第179题 (1.0分) 题号:602 在C语言中,要求运算数必须是整型的运算符是()。
单选题
1、第178题 (1.0分) 题号:605 以下所列的C语言常量中,错误的是()。
单选题
1、第177题 (1.0分) 题号:716 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()。
单选题
1、第176题 (1.0分) 题号:721 fseek函数的正确调用形式是()。
单选题
1、第175题 (1.0分) 题号:190 关于指针概念说法不正确的是()。
单选题
1、第174题 (1.0分) 题号:119 下列运算符中,不属于关系运算符的是()。
单选题
1、第173题 (1.0分) 题号:660 在C语言中,函数的隐含存储类别是()。
单选题
1、第172题 (1.0分) 题号:737 下列关于C语言数据文件的叙述中正确的是()。
