一维数组的定义,初始化,应用

一维数组的定义: 

形如 int a[10],int a[20],四要素:变量名,变量类型,变量的值,变量的内存地址

数组的内存地址是连续的 ,最低的地址对应第一个元素,最高的地址对应最后一个元素。

代码举例如下: (包括对于一维数组的定义,数组的初始化,还有关键字的sizeof的用法)

#include<stdio.h>

int main()
{
    int a[4]={1,2,3,4}; //全部赋值
    int b[4]={1,2};     //部分赋值
    int c[5]={0};       //初始化为0
    int array[] ={1,2,3,4}; //见怪不怪的写法,但是这种写法不知道数组的大小
    int size;
    size = sizeof(array)/sizeof(array[1]);
    printf("数组array的大小是:%d",size);
    

    return 0;
}

 该代码的输出结果是:

数组array的大小是:4

 sizeof利用整个数组的大小除以数组内某个元素的大小,最终得出整个数组的总个数。

一维数组的遍历 

代码如下: 

#include<stdio.h>

int main()
{	
	int i;
	int a[10];
	printf("该数组的正向输出值为:");
	for(i=0;i<10;i++){
		a[i]=i;
		printf("%d",a[i]);
	}
	printf("\n逆向输出值是:  ");
	for(i=9;i>=0;i--){
		a[i]=i;
		printf("%d",a[i]);
	}
	
	return 0;
}

该代码的运行结果是: 

该数组的正向输出值为:0123456789
逆向输出值是:  9876543210

利用for循环给一维数组a[10]进行赋值,就可以得到上述结果。 

 

 

编程实现 输出Fibinacci数列的前30项:代码如下

#include<stdio.h>
int main()
{
	int array[30];
	int i;
	int arraysize;
	arraysize = sizeof(array)/sizeof(array[1]);
	array[0]=0;
	array[1]=1;
	for(i=2;i<arraysize;i++){
		array[i]=array[i-1]+array[i-2];
	}
	for(i=0;i<arraysize;i++){
		printf("%d  ",array[i]);
	}
	printf("\ndone\n");
	printf("%d",i);
	return 0;
}

该代码中:1 首先运用关键字sizeof,计算出大小未知的数组array的大小 

                  2 array[i]=array[i-1]+array[i-2];这一条语句是计算该数列的关键,利用for循环对数组进行赋值。

                  3 同时对数组进行遍历同样运用到for循环

                  4 最后输出数列的前30项,并且验证了i的值。

下面是冒泡排序法:代码如下: 

#include<stdio.h>

int main()
{
	int array[]={12,8,9,13};
	int i;
	int j;
	int temp;
	int len;
	len = sizeof(array)/sizeof(array[1]);
	for(i=0;i<len-1;i++){
		for(j=0;j<len-i-1;j++){
			if(array[j]>array[j+1]){
				temp = array[j+1];
				array[j+1] = array[j];
				array[j] = temp;
			}
			
		}
		
	}
	for(i=0;i<len;i++){
		printf("%d  ",array[i]);
	}
	return 0;
}

该代码的运行结果是:

8  9  12  13

该代码采用循环嵌套的模式,

外层嵌套的作用是确定需要进行几轮(i)比较

内层循环的作用是 确定每轮比较的时候需要多少组(j)进行比较。

具体的解释如左图所示。 

 该代码涉及的主要知识点:

1.sizeof的用法。

2.for循环的嵌套,注意理解不同层循环的意义。

3.数组的遍历,依然是利用for循环。

4.变量值的交换,利用中间值temp进行。

5.冒泡排序法的核心:理解如何求出比较的轮数和每一轮要比较的组数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值