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

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

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

例:对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.数组名:数组名不可以自加,他是常量名。

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

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


相关文章
|
7月前
|
存储 C语言
谭浩强 第六章利用数组处理批量数据
谭浩强 第六章利用数组处理批量数据
78 0
|
1月前
|
存储 机器学习/深度学习 数据可视化
数据集中存在大量的重复值,会对后续的数据分析和处理产生什么影响?
数据集中存在大量重复值可能会对后续的数据分析和处理产生多方面的负面影响
107 56
|
6月前
|
算法 搜索推荐
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
54 0
|
7月前
2569. 更新数组后处理求和查询(模板 + 普通线段树熟练掌握)
2569. 更新数组后处理求和查询(模板 + 普通线段树熟练掌握)
|
数据采集 缓存 数据挖掘
GATK4标准分析流程 丨如何选择合适的线程和内存大小?数据预处理方法与注意事项
GATK4标准分析流程 丨如何选择合适的线程和内存大小?数据预处理方法与注意事项
|
程序员 Go 开发者
使用切片的区别分析|学习笔记
快速学习使用切片的区别分析。
120 0
使用切片的区别分析|学习笔记
|
算法 C++
数据结构上机实践第八周项目1- 建立顺序串的算法库
数据结构上机实践第八周项目1- 建立顺序串的算法库
173 0
数据结构上机实践第八周项目1- 建立顺序串的算法库
数据结构上机实践第七周项目1 - 自建算法库——顺序环形队列
数据结构上机实践第七周项目1 - 自建算法库——顺序环形队列
157 0
数据结构上机实践第七周项目1 - 自建算法库——顺序环形队列
|
SQL 数据采集 NoSQL
数据预处理-航线类型操作类型-读取规则到程序|学习笔记
快速学习数据预处理-航线类型操作类型-读取规则到程序
315 0
数据预处理-航线类型操作类型-读取规则到程序|学习笔记
|
数据采集 消息中间件 存储
数据预处理-航线类型操作类型目标与思路|学习笔记
快速学习数据预处理-航线类型操作类型目标与思路
131 0
数据预处理-航线类型操作类型目标与思路|学习笔记
下一篇
DataWorks