【c语言】一维数组的概念及其使用(例题讲解)

假设你在编写一个程序,要将100个整形数据存放在电脑上,闲的话,完全可以定义一百次int来存放,显然,我们写程序就要寻找简洁的方式来存放,那么,就引入数组。

数组就是一组具有相同类型的数据的有序集合,相同的一组数据可以理解为有限个相同类型的变量,并将这一组数据命一个名,我们把它叫做"数据名",有序集合可以理解为变量是有编号的,编号称为“下标”,各个变量称为“数组的元素”也称为“数组的长度”。 

 一:一般格式

类型说明符 数组名 [常量表达式] 

其中,常量表达式包括常量和符号常量,注意一定不是变量,因为,c语言不允许动态定义数组的大小。

#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	int b[n];
}

在一开始,n就是变量,不能去表示数组n的长度

若常量表达式是整型常量时

int n[6];//表示为整型数组n,有六个元素
//分别为n[0],n[1],n[2],n[3],n[4],n[5]
//特别注意是没有n[6]


  二:初始化一维数组 


初始化赋值的一般格式为:
类型说明符 数组名[常量表达式]=[常量表达式1,常量表达式1,----常量表达式n];
说明:在{ }中的各数值即为各元素的初值
 

初始化的几种常见形式

一:这几种形式是等价的

int b[4]={1,2,3,4};
int b[ ]={1,2,3,4};
int b[4];b[0]=1;b[1]=2;b[3]=3;b[4]=4;

二:可为部分元素赋值,当值的个数不够时,只为前面的元素赋值,后面的元素赋值就为零

int c[3]={1,2};
int c[3];c[0]=1;c[1]=2;c[2]=0;


三:初始化赋值的常见错误

 

//值的个数应该大于或等于元素的个数
int d[6]={1};
//改成
int d[6]={1,1,1,1,1,1};
//不能用变量来初始化值
int x=1,a[2]={1,x};
//不能用变量来初始化值
int x=1,a[2]={1,x};
int e[3];
e={1,2,3};//不能直接为数组名赋值
int e[3];
e[3]={1,2,3};//"={初值序列}"只能出现在赋值语句中,只限于数值的初始化
//改写为:int e[3]={1,2,3};
//两组数组不能直接执行赋值运算
//而数组的元素可以
int f[4]={1,2,3,4};
int g[4];
f=g;
//改为:
int f[4]={1,2,3,4};
int g[4];
f[0]=g[0];f[1]=g[1];f[2]=g[2];f[3]=g[3];


 四:引用一维数组元素 

首先,我们要知道,数组元素的引用与简单类型的使用是不同的的.
c语言的数组名实质上是数组的首地址,相当于我们的姓名,它是固定的常量.
不能对常量进行赋值,也就是说只能对数组的元素进行赋值,换言之,

我们不能利用数组名来整体引用一个数组,只能单个引用数组元素

数组元素的一般格式为:

数组名 【下标】

int a[4];
a[0]='C';a[1]='S';a[2]='D';a[3]='N';

张三在本学期的法考成绩有七次,分别为:31,36,46,56,50,51,60,
请用数组的知识来保存七次成绩,以及输出小于六十的成绩

#include<stdio.h>

void main()
{
	int i,a[7];
	printf("请输入张三七次法考的成绩\n");
	for(i=0;i<7;i++)
		scanf("%d",&a[i]);//循环语句为数组赋值
	printf("\n");
	printf("张三小于六十的成绩有:\n");
	for(i=0;i<7;i++)//循环语句输出元素
    if(a[i]<60)
		printf("%4d",a[i]);
	printf("\n");
}

 上述例题可知,由于不能整体输入或输出数组,所以就逐个输入或输出数组里的元素。


我们用for语句来实现:

for(i=0;i<7;i++)
printf("%d",&a[i]);
//等价于:
scanf("%d %d %d %d %d% d% d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);

例二

任意输入七个元素放在一组中,并将每个元素往后移动一位
再第七个元素放在第一个存储单位上

#include<stdio.h>
int main()
{
	int num,a[7],i;
	printf("请输入七个数:\n");
	for(i=0;i<7;i++)
		scanf("%d",&a[i]);//用for语句输入七个数据
   num=a[6];              //将七个数据赋值给num
	printf("第一次结果:\n");
	for(i=0;i<7;i++)
	{
		
		printf("第%d个元素:%d\n",i+1,a[i]);//用for语句依次输出七个元素
	}
	 
	for(i=6;i>=0;i--)
	{
		a[i]=a[i-1];//把前一个元素赋值给后一个元素
	}
	a[0]=num;//将第一次结果的第七个数据的值赋值给第二次结果的第一个元素
	printf("输出第二次结果:\n");
	for(i=0;i<7;i++)
	{
		printf("第%d个元素:%d\n",i+1,a[i]);//用for语句输出第二次的七个元素的排序
	}
	printf("\n");
    
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值