C语言习题~day8

1.以下能对二维数组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}};

对于二维数组int array[M][N], 说明如下:

 1. M和N都必须为常数,

 2. M代表数组有M行,N代表每行中有N个元素

 3. 其中M可以省略,省略后必须给出初始化表达式,编译器从初始化结果中推断数组有多少行

 4. N一定不能省略,因为N省略了就不能确定一行有多少个元素,也不能确定数组有多少行

A:错误,参数上述说明

B:正确,参考上述说明

C:错误,数组有两行,但是初始化给了三行

D:错误,初始化不允许{0,,2}该种情况存在

因此,选择B

2.若定义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]

 int a[2][3]表示2行3列的二维数组,根据其初始化知:

第0行即a[0]存储3个元素: 1,2,3

第1行即a[1]存储3个元素: 4,5,6

因此值为4的元素在第1行第0列

因此,选择B

3.在C语言中,以下哪个选项描述了变长数组(Variable Length Array,VLA)的特点?

 A.变长数组的大小在编译时确定,不能改变。

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

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

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

变长数组( variable-length  array),C语言术语,也简称VLA。是指用 整型变量或表达式声明或定义的数组 ,而不是说数组的长度会随时变化,变长数组在其生存期内的长度同样是固定的 。

代码示例:

int n;
scanf ("%d", &n);
int array[n];

注意上述语法在C99之前是不支持的。

A选项错误:编译时无法确定,编译时候编译器不知道n是什么值,n的值要等到程序运行起来后,用户输入之后n的值确定了,才能确定数组的大小

B选项:说法不严谨,一定是在运行时确定大小的,而不是可能

C选项正确

D选项错误:存储什么类型数据,看定义时候给数组名前放什么类型,比如int a[n]就是存放int类型 short a[n]就是存在short类型

4.关于C语言函数描述正确的是:( )

A.函数必须有参数和返回值

B.函数的实参只能是变量

C.库函数的使用必须要包含对应的头文件

D.有了库函数就不需要自定函数了

A:错误,可以没有参数和返回值类型,根据具体功能实现

B:错误,函数的实参可能是变量,也可能是常量,也可能是宏,也可能是指针等等

C:正确,在使用库函数时,必须要包含该库函数所在的头文件,否则编译器将不能识别

D:错误,库函数是语言设计者为了让用户能够更好的使用,而给出的,但并不能解决用户的所有问题,因此其他问题还需要用户自己写方法解决

5.以下叙述中不正确的是:( )

A.在不同的函数中可以使用相同名字的变量

B.函数中的形式参数是在栈中保存

C.在一个函数内定义的变量只在本函数范围内有效

D.在一个函数内复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)

A:正确 不同的函数属于不同的作用域,因此不同的函数中定义相同名字的变量不会冲突

B:正确 在C语言中,函数的形参一般都是通过参数压栈的方式传递的

C:正确 在函数内定义的变量,称为局部变量,局部变量只能在其定义的函数中使用

D:错误 复合语句中定义的变量只能在复合语句中使用

因此:选择D

6.以下关于函数设计不正确的说法是:( )

A.函数设计应该追求高内聚低耦合

B.要尽可能多的使用全局变量

C.函数参数不易过多

D.设计函数时,尽量做到谁申请的资源就由谁来释放

A:正确,高内聚低耦合即:函数体内部实现修改了,尽量不要对外部产生影响,否则:代码不方便维护

B:错误,全局变量每个方法都可以访问,很难保证数据的正确性和安全性

C:正确,参数越少越好,否则用户在使用时体验不是很好,还得必须将所有参数完全搞明白才可以使用

D:正确,谁申请的谁维护谁释放,否则如果交给外部使用者释放,外部使用者可能不知道或者忘记,就会造成资源泄漏

因此,选择B

7.【一维数组】交换数组    将数组A中的内容和数组B中的内容进行交换。(数组一样大)

/*
思路:题目比较简单,请参考代码以及注释
*/


#include <stdio.h>


int main()
{
	int arr1[10] = {0};
	int arr2[10] = {0};
	int i = 0;


	printf("请输入10个数字:>");
	for(i=0; i<10; i++)
	{
		scanf("%d", &arr1[i]);
	}
	printf("请输入10个数字:>");
	for(i=0; i<10; i++)
	{
		scanf("%d", &arr2[i]);
	}
	//交换
	for(i=0; i<10; i++)
	{
		int tmp = arr1[i];
		arr1[i] = arr2[i];
		arr2[i] = tmp;
	}
	
	return 0;
}

8.【一维数组】输入10个整数,求平均值   编写一个程序,从用户输入中读取10个整数并存储在一个数组中。然后,计算并输出这些整数的平均值。

#include <stdio.h>


int main() {
    int numbers[10];
    int sum = 0;
 
    // 读取用户输入的整数并存储到数组中
    for (int i = 0; i < 10; i++) {
        scanf("%d", &numbers[i]);
        sum += numbers[i];
    }
    double average = (double)sum / 10;
    printf("平均值为:%lf\n", average);

    return 0;
}

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值