1、数组
1.1、数组及相关概念
- 为什么需要使用数组?
- 数组是一组有序的、类型相同的数据的集合,这些数据被称为数组的元素。
- 每个数组都有一个名字,我们称之为数组名。数组名代表数组的起始地址。
- 数组元素由索引或下标标识,索引或下标从0开始
- 一个包含 11 个元素的数组
1.2、定义数组
-
数组的特性必须在使用前定义
- 存储类型
- 数据类型
- 数组名
- 数组大小 -
数组定义的语法:
- 存储类型 数据类型 数组名[数组长度] ;
- 例如:int player[11];
- 数组名后接一个或多个括在方括号内的表达式,用以指定数组的维数
- 数组长度只能是常量和常量表达式(大于0)
1.3、数组的规范
- 所有数组元素具有相同的类型
- 允许使用变量的地方都可以使用数组元素
- 可以使用整型表达式引用数组的元素:
- 数组名[整型表达式]
1.4、一维数组的定义
一维数组在内存中的存放,地址是连续的!
一维数组: float mark[100];
1.5、初始化数组
- 自动数组中的元素需要分别初始化
- extern和static修饰的数组元素自动初始化为 0
- 数组初始化是在数组定义时给元素赋初值
- 初始化赋值的一般形式:
- 类型 数组名[常量表达式]={值,值…};
- 例如:int ary[10]={0,1,2,3,4,5,6,7,8,9}; - 初始化的几点规定:
- 元素之间用逗号隔开
- 可以只给部分元素赋值,剩余元素赋0值
- 给全部元素赋值时,可以不说明元素的个数
1.6、定义数组时初始化示例
1.7、定义数组后初始化示例
1.8、使用数组的注意事项
- C编译器不会检查下标的越界
- 即使两个数组的类型和大小相同,也不能检验其是否相等
- 不能直接将一个数组赋给另一个数组
- 不能为数组整体赋值
1.9、数组使用示例
#include <stdio.h>
void main()
{
int ary[10];
int i, total, high;
for ( i = 0; i < 10; i++) {
scanf("%d",&ary[i]);
}
high = ary[0];
for (i = 1; I < 10; i++) {
if (ary[i] > high)
high = ary[i];
}
for (i = 0,total = 0; i < 10; i++)
total += ary[i];
}
1.10、二维数组
- 最常用的多维数组-二维数组
- 可以看成是由两个一维数组组成的数组
- 类似于一个由行和列组成的表格
- 二维数组的声明方式:
- 类型说明符 数组名[常量表达式1][常量表达式1];
- 例如:int temp[4][3];
1.11、二维数组的定义
1.12、二维数组的初始化
1.13、二维数组的引用
1.14、数组示例
#include <stdio.h>
#include <conio.h>
#define MAX_ROW 2
#define MAX_COL 3
void main()
{ int i,j;
int a[MAX_ROW][MAX_COL] = {{1,2,3},{4,5,6}};
int b[MAX_COL][MAX_ROW];
printf("Source:\n");
for(i = 0;i < MAX_ROW;i++)
{
for(j = 0;j < MAX_COL;j++)
{
printf("%4d",a[i][j]);
}
putchar('\n');
}
}
2、字符串
2.1、字符串常量
2.2、字符数组和字符串
2.3、声明字符串变量
2.4、字符串变量的初始化
2.5、二维字符串变量的初始化
2.6、字符串变量的使用
2.7、字符串I/O操作
3、字符串函数
3.1、字符串输入函数gets()
3.2、字符串输出函数puts()
3.3、格式化输出到字符串sprintf()
3.4、sprintf()示例
#include <stdio.h>
int main(void)
{
char buffer[80];
int iNum=9;
sprintf(buffer, "iNum=%03d\n", iNum);
puts(buffer);
return 0;
}
3.5、strlen()函数
#include <stdio.h>
#include <string.h>
int main ()
{
char str[50];
int len;
strcpy(str, "This is runoob.com");
len = strlen(str);
printf("|%s| 的长度是 |%d|\n", str, len);
return(0);
}
3.6、strcpy()函数
#include<string.h>
#include <stdio.h>
void main()
{
char a[20], c[] = "I am a teacher!";
strcpy(a, c);
printf(" c=%s\n", c);
printf(" a=%s\n", a);
}
3.7、strcat()函数
#include <stdio.h>
#include <string.h>
int main ()
{
char src[50], dest[50];
strcpy(src, "This is source");
strcpy(dest, "This is destination");
strcat(dest, src);
printf("最终的目标字符串: |%s|", dest);
return(0);
}
3.8、strcmp()函数
3.9、strcmp()示例
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[15];
char str2[15];
int ret;
strcpy(str1, "abcdef");
strcpy(str2, "ABCDEF");
ret = strcmp(str1, str2);
if(ret < 0)
{
printf("str1 小于 str2");
}
else if(ret > 0)
{
printf("str1 大于 str2");
}
else
{
printf("str1 等于 str2");
}
return(0);
}
3.10、strchr()函数
3.11、strchr()示例
#include <string.h>
#include <stdio.h>
void main( void ){
char string[] = “The quick brown dog jumps over the lazy fox”;
char ch=‘r’, *pdest;
printf( "String to be searched: \n\t\t%s\n", string );
printf( "Search char:\t%c\n", ch );
pdest = strchr( string, ch );
if( pdest != NULL )
printf( "Result:\tfirst %c found at position %d\n\n", ch,
pdest - string );
else
printf( "Result:\t%c not found\n" );
}
3.12、strstr()函数
示例
#include <stdio.h>
#include <string.h>
int main()
{
const char haystack[20] = "RUNOOB";
const char needle[10] = "NOOB";
char *ret;
ret = strstr(haystack, needle);
printf("子字符串是: %s\n", ret);
return(0);
}
3.13、strlwr和strupr