C语言——数组

1、构造数据类型:数组(只包含一种数据类型)、结构体(反之)

2、基本数据类型(字节数):int整型(2、4);unsigined int无符号基本整型(2、4);short短整型(2) ;unsigned short无符号短整型(2);long长整型(4);usigined无符号长整型(4);long long双长型(8);usigned long long无符号双长型(8);



一、数组(Array)的概念:

1、是一种线性表数据结构。

线性表:数据排成像一条线一样的结构(队列、栈、链表)。(相对立的概念是非线性表,比如:二叉树、堆、图等。

2、它用一组连续的内存空间,来存储一组具有相同类型的数据。



二、数组的定义与使用:

int a[10];//10个元素的整型数组

floaot score[50]; //50个元素的单精度实型数组

char string[30]; //30个元素的字符型整数

for(i=0;i<10;i++)
    scanf("%d",&a[i]);
//输入全部数组元素
for(i=0;i<10;i++)
    printf("%d“,a[i]);


1.一维数组:数字与字符

定义与引用:

int a[10];
float score[50];
char string[30];

//数组必须先定义,后使用
//只能逐个引用数组,不能一次引用整个数组
//数组元素表示形式:数组名【下标】
//其中:下标可以是常量或整型表达式

int a=2,b=4,data[10];

data[a+2}=data[b+1}=8;
data[5+3]=6;

2.一维数组的初始化:

实现方法:

在定义数组时,对数组元素赋初值。

下标:数组元素相对于数组起始地址的位移。

//数组元素全部赋0:
int a[5]={0,0,0,0,0,};
//或
int a[5]={0};
//或对整个数组元素赋初值时,可以不指定长度:
int a[]={1,2,3,4,5,6};
//编译系统根据初值个数确定数组大小

#include <stdio.h>

int main()
{
	int a[5]={1,2,3,4,5};
	printf("------------%d\n",a[2]);//输出元素的值 
	printf("=============%p",a[2]);//输出元素的地址 
	return 0;
} 

3.数组的使用中需要注意的问题:

(1)、数组下标不能为0、小数、负数。

Fibonacci实例

#include <stdio.h>

int main()
{
	int f[20] = {1,1};//定义一个一维数组一共20个数 
	int i;
	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]);
	}
	return 0;
} 

4.字符一维数组的初始化:

字符数组元素逐个赋值

char ch[]={'H','e','l','l','o'};

用字符串对字符数组赋值

char ch[]="hello";

输出方式:

for(i=0;i<5;i++)
    printf("%c",ch[i]);//输出指定字符串
//或者
    printf("%s",ch);//输出整个字符串

 5.字符一维数组的使用案例:

#include <stdio.h>

void main()
{
    char a[ ] = {'h','e','l','\0','l','o','\0'};//到\0就停止录入 
    printf("%s",a);
}

6.字符串数组的处理:

这里的需要在头文件中加入string.h

函数:

字符串输出函数puts(str)

功能:向显示器输出一个字符串(输出完,换行)

字符串输入函数gets(str)

功能:从键盘输入一个以回车结束的字符串放入字符数组中,并自动加入'\0'


puts,gets使用实例:

#include <stdio.h>
void main()
{
	char a1[]="china\nbeijing";
	char a2[]="china\0beijing";
	puts(a1);
	puts(a2);
	puts("wuhan");
}

输出

#include <stdio.h>
void main()
{
	char a1[15],a2[15];
	gets(a1);
	scanf("%s",a2);
	printf("a1=%s\n",a1);
	printf("a2=%s\n",a2);
}    

输出


String.h中的字符串连接函数strcat

格式:

strcat(字符数组1,字符数组2)

功能:

吧字符数组2连接到字符数组1后面

返值:返回字符数组1的首地址

说明:(1)字符数组1必须足够发大

           (2) 连接前,两字符串均以'\0'结束;

                     连接后,字符串1的’\0‘取消,新字符串后加上’\0‘

///             连接函数strcat
#include <stdio.h>
#include <String.h>

void main()
{
	char str1[30]={"people's Republic of"};
	char str2[]={"china"};
	printf("%s\n",strcat(str1,str2));
 } 


拷贝函数strcpy

格式:strcmp(字符串1,字符串2)

功能:比较两个字符,对两字符串从左向右逐个字符比较(ASCII码),直到遇到不同字符或'\0'为止。

返回值:返回int型整数。其值是ASCII码的差值

        a.若字符串1<字符串2,返回负整数

        b.若字符串1>字符串2,返回正整数

        c.若字符串1==字符串2,返回0

说明:字符串比较不能用“==”,必须用strcmp,虽然编译无措,但结果不对

 ///          比较函数
 #include <stdio.h>
 #include <String.h>
 void main()
 {
	int i,j,k;
	char a1[]="wuhan",a2[]="beijing";
	i=strcmp(a1,a2);
	j=strcmp("china","korea");
	k=strcmp(a2,"beijing");
	printf("i=%d\nj=%d\nk=%d\n",i,j,k);
	 
 }


字符串长度函数strlen

格式:

strlen(字符数组)


功能:

计算字符串长度

返回值:

返回字符串长度,但不包括'\0'在内

 ///           字符串长度函数strlen
 #include <stdio.h>
 #include <String.h>
 void main()
 {

	char s2[]="\t\v\\\0will\n";
	char s3[]="\x69\082\n";

	printf("s2长度为%d\n",strlen(s2));
	printf("s3长度为%d\n",strlen(s3));
	
	 
 }  

7.快排(选择法):

伪代码:

1.首先通过n-1次比较,从n个数中找出最小的,将它与第一个数交换——第一趟(选择排序),结果最小的数被安置在第一个元素的位置。

2.再通过n-2此比较,从剩余的n-1个书中找出关键字次小的记录,将它与第二个元素交换——第二趟(选择排序)

3.重复上述过程,一共经过n-1趟排序后,排序结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Quincy hhh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值