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

1、第232题 (1.0分) 题号:517 若char a[10];已正确定义,以下语句中不能从键盘上给a数组的 所有元素输入值的语句是()。

A
 gets(a);
B
 scanf(”%s”,a);
C
 for(i=0;i<10;i++)a[i]=getchar();
D
 a=getchar();

答案解析

正确答案:D

解析:

**解析:** 本题考查的是 C 语言中字符数组的输入方式以及数组名的性质。 1. **分析数组名 `a` 的性质**: 在 C 语言中,数组名 `a` 代表数组首元素的地址,它是一个**地址常量**(pointer constant)。这意味着 `a` 的值在程序运行期间是固定的,不能被赋值修改。即不能出现 `a = ...` 这样的赋值语句。 2. **逐项分析**: * **A. `gets(a);`** `gets()` 函数用于从标准输入读取一行字符串,并将结果存储到参数指定的字符数组中。`a` 是数组名,代表数组的首地址,符合 `gets()` 的参数要求(`char *` 类型)。虽然 `gets` 存在缓冲区溢出风险且在新标准中已被废弃,但在语法上它是可以向数组输入值的。**该选项可行。** * **B. `scanf("%s", a);`** `scanf` 使用 `%s` 格式符读取字符串时,需要传入一个字符指针(即数组名或地址)。`a` 作为数组名,表示首地址,符合语法要求。注意:`scanf("%s")` 遇到空格或换行符会停止读取,且会自动添加结束符 `\0`。如果输入长度超过9个字符(留一个给`\0`),也会溢出,但就“能否输入值”这一语法层面而言,它是合法的输入语句。**该选项可行。** * **C. `for(i=0; i<10; i++) a[i] = getchar();`** `getchar()` 每次从标准输入读取一个字符。通过循环,依次将读取的字符赋值给数组的每个元素 `a[0]` 到 `a[9]`。这是逐个元素赋值的正确方式,可以填满整个数组。**该选项可行。** * **D. `a = getchar();`** 这里试图将 `getchar()` 返回的一个字符(`int` 类型,通常提升为 `char`)赋值给数组名 `a`。 * 首先,`a` 是地址常量,**不能作为左值被赋值**。编译器会报错 "lvalue required as left operand of assignment" 或类似错误。 * 其次,即使忽略左值问题,`getchar()` 只返回单个字符,无法一次性给数组的所有元素输入值。 **该选项不可行。** **结论:** 选项 D 违反了 C 语言中数组名不可被赋值的规则,因此不能用于给数组输入值。 **正确答案:D**
题目纠错
c语言选择判断题库

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

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