第六章 利用数组处理批量数据

简介: 第六章 利用数组处理批量数据

数组是一组有序数据的集合。用一个数组名和下标确定数组中的元素。数组中的每一个元素都属于同一个数据类型

例:对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9.要求按逆序输出

#include<stdio.h>
int main(){
    int i,a[10];
    for(i=0;i<=9;i++)
    a[i]=i;
    for(i=9;i>=0;i--)
    printf("%d\n",a[i]);
    printf("\n");
    return 0;
}

例:用数组处理Fibonacci数列问题

#include<stdio.h>
int main(){
    int i;
    int f[20]={1,1};
    for(i=2;i<20;i++)
    f[i]=f[i-2]+f[i-1];
    for(i=0;i<20;i++){
        if(i%5==0)printf("\n");
        printf("%12d",f[i]);    
    }
    printf("\n");
    return 0;
}

6.2.1 怎样定义二维数组

二维数组表示形式为:数组名[下标][下标]

例:输出一个已知的字符串

#include<stdio.h>
int main(){
    char c[15]={'I','','a','m','','a','','s','t','u','d','e','n','t','.'};
    int i;
    for(i=0;i<15;i++)
    printf("%c",c[i]);
    printf("\n");
    return 0;
}

例:输出一个菱形图

#include<stdio.h>
int main(){
    char lingxing[][5]={{'','','*},{'','*','','*'},{'*','','','','*'},{'','*','','*'},{'','','*}};
    int i,j;
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
        printf("%c",lingxing[i][j]);
        printf("\n");
}
return 0;

字符串:

puts函数:输出字符串的函数,一般形式为:puts,作用是将一个字符串输出到终端。

gets函数:输入字符串的函数,一般形式为:gets,作用是输入一个字符串到字符数组。

strcpy:strcpy(字符数组1,字符串2),作用是将字符串2复制到字符数组1中去。

strcmp函数:字符串比较函数,一般形式为:strcmp(字符串1,字符串2),作用是比较字符串1和字符串2。

strlen函数:测字符串长度的函数,一般形式为:strlen(字符数组),函数的值为字符串中的实际长度。

(%A)具体格式如下:

%d

有符号十进制整数

%i

有符号十进制整数

%o

无符号八进制整数

%u

无符号十进制整数

%x

无符号十六进制数字

%X

无符号十六进制数字

%c

单个字符

%s

字符串

数组的赋值:

数组a[n]只赋值a[0]-a[n-1]项,a[n]系统不会填补为零

#include<stdio.h>
int main(){
    int a[2]={1,2};
    for(int i=0;i<2;i++){
        a[i]=i;    
    }
    printf("%d\n%d\n",a[0],a[1]);
    return 0;
}

指针变量的使用:

//声明一个指针变量,指向变量a的地址

int *pa;

//通过取地址符&,获取a的地址,赋值给指针变量

//通过间接寻址符,获取指针指向的内容

printf("%d",*pa)

多维数组的地址:

int num[2][2]={
    {1,2},{2,3}
}

多维数组的指针:

int num[5]={2,3,4,5,6};
int *p=nums;

函数参数为指针:

void swap(int *x,int *y);
void main(){
    int x=20,y=20;
    swap(&x,&y);
    printf("x=%d,y=%d",x,y);
}
void swap(int *x,in *y){
    int t;
    t=*x;
    *x=*y;
    *y=t;
}

数组倒置

void invert(int *a){
    int LEN=length(a);
    int b;
    for(int i=1;i<LEN;i++){
        for(int j=0;j<LEN-i;j++){
            b=a[j];
            a[j]=a[j+i];
            a[j+i]=b;        
        }    
    }
}

输出杨辉三角形前十行

#include<stdio.h>
int main(void){
    int a[10][10];
    int b=0;
    for(int i=0;i<10;i++){
        b++;
        for(int j=0;j<b;j++){
            if(j==0||j==b-1){
                a[i][j]=1;            
            }        
            else if(j>0&&j<b-1&&b>=3){
                a[i][j]=a[i-1][j]+a[i-1][j-1];            
            }
            printf("%5d",a[i][j]);
        }    
        printf("\n");
    }
    return 0;
}

重难点:

1.int *p中,*p和p的差别:*p是数值,p是地址。

2.*p++是地址会变化:取当前值,然后再移动地址。

(*p)++是数值会要变化:取当前值,然后再使数值增加1。

3.二级指针:

*p:一级指针:存放变量的地址。

**p:存放一级指针的地址。

4.数组名:数组名不可以自加,他是常量名。

函数名:表示该函数的入口地址。

字符串常量名:表示第一个字符的地址。


相关文章
|
5月前
|
存储 C语言
谭浩强 第六章利用数组处理批量数据
谭浩强 第六章利用数组处理批量数据
58 0
|
3月前
|
SQL 运维 分布式计算
DataWorks产品使用合集之ODPPS中如何使用SQL查询从表中获取值并将其赋值给临时变量以供后续使用
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
第6章 利用数组处理批量数据
第6章 利用数组处理批量数据
60 0
|
5月前
|
存储 分布式计算 分布式数据库
对给定的数据利用MapReduce编程实现数据的清洗和预处理,编程实现数据存储到HBase数据库,实现数据的增删改查操作接口
对给定的数据利用MapReduce编程实现数据的清洗和预处理,编程实现数据存储到HBase数据库,实现数据的增删改查操作接口
46 0
|
数据处理 Python
pandas数据处理高级系列001-如何用一行代码优雅的删除一行数据中不包含特定字符串的行
pandas数据处理高级系列001-如何用一行代码优雅的删除一行数据中不包含特定字符串的行
174 0
|
前端开发 JavaScript 数据库
(简易)测试数据构造平台: 14 (工具列表删除功能前端)
(简易)测试数据构造平台: 14 (工具列表删除功能前端)
(简易)测试数据构造平台: 14 (工具列表删除功能前端)
|
SQL 安全 JavaScript
(简易)测试数据构造平台: 15 (工具列表删除后端)
(简易)测试数据构造平台: 15 (工具列表删除后端)
(简易)测试数据构造平台: 15 (工具列表删除后端)
|
前端开发
(简易)测试数据构造平台: 19 (工具申请功能)
(简易)测试数据构造平台: 19 (工具申请功能)
(简易)测试数据构造平台: 19 (工具申请功能)
|
JSON JavaScript 数据格式
(简易)测试数据构造平台: 16 (工具列表新增)
(简易)测试数据构造平台: 16 (工具列表新增)
(简易)测试数据构造平台: 16 (工具列表新增)
|
JSON 前端开发 数据库
(简易)测试数据构造平台: 12 (工具列表后端开发实现)
(简易)测试数据构造平台: 12 (工具列表后端开发实现)
(简易)测试数据构造平台: 12 (工具列表后端开发实现)