C语言一维数组-学习十二
C语言一维数组-学习十二
2022-02-03 / 0评论 / 252阅读 / 0点赞
-- XG.孤梦

C语言一维数组-学习十二

XG.孤梦
2022-02-03 / 0 评论 / 252 阅读 / 正在检测是否收录...

数组

  • 数组是一组有有序数据的集合,数组中各数据的排列是有一定规律的,下标代表数据在数组中的序号
  • 数组中的每一个元素都属于同一个数据类型
  • 数组必须先定义后使用
  • 定义

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

一维数组

  • 定义的一般形式

    • 类型符 数组名 [常量表达式];
    • 例如: int a[4+6]; int b[10];
  • 引用数组元素的表示形式

    • 数组名 [下标]
      -例如: a[1] = 10; a[0]=a[5]+a[7]-a[2*3];
  • 注意:只能引用数组元素而不能一次整体调用整个数组全部元素的值
数组的复制
#include<stdio.h>

void main()
{
    int a[10] = { 1,2,3,4,5,6,7,8,9,10 }, b[10];

    for (int i = 0; i < 10; i++){
        b[i] = a[i];
        printf("%d ", b[i]);
    }
}

21457-4sk12b9coz2.png


一维数组的赋值

  • 给数组赋值的方法:

    • 赋值语句对数组元素逐个赋值;
    • 采用初始化赋值;
    • 动态赋值(scanf())。
  • 数组初始化赋值:

    • 在数组定义时给数组元素赋初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。
  • 一般形式

    • 类型说明符 数组名[常量表达式] = {值,值,...,值};
    • 例如: int a [10] ={0,1,2,3,4,5,6,7,8,9}; int a [10] ={0,1,2,3,4};
  • 如果想使一个数组中全部元素值为0。

    • 可以写成: int a[10]={0,0,0,0,0,0,0,0,0,0};int a[10]={0};
  • 在对全部数组元素赋初值时,可以不指定数组。

    • 例如: int a[5]={1,2,3,4,5}; 可以写成: int a[]={1,2,3,4,5};
  • 动态赋值

    • 可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
    • 例如:
    for( i=0;i<10;i++)
         scanf_s( "%d", &a[il);

例子

对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输
#include<stdio.h>

void main()
{
    int a[10], i;

    for (i = 0; i < 10; i++)
        a[i] = i;
    for (i=9; i >= 0 ; i--)
        printf("%d ",a[i]);
}

61428-zt4eevqkl1j.png

将数组中各元素交换,将数组的第一个元素与最后一个交换,第二个元素与倒数第二个交换,以此类推。
#include<stdio.h>

void main()
{
    int a[10], i,j;

    for (i = 0; i <= 9; i++)
        a[i] = i;
    for (i = 0; i < 10 / 2; i++) {
        j = a[i];
        a[i] = a[9 - i];
        a[9 - i] = j;
    }
    for(i=0;i<=9;i++)
        printf("%d ",a[i]);
}

61428-zt4eevqkl1j.png

求一维数组中最大元素及其下标。
#include<stdio.h>

void main()
{
    int a[10], i,j,max;

    for (i = 0; i < 10; i++)
        scanf_s("%d",&a[i]);
    max = a[0];
    for (i = 0; i <10; i++)
        if (a[i]>max){
        max = a[i];
        j = i;
    }
    printf("max=%d,j=%d\n", max, j);

}

47863-6conpgep2wv.png

用数组处理求Fibonacci数列问题
#include<stdio.h>

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

38059-a0f0m6airb7.png


练习

1、以下对一维数组a的正确说明是___。

(A)int a(10);

(B)int n=10,a[n];

(C)int n;scanf("%d",&n);

(D)

 #define SIZE 10 
 int a[SIZE];

2、以下能对一维数组a进行正确初始化的语句是___。

(A) int a[10]= (0,0,0,0,0);

(B)int a[10] = {>

(C)int a[] = {0};

(D)int a[10] = {10*1};

3、当从键盘输入18并回车后,下面程序的运行结果是___。

#include<stdio.h>

main()
{
    int x, y, i, a[8], j, u, v; 
    scanf_s("%d", &x);
    y = x;
    i = 0;
    do {
        u = y / 2;
        a[i] = y % 2;
        i++;
        y = u;
    }while (y >= 1); 
        for (j = i - 1; j >= 0; j--)
            printf("%d", a[j]);
    }

(A)10010

(B)10001

(C)01001

(D)00110



0

评论

博主关闭了所有页面的评论