数组

发布时间 2023-07-16 22:57:53作者: huxiaofeng

数组

  • 一维数组的定义:

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

    int [10]

注意: 定义数组的时候不能动态定义

int n;
scanf("%d", &n);
int a [n];
// c语言编译时就要储存一个数组的内存. 不运行后期添加数组内存

一些书写格式上的问题

// 遍历下标变量. 输出数组
for (i=0; i<10; i++){
 printf("%d", a[i]);
}
// 下面的写法是错误的. 不能直接输出
printf("%d", a);

一个倒序输出一个数组

#include <stdio.h>
void main(){
 int i, a[10];
 for (i=0; i<=9; i++){
     a[i] = i;
 }
 for (i=9; i>=0; i--){
     printf("%d ", a[i]);
 }
}
//  9 8 7 6 5 4 3 2 1 0
  • 一维数组的初始化

  1. 初始化一维数组: int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

    a[0] = 0, a[1] = 1......

  2. 可以只给一部分元素赋值:

    int a [10] = {0 ,1, 2, 3, 4, 5};

  3. int a[10] = 0 表示全部元素都是0

  4. 数组动态赋值的方法:

void main(){
    int i, max, a[10];  // 必须先给数组创建含有长度的内存
    printf("input 10 numbers:\n");
    for (i=0; i<10; i++){
        scanf("%d", &a[i]);
    }
    max = a[0];
    for (i=1; i<10; i++){
        if (a[i]>max){
            max = a[i];
        }
    }
    printf("maxnum=%d\n", max);
}

例题1. Fibonacci数列公式. 即: 1. 2. 3. 5. 8....... an = an-1 + an-2

// 过程: 先定义一个20个元素的数组. 并将数组的第一. 第二个元素都初始化成1. 其他元素初始化为0. 通过公式求出其他各元素的值.

#include <stdio.h>
void main(){
 int i;
 int a[20] = {1, 1};
 for (i=2; i<20; i++){
     a[i] = a[i-2] + a[i-1];
 }
 // 控制格式化输出
 for (i=0; i<20; i++){
     if (i % 5 == 0){
         print("\n");
     }
     printf("%12d", a[i]);
 }
}

例题2: 用冒泡法(起泡法)对10个数排序(从小到大)

#include <stdio.h>

void main(){
 int a[10];
 int i, j, t;
 printf("Please input 10 munbers:\n");
 for (i=0; i<10; i++){
		scanf("%d", &a[i]);
 }
 printf("\n")
 // 控制两层循环
 // n个数要进行n-1次比较
 for (j=0; j<9; j++){  // n-1次
     // 在第j次要进行n-j次两两比较
     for (i=0; i<9-j; i++){  // n-j次
         if (a[i] > a[i+1]){
             // 将a[i]和a[i+1]调换
			   t = a[i];
             a[i] = a[i+1];
             a[i+1] = t;
         }
     }
 }
}