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

1、第94题 (1.0分) 题号:164 下列数组说明中,正确的是()。

A
 static char str[]=“China”;
B
 static char str[]; str=“China”;
C
 static char str1[5],str2[]={“China”}; str1=str2;
D
 static char str1[],str2[];str2={“China”}; strcpy(str1,str2);

答案解析

正确答案:A

解析:

这道题考查的是 C 语言中字符数组的定义、初始化以及赋值规则。我们需要逐一分析每个选项的语法正确性。 **选项分析:** * **A. `static char str[]=“China”;`** * **分析**:这是正确的数组定义并初始化的方式。 * 在定义数组时,如果提供了初始化列表(这里是字符串常量 `"China"`),编译器会自动根据初始化内容的长度来确定数组的大小。 * 字符串 `"China"` 包含 5 个字符加上末尾的空字符 `\0`,共 6 个字节。因此,`str` 会被定义为长度为 6 的字符数组,并将 `"China\0"` 复制进去。 * `static` 关键字表示该变量具有静态存储期,语法上也是合法的。 * **结论**:**正确**。 * **B. `static char str[]; str=“China”;`** * **分析**:这里有两个错误。 * 第一,`static char str[];` 这种定义方式是不合法的。如果在定义数组时没有指定大小,必须同时进行初始化,以便编译器推断数组长度。单独声明 `char str[]` 而不给大小且不初始化,编译器无法知道分配多少内存。 * 第二,即使假设 `str` 已经定义为某个大小的数组(例如 `char str[10];`),在 C 语言中,数组名是一个常量指针(地址常量),不能作为左值被赋值。语句 `str = "China";` 试图将字符串常量的地址赋给数组名,这是非法的。如果要给数组赋值字符串,应该使用 `strcpy` 函数或在定义时初始化。 * **结论**:**错误**。 * **C. `static char str1[5],str2[]={“China”}; str1=str2;`** * **分析**: * `str2[]={“China”}` 是合法的初始化,`str2` 大小为 6。 * `str1[5]` 定义了一个长度为 5 的数组。注意:`"China"` 需要 6 个字节(含 `\0`),如果要把 `"China"` 放入 `str1`,空间也不够(但这不是主要的语法错误点)。 * 主要错误在于 `str1=str2;`。同选项 B 一样,数组名不能作为左值进行赋值操作。C 语言不支持直接使用 `=` 将一个数组的内容拷贝给另一个数组。必须使用循环逐个元素赋值或使用 `strcpy`/`memcpy` 等库函数。 * **结论**:**错误**。 * **D. `static char str1[],str2[];str2={“China”}; strcpy(str1,str2);`** * **分析**: * `static char str1[],str2[];`:同样,定义数组时若未指定大小,必须立即初始化。这里只声明了未定长的数组而未初始化,语法错误。 * `str2={“China”};`:数组不能在定义之后使用 `{}` 进行整体赋值。初始化列表只能在定义时使用。 * `strcpy(str1,str2);`:由于前面的定义和赋值都错了,这行代码也无法正确执行。此外,`str1` 没有分配空间,使用 `strcpy` 会导致未定义行为。 * **结论**:**错误**。 **总结:** 只有选项 A 符合 C 语言关于数组定义和初始化的语法规则。数组可以在定义时通过字符串常量进行初始化,编译器会自动计算所需空间并完成拷贝。而其他选项均涉及非法的数组赋值操作或不完整的数组定义。 **正确答案:A**
题目纠错
c语言选择判断题库

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

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