【C语言基础(四)】数组和字符串

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.14、ctype.h中的字符函数

在这里插入图片描述

3.15、stdlib.h中的类型转换函数

在这里插入图片描述

3.16、补充:sprintf()应用

在这里插入图片描述

3.17、补充:sscanf()应用

在这里插入图片描述

  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值