C语言零基础学作业题5

第1题:关于一维数组初始化,下面哪个定义是错误的?(    )
A、int arr[10] = {1,2,3,4,5,6};

B、int arr[] = {1,2,3,4,5,6};

C、int arr[] = (1,2,3,4,5,6);

D、int arr[10] = {0};

答案:C 、int arr[] = (1,2,3,4,5,6)是错误的定义。

解析:一维数组的初始化可以使用大括号{ }来赋初值。选项A和B都是正确的数组初始化形式。选项D中的{0}表示将数组中的所有元素初始化为0。选项C的赋值形式是错误的,应该使用大括号{ }来表示数组的初值。

第2题:定义了一维int型数组a[10]后,下面的错误的引用是:( )
A、a[0] = 1;

B、a[0] = 5*2;

C、a[10] = 2;

D、a[1] = a[2]*a[0];

答案:C

解析:int a[10]表示定义了具有10个元素的数组a,但是当调用数组a中某个元素时,下表引用操作符是只能为0~9。因此选项C,a[10]是错误的。

第3题:下面代码的结果是:(   )
#include <stdio.h>
int main()
{
    int arr[] = {1,2,(3,4),5};
    printf("%d\n",sizeof(arr));
    return 0;
}
A、4        B、16        C、20        D、5

答案:B

解析:这段代码定义了一个整型数组arr,并初始化为{1,2,(3,4),5}。这里需要注意的是,(3,4)并不是一个数组元素的合法值,而是一个逗号操作符的使用。逗号操作符会依次执行两个操作数,并返回最后一个操作数的值。在这个例子中,(3,4)会先执行3,然后再执行4,所以表达式的值为4。因此,数组实际上为{1,2,4,5}。使用sizeof()函数获取数组的大小,返回的是数组的总字节数。由于整型占用4个字节,所以结果为4x4=16。

第4题:关于一维数组描述不正确的是:(  )
A、数组的下标是从0开始的

B、数组在内存中是连续存放的

C、数组名表示首元素的地址

D、随着数组下标的由小到大,地址由高到低

答案:D

解析:数组随着下标的由小到大,地址也是由小到大变化的。数组在内存中是连续存放的。

第5题:以下能对二维数组a进行正确初始化的语句是:(  )
A、int a[2][ ] = {{0,1,2},{3,4,5}};

B、int a[ ][3] ={{0,1,2},{3,4,5}};

C、int a[2][4] = {{0,1,2},{3,4},{5}};

D、int a[ ][3] = {{0,2},{},{3,4,5}};

答案:B

解析:选项A错误,初始化时省略行,但是不能省略列。选项C、D错误,在二维数组的定义中,每一行必须有相同的元素个数。

第6题:若定义int a[2][3] = {1,2,3,4,5,6};则值为4的数组元素是(   )
A、a[0][0]

B、a[1][0]

C、a[1][1]

D、a[2][1]

答案:B

解析:二维数组访问是使用下标的形式的,二维数组是有行和列的,只要锁定了行和列就能唯一锁定数组中的一个元素。

                                       0        1          2

                                0     1        2          3

                                1      4       5          6

a[x][y]:x表示行,y表示列。因此值为4的数组元素是a[1][0]。

第7题:关于rand函数说法错误的是?
A、rand函数生成了0~32767之间的随机数

B、rand函数生成的真正的随机数

C、rand函数在使用之前,需要调用srand函数设置随机数的生成器

D、rand函数的使用需要包含stdlib.h的头文件

答案:B

解析:rand函数生成的随机数是伪随机数的,伪随机数不是真正的随机数,是通过某种算法生成的随机数。真正的随机数的是无法预测下一个值是多少的。而rand函数是对一个叫“种子”的基准值进行运算生成的随机数。

第8题:给出以下定义:
char acX[] = "abcdefg";
char acY[] = {'a','b','c','d','e','f','g'};
以下说法正确的是(    )

A、数组acX和数组acY等价

B、数组acX和数组acY的长度相同

C、sizeof(acX) > sizeof(acY)

D、strlen(acX) > strlen(acY)

答案:C

解析:acX是一个字符串,它以null字符'\0'结尾,而acY是一个字符数组,所以两者不等价。选项A错误;

虽然数组acX和数组acY都有7个元素,但是数组acX是一个以null字符结尾的字符串,而数组acY是一个没有null字符结尾的字符数组。所以在长度上,数组acX的长度比数组acY的长度多一个字节,所以选项B错误。

sizeof(acX)返回的是数组acX的总字节数,而sizeof(acY)返回的是数组acY的总字节数。在这个情况下,由于acX是一个字符串,sizeof(acX)会包括字符串的长度和结尾的null字符,所以sizeof(acX)大于sizeof(acY),选项C正确。

strlen(acX) > strlen(acY)。strlen(acX)返回的是字符串acX的长度,而strlen(acY)返回的是字符串acY的长度。在这个情况下,由于acX和acY都是以null字符结尾的字符串,它们的长度是相同的,所以strlen(acX)等于strlen(acY),选项D错误。

第9题:下面代码的结果是:(  )
#include <stdio.h>
int main()
{
    char str[] = "hello bit";
    printf("%d %d\n",sizeof(str),strlen(str));
    return 0;
}
A、10       9

B、9        9

C、10      10

D、9        10

答案:A

解析:str[ ]是一个字符串,它以null字符'\0'结尾。因此,sizeof(str)的值为10个字节,而strlen(str)表示字符串长度,为9个字节。

第10题:在C语言中,以下哪个选项描述了变长数组(Variable Length Array, VLA)的特点?
A、变长数组的大小在编译时确定,不能改变。

B、变长数组的大小可以在运行时确定,比如使用变量来指定数组大小,一旦确定大小后,它的大小是固定的,无法改变。

C、一旦确定大小后,它的大小是固定的,无法改变。

D、变长数组只能用于存储字符类型的数据。

答案:B

解析:变长数组是C语言中的一项特性,它允许在运行时使用变量来指定数组的大小。与传统的数组相比,变长数组的大小不再固定的,在每次使用前都可以重新指定大小。A、C选项描述的传统的数组的特点;D选项变长数组可以用于存储任何类型的数据,不限于字符类型。
 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值