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

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

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

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

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

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


相关文章
|
Kubernetes Shell 容器
Kubernetes的kubectl命令补全
Kubernetes的kubectl命令补全
452 0
|
6月前
|
人工智能 编解码 算法
如何在Python下实现摄像头|屏幕|AI视觉算法数据的RTMP直播推送
本文详细讲解了在Python环境下使用大牛直播SDK实现RTMP推流的过程。从技术背景到代码实现,涵盖Python生态优势、AI视觉算法应用、RTMP稳定性及跨平台支持等内容。通过丰富功能如音频编码、视频编码、实时预览等,结合实际代码示例,为开发者提供完整指南。同时探讨C接口转换Python时的注意事项,包括数据类型映射、内存管理、回调函数等关键点。最终总结Python在RTMP推流与AI视觉算法结合中的重要性与前景,为行业应用带来便利与革新。
319 5
|
6月前
|
设计模式 机器学习/深度学习 前端开发
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。
|
11月前
|
JSON API 数据格式
postman如何发送json请求其中file字段是一个图片
postman如何发送json请求其中file字段是一个图片
383 4
|
10月前
|
存储 监控 安全
公司监控电脑:Tcl/Tk 用于构建监控系统的图形界面
本文介绍了如何使用 Tcl/Tk 构建公司电脑监控系统的图形界面。主要内容包括创建主窗口、显示监控信息的文本框以及绘制监控数据图表。通过这些代码示例,可以逐步构建一个功能完善的监控系统,为公司的信息安全和资源管理提供支持。
159 1
|
JavaScript
网页CAD(JS Vue 预览dwg)如何二次开发常用的CAD编辑功能
```markdown # CAD网页编程概览 - 使用mxcad库,实现CAD操作如删除、复制、镜像、移动和旋转。 - `erase()`方法删除实体,`clone()`配合`transformBy()`用于复制和编辑。 - `mirror()`和`transformBy(setMirror)`执行镜像操作,基于参考线。 - `move()`和`transformBy(setToTranslation)`实现移动功能。 - `rotate()`和`transformBy(setToRotation)`进行旋转,支持角度输入。 ```
网页CAD(JS Vue 预览dwg)如何二次开发常用的CAD编辑功能
|
定位技术 C++
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
|
12月前
Python3.x常用时间的处理方法 和urlopen处理post请求,传值data 原创
Python3.x常用时间的处理方法和urlopen处理post请求,传值data 原创
84 0
|
分布式计算 数据挖掘 调度
阿里云 MaxCompute 2023-5~8 月刊
【MaxCompute已发布免费试用计划,为数仓建设提速】新用户可0元领取5000CU*小时计算资源与100GB存储,有效期3个月。
688 2
阿里云 MaxCompute 2023-5~8 月刊