TypechoJoeTheme

日志随记

统计
登录
用户名
密码

扫码登录
/
注册
用户名

此用户名将作为登录时所用的账号

邮箱

XG.孤梦

随风而动,随遇而安......

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

XG.孤梦博 主大佬
2022-02-03
/
0 评论
/
352 阅读
/
505 个字
/
百度已收录
02/03
本文最后更新于 2022年08月13日,已超过 113天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

数组

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

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

一维数组

  • 定义的一般形式

    • 类型符 数组名 [常量表达式];
    • 例如: 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]);
    }
}


一维数组的赋值

  • 给数组赋值的方法:

    • 赋值语句对数组元素逐个赋值;
    • 采用初始化赋值;
    • 动态赋值(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]);
}

将数组中各元素交换,将数组的第一个元素与最后一个交换,第二个元素与倒数第二个交换,以此类推。

#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]);
}

求一维数组中最大元素及其下标。

#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);

}

用数组处理求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]);
    }
}


练习

练习

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


答案
1、D   2、C   3、A  


学习笔记C语言
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

日志随记

本文链接:

https://www.xggm.top/archives/328.html(转载时请注明本文出处及文章链接)

评论 (0)
 

标签云

登录
X
用户名
密码