C语言 04 数组

数组:相同数据类型的成员组成的一组数据。

数组是一种构造类型,相同数据类型组成的新数据类型。

一维数组的定义:

类型说明符  数组名[常量表达式]= {值 1, 值 2....};

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

int b[5] = { 0 };

int c[]={ 2, 4, 6, 8 };

char str[] = "iPhone5";

数组元素的访问 : 数组元素在数组中的序号,从 0 开始,

下标可以是常量,也可以是变量   a[0] ,a[i];

注意区别   定义数组 和 数组元素

int  a[10] ;

a[10] ;

1、定义一个具有20个元素的整型数组,每个元素的取值范围是

30-70之间,求数组元素的和。

int a[20] = {};

int sum = 0;

for (int i = 0; i<20; i++) {

int random= arc4random()%(70-30+1)+30;

a[i] = random;

sum=sum+a[i];

}

printf("sum:%d",sum);

3、?生成2个数组,每个数组都有10个元素,元素取值范围20-40 之间,数组对应元素相加,放到另外?一个数组中。

int a[10]={0};

int b[10]={0};

for (int i = 0; i < 10; i++) {

int r= arc4random()%(40-20+1)+20;

a[i]=r;

b[i]=r;

printf("a[%d]+b[%d]=%d \n",i,i,a[i]+b[i]);

}

注意:系统不会检测 数组元素的下标是否越界,编程时,必须保证数组下标不能越界。

数组是一个整体,不能直接参加运算,只能对单个元素进行处理,通常用到数组的地方都会用到循环。

数租排序

冒泡排序是比较常见的排序算法;

冒泡排序涉及到双循环,外层循环控制趟数,内层循环控制比较次数;

//1、随机产?生10个[20,40]数,并对10个数从?小到?大排序。

int a[10]={0};

for (int i=0; i<10; i++) {

int r=arc4random()%(40-20+1)+20;

a[i]=r;

}

for (int i=0; i<9; i++) {

for (int j = 0; j< 9; j++) {

if (a[j]>a[j+1]) {

int temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

for (int i = 0;  i<10; i++) {

printf("%d ",a[i]);

}

字符数组

用于存放字符变量的数组,属于一维数组,定义方式与普通一维数组相似,只是类型是  char

字符数组的定义:

char c[10] = {‘i‘, ‘p‘, ‘h‘, ‘o‘, ‘n‘, ‘e‘};   或者 char c[10]="iphone";

有‘\0‘结束标识的字符数组也称为字符串 。

系统提供了很多字符串处理函数

strlen() 计算字符串长度

strcpy() 字符串拷贝

strcat() 字符串拼接

strcmp() 字符串比较

//查找字符串中的空格数:

//例如:“I love iOS, i want an iPhone5s” 6个空格

int c= 0;

char a[]="I love iOS, i want an iPhone5s";

for ( int i = 0; i < strlen(a); i++) {

if (a[i]==‘ ‘) {

c=c+1;

}

}

printf("%d ",c);

//将字符串倒转:

//例如:“afjnpue” 转变成字符串“eupnjfa”

  //(注:是改变字符串本?身,不是反向输出)

char a[]="afhnpue";


int number=strlen(a);


for (int i = 0; i < number/2; i++) {  //前面的数和最后的数交换


char temp = a[i];


a[i]=a[number-1-i];


a[number-1-i]=temp;

    }
    printf("%s",a);

注意: 字符串所占的空间 至少要比字符串长度大1,因为字符串以‘\0‘表示结束。 系统提高的字符串处理函数都是根据‘\0‘ 来判断字符串是否结束char str[]={‘o‘,‘k‘};char str[]="ok";
时间: 2024-12-20 17:14:51

C语言 04 数组的相关文章

13-黑马程序员------C 语言学习笔记--- C语言一维数组

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 四 简单构造数据类型 一 一维数组 01 一维数组的定义: 类型标识符 数组名[常量表达式]; 如:int a[10];其表示定义了一个名为a的整型数组,该数组共有10个元素,即10个整型变量,可以储存10个整型数据. 02 类

C语言关于数组与指针内容小结

数组的基本概念 什么是数组:数组就是:数组是相同类型的元素的一个集合       类型说明符 数组名 [常量表达式]: 其中,类型说明符是任一种基本数据类型或构造数据类型.数组名是用户定义的数组标识符.方括号中的常量表达式表示数据元素的个数,也称为数组的长度.例如: int a[10]; /* 说明整型数组a,有10个元素 */ float b[10], c[20]; /* 说明实型数组b,有10个元素,实型数组c,有20个元素 */ char ch[20]; /* 说明字符数组ch,有20个元

C语言——字符数组

在C语言编程中,我们一般用一个字符数组来存放一个字符串.例如,我们想存储这个字符串“http://i.cnblogs.com”,这个字符串一共有20个字符,要存放下这个字符串,我们需要一个长度为21的字符数组.为什么是21个而不是20个呢?在C语言中,字符串数组默认以'\0'结尾,所以我们一共需要一个长度为21的字符数组来存储这个变量. unsigned char text[21] = “http://i.cnblogs.com”; 既然我们已经知道了如何存放一个字符串,那下面我们来讨论另外几个

C语言之数组名的含义

一:一维数组 int a[5]; a:就是数组名.a做左值时表示整个数组的所有空间(10×4=40字节),又因为C语言规定数组操作时要独立单个操作,不能整体操作数组,所以a不能做左值:a做右值表示数组首元素(数组的第0个元素,也就是a[0])的首地址(首地址就是起始地址,就是4个字节中最开始第一个字节的地址).a做右值等同于&a[0]; a[0]:表示数组的首元素,也就是数组的第0个元素.做左值时表示数组第0个元素对应的内存空间(连续4字节):做右值时表示数组第0个元素的值(也就是数组第0个元素

【Go语言】【6】GO语言的数组

在<[4]GO语言类型和为类型增加方法>里说过GO语言除了基础类型(如int.float64.complex128等)之外,还有复合类型,其中就包含本文的数组.对于数组大家都不陌生,在C语言中可以这样声明一个一维数组:int arr[10],那么GO语言是怎么定义的呢? 一.数组的声明 1.数组的声明格式为var arrName [num]type,比如: var strArr [10]string     // 声明一个由10个字符串组成的一维字符串数组 var byteArr [32]by

C语言去除数组中重复的字符简单例子

#include <stdio.h> int main(void){ int a[10]={1,2,3,3,4,5,1,3,5,6}; int i,j; int zieo=0; for(i=0;i<10;i++) for(j=i+1;j<10;j++) { if(a[i]==a[j]) { a[j]=0; } } for(i=0;i<10;i++) { if(a[i]!=zieo) { printf("%d\t",a[i]); } } printf(&qu

线性表之顺序存储结构(C语言动态数组实现)

线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链式存储结构:是用一段一段连续的内存空间存储表中每一行的数据,段与段之间通过一个引用(指针)相互连接来,形成一个链式的存储结构 看到顺序存储结构的图示,我们可能会马上联想到C语言的数组.是的,数组就是一种典型的顺序存储数据结构.下面我通过一个实例,来实现对顺序存储结构中的数据增.删.改.查的操作. 首

java、C语言实现数组模拟栈

java: public class ArrayStack { private int[] data; private int top; private int size; public ArrayStack(int size) { this.data = new int[size]; this.size = size; this.top = -1; } public boolean isEmpty() { if (this.top == -1) { return true; } return

C语言之数组中你所不在意的重要知识

#include<stdio.h> void simpleArray(); void main() { simpleArray(); } //数组的简单操作 void simpleArray() { //数组的声明并赋值 int c[5] = { 1, 2, 3, 4, 5 }; printf("\nC数组内存中占%d个字节",sizeof(c));// /0在内存中会占一个字节,但是只针对于字符串 printf("\nC数组中有%d个元素",sizeo