C语言复习3(2018.11.15)

一维数组的定义
一维数组是指数组中的每个元素只带有一个下标的数组。
定义方式为:类型说明符 数组名[常量表达式];
一维数组元素的引用
数组元素的引用形式为:数组名[下标表达式];
①一个数组元素实际上是一个变量名,代表内存中的一个存储单元,一个数组占据的是一连串连续的存储单元。
②引用数组元素时,数组的下标可以是整型常量,也可以是整型表达式。
③数组必须先定义后使用。
④只能逐个引用数组元素而不能一次引用整个数组。
一维数组的初始化
当数组定义后,系统会为该数组在内存中开辟一串连续的存储单元,但这些存储单元中并没有确定的值。可以在定义数组时为所包含的数组元素赋初值。例如:int a[6]={0,1,2,3,4,5};
①所赋初值放在一对花括号中,数值类型必须与所说明类型一致。
②所赋初值之间用逗号隔开,系统将按这些数值的排列顺序,从a[0]元素开始依次给数组a中的元素赋初值。
③不能跳过前面的元素给后面的元素赋初值,但是允许为前面元素赋初值为0。
④当所赋初值个数少于所定义数组的元素个数时,将自动给后面的其他元素补初值0。
⑤可以通过赋初值来定义一维数组的大小,定义数组时的一对方括号中可以不指定数组的大小。

冒泡排序:

//冒泡排序法

#include <stdio.h>

int main()
{
    int a[10];
    int i,j,t;
    printf("输入10个数字:\n");
    for (i = 0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for (j = 0;j < 9 ;j++)
    {
        for(i = 0;i < 9;i++)
        {
            if(a[i]>a[i+1])
            {
                t = a[i];
                a[i] = a[i+1];
                a[i+1] = t;
            }
        }
    }
    printf("排序为:");
    for(i = 0;i < 10;i++)
    {
        printf("%d,",a[i]);
    }
    return 0;
}

二维数组
二维数组定义的一般形式为:
类型说明符 数组名 [常量表达式] [常量表达式]
eg:
int a[3][4]

二维数组的引用
赋值:a[3][4]=b[3][3]/2;

二维数组的初始化
eg:
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};

int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

可以部分赋初值
int a[3][4] = {{1},{5},{9}};

字符数组的定义
形式与前面介绍的数值数组相同。 例如: char c[10]; 由于字符型和整型通用,也可以定义为 int c[10]但这时每个数组元素占 2 个字节的内 存单元。 字符数组也可以是二维或多维数组。 例如: char c[5][10]; 即为二维字符数组。
字符数组也允许在定义时作初始化赋值。 例如: char c[10]={‘c’, ‘ ’, ‘p’, ‘r’, ‘o’, ‘g’, ‘r’, ‘a’,’m’};
eg:

int main()
{   
		int i,j;   
		char a[][5]={{'B','A','S','I','C',},{'d','B','A','S','E'}};   for(i=0;i<=1;i++)     
		{       
			for(j=0;j<=4;j++)           
			{
				printf("%c",a[i][j]);      
			} 
			printf("\n");     
		} 
		return 0;
}

字符串和字符串结束标志
在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。前面介绍 字符串常量时,已说明字符串总是以’\0’作为串的结束符。因此当把一个字符串存入一个数 组时,也把结束符’\0’存入数组,并以此作为该字符串是否结束的标志。有了’\0’标志后, 就不必再用字符数组的长度来判断字符串的长度了。
C语言允许用字符串的方式对数组作初始化赋值。
eg:
char c[]={‘c’, ’ ',‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’}; 可写为:char c[]={“C program”}; 或去掉{}写为:char c[]=“C program”;

字符数组的输入输出
在采用字符串方式后,字符数组的输入输出将变得简单方便。 除了上述用字符串赋初值的办法外,还可用 printf 函数和 scanf 函数一次性输出输入.
一个字符数组中的字符串,而不必使用循环语句逐个地输入输出每个字符。

int main() 
{   
	char c[]="BASIC\ndBASE";   
	printf("%s\n",c); 
	return 0;
} 

注意在本例的 printf 函数中,使用的格式字符串为“%s”,表示输出的是一个字符串。 而在输出表列中给出数组名则可。
不能写为: printf("%s",c[]);

字符串处理函数
应包含头文件 "string.h"

字符串输出函数 puts
格式: puts (字符数组名)
功能:把字符数组中的字符串输出到显示器。 即在屏幕上显示该字符串。

字符串输入函数 gets
格式: gets (字符数组名)
功能:从标准输入设备键盘上输入一个字符串。
本函数得到一个函数值,即为该字符数组的首地址。 可以看出当输入的字符串中含有空格时,输出仍为全部字符串。说明 gets 函数并不以 空格作为字符串输入结束的标志,而只以回车作为输入结束。这是与 scanf 函数不同的。

字符串连接函数 strcat
格式: strcat (字符数组名 1,字符数组名 2)
功能:把字符数组 2 中的字符串连接到字符数组 1 中字符串的后面,并删去字符串 1 后的串标志“\0”。
本函数返回值是字符数组 1 的首地址。本程序把初始化赋值的字符数组与动态赋值的字符串连接起来。要注意的是,字符数组 1 应定义足够的长度,否则不能全部装入被连接的字符串。

字符串拷贝函数 strcpy
格式: strcpy (字符数组名 1,字符数组名 2)
功能:把字符数组 2 中的字符串拷贝到字符数组 1 中。串结束标志“\0”也一同拷贝。 字符数名 2,也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。 本函数要求字符数组 1 应有足够的长度,否则不能全部装入所拷 贝的字符串。

字符串比较函数 strcmp
格式: strcmp(字符数组名 1,字符数组名 2)
功能:按照 ASCII 码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
字符串 1=字符串 2,返回值=0;
字符串 2〉字符串 2,返回值〉0;
字符串 1〈字符串 2,返回值〈0。
本函数也可用于比较两个字符串常量,或比较数组和字符串常量。

#include"string.h" 
int main() 
{ 
	int k;   
	static char st1[15],st2[]="C Language";   
	printf("input a string:\n");   
	gets(st1);  
	k=strcmp(st1,st2);   
	if(k==0) printf("st1=st2\n");   
	if(k>0) printf("st1>st2\n");   
	if(k<0) printf("st1<st2\n"); 
	return 0;
} 
 

本程序中把输入的字符串和数组 st2 中的串比较,比较结果返回到 k 中,根据 k 值再输 出结果提示串。当输入为 dbase 时,由 ASCII 码可知“dBASE”大于“C Language”故 k〉0, 输出结果“st1>st2”

测字符串长度函数 strlen
格式: strlen(字符数组名)
功能:测字符串的实际长度(不含字符串结束标志‘\0’) 并作为函数返回值

输入五个国家的名称按字母顺序排列输出。

int main() 
{     
	char st[20],cs[5][20];     
	int i,j,p;     
	printf("input country's name:\n");     
	for(i=0;i<5;i++)       
	gets(cs[i]);     
	printf("\n");     
	for(i=0;i<5;i++)       
	{ 
		p=i;strcpy(st,cs[i]);  
		for(j=i+1;j<5;j++)       
		if(strcmp(cs[j],st)<0) 
		{
			p=j;strcpy(st,cs[j]);}     
			if(p!=i)       
			{ 
				strcpy(st,cs[i]);  
				strcpy(cs[i],cs[p]);  
				strcpy(cs[p],st);       
			}     
			puts(cs[i]);
		}
		printf("\n");
		return 0;
 } 

1.数组是程序设计中常用的数据结构。数组可分为数值数组(整数组,实数组),字符数组 以及后面将要介绍的指针数组,结构数组等。
2.数组可以是一维的,二维的或多维的。
3.数组类型说明由类型说明符、数组名、数组长度(数组元素个数)三部分组成。数组元素又 称为下标变量。 数组的类型是指下标变量取值的类型。
4.对数组的赋值可以用数组初始化赋值,输入函数动态赋值和赋值语句赋值三种方法实现。
对数值数组不能用赋值语句整体赋值、输入或输出,而必须用循环语句逐个对数组元素进行操作。

猜你喜欢

转载自blog.csdn.net/Rayyyyyyy/article/details/84072080