程序设计基础--C语言【五】

数组

目录

数组

5.1.一维数组

5.1.1.一维数组的引用

5.1.2.一维数组的初始化

5.1.3.一维数组的程序举例

5.2.二维数组

5.2.1.二维数组的定义

5.2.2.二维数组的引用

5.2.3.二维数组的初始化

5.2.4.举例

5.3.字符数组与字符串

5.3.1.字符组的初始化

5.3.2.字符数组的输入输出


5.1.一维数组

数组元素只有一个下标

cs 复制代码
类型说明符 数组名[表达式]

例如:int array[5] 定义了5个整型元素的一维数组。元素下标从0开始,所以它最后一个元素是array[4]

5.1.1.一维数组的引用
cs 复制代码
数组名[下标]

array[3]=1 赋值

下标可以是整型常量或整型表达式,像:array[4-1]相当于array[3]

5.1.2.一维数组的初始化
  1. 定义数组是对全部数组元素赋值 int arr[5]={0,1,2,3,4};
  2. 只给一部分赋值 int arr[8]={0,1,2,3,4}
  3. 对数组的全部元素赋值是,数组长度可以默认 int arr[]={0,1,2,3,4}与上1等价
  4. 指定初始化项目 int arr[6]={0,0,0,0,0,12}等价与int arr[6]={[5]=12}
5.1.3.一维数组的程序举例

【程序案例】求数列1,1,2,3,5,8...的前40个数

F1=1

F2=1

Fn=F(n-1)+F(n-2) (n>=3)

数组可以写作:f[i]=f[i-1]+f[i-2];

cs 复制代码
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int f[40]={1,1};
    int i;
    for(i=2;i<40;i++)
        f[i]=f[i-2]+f[i-1];
    for(i=0;i<40;i++)
    {
        if(i%4==0)
        printf("\n");
        printf("%12d",f[i]);
    }
    printf("\n");
    return 0;
}

运行结果:

【例2】输入5个数,找出最大值最小值和平均数

cs 复制代码
#include <stdio.h>
#include <stdlib.h>

int main()
{
   float num[5],max,min,sum=0,ave;
   int i;
   for(i=0;i<5;i++)
    scanf("%f",&num[i]);
   max=min=num[0];
   for(i=0;i<5;i++)
   {
       if(num[i]<min)
        min=num[i];
       if(num[i]>max)
        max=num[i];
       sum=sum+num[i];
}
ave=sum/5;
printf("最大值:%.2f\n最小值:%.2f\n平均数:%.2f\n",max,min,ave);
    return 0;
}

运行结果:

【❤冒泡排序法排列】(升序排列)

cs 复制代码
#include<stdio.h>
int main()
{
   float score[5],temp;
   int i,j;
   for(i=0;i<5;i++)
    scanf("%f",&score[i]);
   for(i=1;i<5;i++)/*外层循环控制趟数n个数需要n-1趟*/
    for(j=0;j<5;j++)/*内层循环控制次数n个数需要n次·*/
   {
       if(score[j]>score[j+1])
       {
           /*交换两数的值*/
           temp=score[j];
           score[j]=score[j+1];
           score[j+1]=temp;
       }
   }
   for(i=0;i<5;i++)
    printf("%7.2f",score[i]);
   printf("\n");
    return 0;
    }

运行效果:

5.2.二维数组

5.2.1.二维数组的定义

格式:

cs 复制代码
类型说明符 数组名[表达式1][表达式2]

例如:

cs 复制代码
float array[3][4]

定义了一个3*4的(3行4列),共12个元素的数组。

5.2.2.二维数组的引用
cs 复制代码
数组名[下标1][下标2]

第一个下标数可以省略第二个不行。

5.2.3.二维数组的初始化

与一维数组类似。

5.2.4.举例

将二维数组a的行和列的元素存到另一个二维数组b中去

例如:

a为:

1 2 3

4 5 6

b为:

1 4

2 5

3 6

cs 复制代码
#include<stdio.h>
#include <stdlib.h>
int main()
{
  int a[2][3]={{1,2,3},{4,5,6}};
  int b[3][2],i,j;
  for(i=0;i<=1;i++)
  {
      for(j=0;j<=2;j++)
  {
      printf("%5d",a[i][j]);
      b[j][i]=a[i][j];
  }
  printf("\n");
  }
    for(i=0;i<=2;i++)
    {
        for(j=0;j<=1;j++)
            printf("%5d",b[i][j]);
        printf("\n");
    }
    return 0;
    }

运行效果:

【❤杨辉三角】

cs 复制代码
#include<stdio.h>
#include <stdlib.h>
int main()
{
    int arr[10][10],i,j;
    for(i=0;i<10;i++)
    {
        arr[i][0]=1;
        arr[i][i]=1;
        for(j=1;j<i;j++)
            arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
    }
    for(i=0;i<10;i++)
    {
        for(j=0;j<=i;j++)
        {
            printf("%5d",arr[i][j]);

        }
        printf("\n");
    }
    return 0;
    }

运行效果:

5.3.字符数组与字符串

5.3.1.字符组的初始化

**1.逐个字符初始化:**char str[6]={'H','e','l','l','o','\0'};

可以写做:char str[]={'H','e','l','l','o','\0'}; 元素为6个

但是不能写成:char str[]={'H','e','l','l','o'}; 元素为5个,只能视作大小为5的字符数组,而不能认为是一个字符串。

2.用字符串常量初始化字符数组

char str[6]={"Hello"};

char str[6]="Hello";

两个都是对的。

char str[5]="Hello";是错的。

二维字符数组中,第一维数组长度表示字符串个数;第二维数组长度表示最长字符串的设定。

同样第一维可以省略。

5.3.2.字符数组的输入输出

1.以%c的格式逐个输入输出字符

%c会将空格回车或tab键作为有效字符输入

2.以%s的格式将字符串作为一个整体输入输出
以%s格式输入字符是,空格回车或tab键字符串输入结束标志。

由于字符数组名就是数组的首地址,所以输入%s时前面不用加&。

遇到\0就结束。

3.使用字符处理函数gets()和puts()把字符串作为一个整体输入输出。

cs 复制代码
char str[13];
gets(str);
puts(str);

输入字符串中若包括空格,Tab键,均能正常输入,仅以回车作为字符串输入结束的标志。

相关推荐
浅念-7 小时前
递归解题指南:LeetCode经典题全解析
数据结构·算法·leetcode·职场和发展·排序算法·深度优先·递归
Kiling_07047 小时前
Java集合进阶:Set与Collections详解
算法·哈希算法
智者知已应修善业8 小时前
【51单片机89C51及74LS273、74LS244组成】2022-5-28
c++·经验分享·笔记·算法·51单片机
洛水水8 小时前
【力扣100题】33.验证二叉搜索树
算法·leetcode·职场和发展
SimpleLearingAI8 小时前
聚类算法详解
算法·数据挖掘·聚类
刀法如飞9 小时前
Go 字符串查找的 20 种实现方式,用不同思路解决问题
算法·面试·程序员
Dlrb121111 小时前
C语言-指针数组与数组指针
c语言·数据结构·算法·指针·数组指针·指针数组·二级指针
WL_Aurora11 小时前
Python 算法基础篇之集合
python·算法
坚果派·白晓明11 小时前
【鸿蒙PC三方库移植适配框架解读系列】第一篇:Lycium C/C++ 三方库适配 — 概述与环境配置
c语言·开发语言·c++·harmonyos·开源鸿蒙·三方库·c/c++三方库
平行侠11 小时前
A15 工业路由器IP前缀高速检索与内存压缩系统
网络·tcp/ip·算法