Coding In C day07

/*
 * 数组初始化练习
 * */

#include <stdio.h>
int main()
{
	//int arr[3] = {1, 2, 3};
	//int arr[3] = {1, 2, 3, 4, 5};//这种情况下,编译器编译会给出警告,同时编译器丢掉多余元素
	//int arr[] = {1, 2, 3, 4, 5};//这种情况下,编译器自动计算数组元素个数然后成倍申请内存空间,然后给出初始值。
	int arr[3] = {1};//编译器在这种情况下,会自动将其他未指明初始值的元素初始化为零
	int loop = 0;
	for (loop = 0; loop < 3; loop++)
		printf("%d\t", arr[loop]);
	putchar('\n');

	return 0;
}

/*
 * 二维数组练习
 *
 * 注意:多维数组从右到左依次是低维-高维
 * */

#include <stdio.h>
int main()
{
	//int arr[3][4] ={{11, 12, 13, 14}, {21, 22, 23, 24}, {31, 32, 33, 34}};
	//int arr[3][4] ={{11, 12 }, {21, 22, 23, 24}, {31, 32, 33, 34}};
	//int arr[3][4] ={{11, 12 }};//部分初始化,那么,没有被明确给出初始化值的,编译器用零来自动补全其他未初始化元素
	//int arr[][4] ={{11, 12 }, {21, 22, 23, 24}, {31, 32, 33, 34}};//不一定非要指明最高维度的数组长度,编译器可以根据初始化表来算出
	int arr[3][4] ={11, 12, 31, 32, 33, 34};//这种情况的初始化表并没有指明某一维度数组初始化哪个数值,所以编译器读取初始化表,然后逐一赋值给arr[0][0],arr[0][1], arr[0][2],...,arr[1][0], arr[1][1],...
	//int arr[3, 4]//错误,gcc编译器报错
	//int arr[12/4][4]//正确,[]中可以出现表达式
	int row = 0, col = 0;

	for (row = 0; row < 3; row++) {
		for (col = 0;col < 4; col++)
			printf("%d ", arr[row][col]);
		putchar('\n');
	}
	putchar('\n');

}

/*
 * 变长数组
 * 注意:传统上C语言(C89)是不支持变长数组功能的,也就是说数组长度是在编译期间就确定下来的,不能在运行期改变。变长数组的长度是在编译时无从得知的。
 * */

#include <stdio.h>

int main()
{
	int students;
	unsigned i = 0;
	printf("请输入学生人数:");
	scanf("%d", &students);
	float scores[students];
	printf("students是%d\nsizeof(scores)是%d\n", students, sizeof(scores));

	printf("请输入学生人数:");
	scanf("%d", &students);
	printf("students是%d\nsizeof(scores)是%d\n", students, sizeof(scores));
	

	for (i = 0;i < students;i++)
		scanf("%f", &scores[i]);
	for (i = 0; i < students; i++)
		printf("%f\t", scores[i]);
	printf("students是%d\nsizeof(scores)是%d\n", students, sizeof(scores));
	putchar('\n');
	return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值