c语言之-----数组学习笔记

一、什么是数组
 二、数组的定义
 
 格式:类型标识符  数组名[长度];
 int a[4]; //定义了一个数组a ,他是一个整型数组,而且它里面含有4个元素,每一个元素都是一个整型变量
它们分别是 a[0],a[1],a[2],a[3]
float pay[5]; //定义了一个
 三、数组的赋处值
 int a[3]={12,56,34};
 float price[5]={1.2,3.4,2.4}
注意:
1、在定义数组时,写在数组中括号的数只表示数组的长度,也就是所含有元素的个数
2、数组的下标是从零开始的
3、数组的最大下标能够到长度减一
4、给数组赋初值,赋值个数不能大于数组的长度
5、赋值个数可以小于数组长度,如果小于数组长度,对于没有赋到的值:
6、数组里面的值可以重复
7、数组名可以由用户自己取,但是需要符合c语言的语法规则
1:必须要以——或英文字母开头
2:不能包含特殊字符 (,*, )
3: 不能与关键字同名:for int double char 

A)整型或实型:0
B)字符型:“空字符”
数组的输入和输出:
有数组必须要循环
输出:
int a[10]={1,2,3,4,5,6,7,4,58};
for(int i=0;i<10;i++)
{
printf("%d",a[i]);
}
输入:
int a[10],i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);

}


层数可以变化,n来保存
 数组的简单应用
 
 
 int a[4]={1,2},k;
 int a[4]={0};//把数组a里面的值都赋值为零 
 
 
 第30集  数组的应用一
 
 让用户输入10个数,然后求出十个数的和,求出最大值与最小值。
  int a[10],sum=0,max,min,temp;
 for(int i=0;i<10;i++)
 {
printf("请输入10个整数:");
scanf("%d",&a[i]);
sum+=a[i];
 }
 printf("sum=%d",sum);
 max=a[0];


  for(int i=1;i<10;i++)
 {
if(max<a[i])
{
temp=max;
   max=a[i];
   a[i]=temp;
}
 

 }
 min=a[0];
  for(int i=1;i<10;i++)
 {
  if(min>a[i])
{
temp=min;
   min=a[i];
   a[i]=temp;
}
 }
printf("max=%d,min=%d",max,min);
 第32集
 关于数组的查找
 让用户输入一个要查找的数,然后在已知的数组中查找,如果找到了,就输出对应的下标,如果没找到就输出-1
 
 
 
 int n,index;
 printf("请输入要查找的数:");
 scanf("%d",&n);
 int a[8]={13,25,73,84,95,56,37,28};
  for(int i=0;i<8;i++)
 {
printf("%5d",a[i]);
 }
 
 for(int i=0;i<8;i++)
 {
if(n==a[i])
{
printf("找到了%d下标为%d",n,index);
}
 }
 
 
 关于数组的反转,把数组中的值反过来。
 int a[8]={21,42,536,64,75,86,47,80},i,j,temp;
 
  for(int i=0;i<8;i++)
  {
 printf("%5d",a[i]);
  }
   printf("\n");
 for(i=0;j=7;i<j;i++,j--)
 {
temp=a[i];
a[i]=a[j];
a[j]=temp;
 }
 
 for(int i=0;i<8;i++)
  {
 printf("%5d",a[i]);
  }
   printf("\n");
 
 数组元素的删除
 算法分析:
 1:定义一个数组,定义一个变量存放要删除的数
 2:查找到要删除的数在数组中的位置,找到对应的下标
 3:通过下标去删除对应的数组元素
 4:为了看到删除后的结果,输出数组
 
 for(i=n;i<7-1;i++)
 {
a[n]=a[i+1];
 
 }
 
 
 for(j=要删除的下标;j<长度-1;j++)
 {
a[j]=a[j+1];
 }
 
 
 main()
 {
int a[10]={1,2,3,4,5,6,7,8,9,10},del,index=-1,i,j;
 for(i=0;i<10;i++)
     {
printf("%4d",a[i]);
}
printf("\n");
printf("请输入要删除的数给delete:");
scanf("%d",&del);
 
for(i=0;i<10;i++)
     {
if(a[i]==del)
{
index=i;//保存下标的位置
break;  
}  
}
if(index==-1)
{
 printf("要删除的数%d没找到",del);
}else
{
for(j=index;j<9;j++)//删除下标为index的元素
{
a[j]=a[j+1];

 for(i=0;i<9;i++)
{
printf("%4d",a[i]);
}
}
 
 }
 数组的插入
 
 在一个有序的数组中,插入一个数,让插入后的数组,依然保持有序。
 
  main()
 {
int a[11]={10,20,30,40,50,60,70,80,90,100},insert,index=-1,i,j;
 for(i=0;i<10;i++)
     {
printf("%4d",a[i]);
}
printf("\n");
printf("请输入要插入的数给insert:");
scanf("%d",&insert);
 
for(i=0;i<10;i++)
     {
if(a[i]>insert)
{
 
break;  
}  
}
index=i;//保存下标的位置,这里很重要
 
for(j=10;j>index;j--)//插入下标为index的元素
{
a[j]=a[j-1];

a[index]=insert;
 for(i=0;i<11;i++)
{
printf("%4d",a[i]);
}
 
 
 }
 
 34集数组的应用举例之二
 先对数组进行升序排列
 int a[8]={1,4,2,7,34,12,-1},i,j,temp;
for(j=0;j<8;j++)
{
printf("%4d",a[j]);
}
 printf("\n");
 for(j=0;j<8;j++)//冒泡排序
 {
for(i=j+1;i<8;i++)
{
if(a[j]>a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
 
 }
 for(j=0;j<8;j++)
{
printf("%4d",a[j]);
}
 
 排序算法
 for(i=0;i<数组长度;i++)
for(j=i+1;j<数组长度;j++)
if(a[i]>a[j])//从小到大
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
 给的数组a,从数组中找出小于数组平均数的元素,存放在数组b中
 int a[10]={52,34,25,45,37,78,23,78,93,12},i,j=0,sum,b[10]={0};
 
 float avg;
 for(i=0;i<10;i++)
 {
sum+=a[i];
 }
  for(i=0;i<10;i++)
 {
printf("%4d",a[j]);
 }
 avg=sum/10.0;
  printf("%4d",avg);
 for(i=0;i<10;i++)
 {
if(a[i]<avg)
{
b[j++]=a[i];
}
 }
 for(i=0;i<j;i++)
 {
printf("%4d",b[i]);
 }
 
 
 36集二维数组
 
 
 
 什么是二维数组
 (一维数组只有一行)
 二维数组,有行有列
                                                         0列 1   2
第0行    1   2   3
4   5   6
    2行 7   8   9
 
 
 如何定义二维数组:
 格式:   类型标识符  数组名[行的长度][列的长度];
 ex:  int a[3][4];//一共有多少个元素?等于3*4=12个


 
 
 
 
 
 
 意义:定义了一个二维数组名为a这个数组里面含有12个元素,而每一个元素都是一个整型变量,他们是
  a[0][0],a[0][1],a[0][2],a[0][3]    对于第一行而言,行的下标都是零,只有列的下标在变化
 a[1][0],a[1][1],a[1][2],a[1][3]    
 a[2][0],a[2][1],a[2][2],a[2][3]
 对于第一列而言,列的下标都是0,只有行的下标在变化。
 如何给二维数组赋初值,就是给二维数组每一个元素赋初值
 1)int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
 2)int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
 3)可以省略行但不能省略列
      A:int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
 B:int a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
 C:int a[][4]={1,2,3,4,5,6,7,8,9,10,11};
     a[2][3]=0;
      D:int a[][4]={{1,3,4},{5,6,7,8},{9,10,11,12}};
     a[0][3]=0;
二维数组的行的长度,表示一共有多少行。列的长度表示每一行的元素个数


 二维数组的赋值原则:要优先满足前面的行,然后再来满足后面的行。(前面的行不能少元素,后面的行可以少元素)
 
 数组的输入和输出:
 1)有数组就要用循环,一维数组,只要一个循环。
 2)二维数组,它也要循环,两次循环
 
 
 我们要输出三行,而且第一行又要输出四个数据
 先来输出第一行的4个元素
 printf("%d",a[0][0]);
 printf("%d",a[0][1]);
 printf("%d",a[0][2]);
 printf("%d",a[0][3]);
 for(i=0;i<3;i++)//3行的长度
 {
for(j=0;j<4;j++)//4列的长度
{
printf("%5d",a[i][j]);
}
printf("\n");
 }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值