赞
踩
关于联合体和结构体,以下描述错误的是()
联合体union的存放顺序是所有成员都从高地址开始存放的
联合体中可以定义多个成员,联合体的大小由最大的成员的大小决定。
可以使用匿名结构体来定义结构体变量
结构体变量可以用.运算符访问其成员
选A
联合体(
union
)是一种特殊的数据结构,允许在相同的内存位置存储不同的数据类型。在联合体中,所有成员共享同一块内存空间,即它们的地址是相同的
union UnionName { type1 member1; type2 member2; // ... };其中,
UnionName
是联合体的名称,type1
、type2
等是成员的数据类型,member1
、member2
等是成员的名称。在使用联合体时,只能同时存储一个成员的值。当赋值给一个成员时,其他成员的值会被覆盖。这是因为联合体的所有成员共享相同的内存位置。因此为了存放联合体中所有类型的数据,联合体的大小由最大的成员的大小决定
匿名结构体是指在定义结构体变量时,不给结构体起一个具体的名字
// 定义匿名结构体并创建结构体变量 struct { int x; int y; } point;可以用.访问成员, 结构体指针可以使用->访问
阅读以下程序:
int main(){
int sum=0;
enum n{a,b,c,d,e,f};
enum n i;
for(i=a;i<=f;i=(enum n)((int)i+1))
sum+=(int)i;
printf("%d",sum);
return 0;
},对于该程序,以下描述错误的是()d的值为3
程序运行之后,输出结果为15
语句"sum+=(int)i;"执行了5次
可以在枚举定义的花括号内显式地为枚举成员赋值
选C
enum
是一种用来定义一组命名整数常量的数据类型。这个题定义了一个枚举类型n
,包含了常量a
、b
、c
、d
、e
和f
。每个枚举常量都会被分配一个整数值,默认情况下从0开始递增。
a
的值为0,b
的值为1,依此类推,f
的值为5。for(i=a;i<=f.....可以认为 循环是从0-5的
((int)i+1)) 将i强制转换为int(因为上面有定义enum n i;)
然后加1 强转为enum类型 再赋值给i 相当于i++, 但是enum n类型不是常量, 不能直接自增
sum再加上强转为int类型的i, 循环六次后
i = 0+1+2+3+4+5 = 15
关于结构体,以下描述正确的是()
结构体成员是全局变量
结构体指针变量可以用->运算符访问其成员
两个结构体变量之间不能直接用\'=\'相互赋值
结构体指针在声明时会自动为其分配结构体内存空间
选B
定义在哪里就是什么变量 定义在全局就是全局变量 定义在局部就是局部变量
B正确
两个结构体变量之间是可以直接用
=
相互赋值的D错误。在C语言中,结构体指针在声明时并不会自动为其分配结构体内存空间。声明结构体指针只是为指针变量分配了内存空间来存储地址,但并没有分配结构体的实际内存空间。
这里提醒一下大家, 以后声明结构体指针 一定要记得初始化, 就算暂时没有指向的地址也要置为空指针NULL 不然成为野指针是很危险的
阅读以下程序: int fun(int n[],int Len){
int Max=n[0];
for(int i=1;i<Len;i++)
if(Max<n[i])
Max=n[i];
return Max;
}
int main(){
int n[]={1,2,3,4,5};
printf("%d",fun(n,sizeof(n)/sizeof(int)));
return 0;
}以下描述错误的是()fun()函数的返回值类型是int
fun()函数的功能是求数组n中元素的最大值,并将其返回
输出结果为5
for循环中i++执行了5次
没啥好说的 选D
从1 到5 执行了四次,再i++判断 i就是5了,加了五次
以下描述正确的是()
C语言程序可以有多个main函数
函数可以嵌套定义
C语言源程序中,main函数可以在其它函数之后
C语言是计算机低级语言
选C
只能有一个主函数
不可以嵌套定义
在C语言中,函数的定义通常是在全局作用域或者另一个函数的外部进行的,而不允许在另一个函数内部嵌套定义一个完整的函数。
C语言是计算机高级语言
以下关于C语言函数的描述,错误的是()。
每个C语言程序都至少有一个函数
函数可以嵌套定义
函数可以嵌套调用
函数可以没有返回值
选B
至少有main函数
可以嵌套调用
void函数就是没有返回值
阅读下面这个函数:
int fun(int a, int b) {
return a>b ? a:b;
}
该函数的作用是()返回两个数的最小值
返回两个数的最大值
判断两个数是否相等
返回a+b的值
返回两个数的最大值 选B
在调用函数时,若实参是数组名, 它与对应形参之间的数据传递方式是()
单向值传递
由实参传形参,再由形参传实参
地址传递
传递方式由用户指定
传递地址
以下两种传递相同 都是传数组名 数组名就是首元素地址
传的地址那么就是某type*类型
- void f1(int a[]){
-
- }
-
- void f2(int* a){
-
- }
对于语句char q=\'A\';char *p=&q;以下描述错误的是()
*p是指针
(int)q的值为65
p的内存单元中储存着q的内存单元的地址
字符\'A\'在内存中是以二进制形式存储
先不写了 明天就比赛了 链接我放出来 是计算机能力挑战赛官方公众号发的题
https://github.com/kismetfor/ComputerChallengeRace/blob/main/3/C%E8%AF%AD%E8%A8%80.xlsx
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。