C++学习(十四)(C语言部分)之 数组

时间:2023-03-09 04:37:35
C++学习(十四)(C语言部分)之 数组

上期回顾:
三大循环 for while do while (循环体至少会执行一次)
四大跳转 goto continue(提前跳出当前循环 进入下一个循环) break(跳出本次循环) return(跳出当前函数)
exit(在任意地方跳出程序)

数组:
---->作用 同时定义多个相同类型的数据
int arr[4]; //定义4个int 定义一个数组 arr是数组名

[] 下标运算符
定义格式 类型 数组名[数组大小];//定义数组的格式
赋初值:
定义的时候赋值 {} int arr[4]={1,2,3,4};//赋的值少于元素个数 多余的元素默认用0赋值
定义之后再赋值 arr[0]=1;

举个栗子

C++学习(十四)(C语言部分)之 数组

C++学习(十四)(C语言部分)之 数组

第31行是直接在定义的时候就赋值

第33-37行是在定义之后再进行赋值

C++学习(十四)(C语言部分)之 数组

上图是用循环对数组进行赋值

手动输入数组的值

C++学习(十四)(C语言部分)之 数组

C++学习(十四)(C语言部分)之 数组

数组名[下标] //其中一个元素 下标可以是变量
int arr[4];//下标从0开始 0-3(下标不超过这个范围都可以)

错误的写法:
int arr[4];
arr[4]={1,23,4};

int arr[]={1,2,3,4,5};//这种定义是正确的 可以给初值 不给大小

arr--->数组名 街道
[下标]---> 门牌号

注意:定义的时候数组大小不能是变量 必须是整型

数组大小 --->数组能存放多少个元素 定义数组的时候给定大小
数组下标 --->元素的下标 从0开始 使用数组中元素的时候使用

int crr[10000000];//会报错 数组太大 栈溢出

字符数组
格式:
char str[10];//字符数组
特殊用法 字符串 "1234" 双引号 字符串 中文 "你好世界"
字符串用 '\0' 作为字符串结尾 一般是默认加上的 看不见

----->字符串一般用字符数组存放

举个栗子

C++学习(十四)(C语言部分)之 数组

C++学习(十四)(C语言部分)之 数组

输入时 不能有制表符

ascii----->char 数字---->字符
中文--->两个字符---->对应一个汉字
没赋值 都是无效值---->乱码

//一个中文占两个字节
//赋默认值0 在定义的时候初始化才会赋值0
//0-7 8'\0' 字符串结尾 后面的值 无效值
//断点 --->添加监视

#include<string.h>//用于字符串的操作的函数

求数组大小 sizeof
获取数组 gets(数组名称)
输出字符串 puts(数组名称)
求字符串长度 strlen()
比较两字符串 strcmp(字符串1,字符串2);  字符串不能用等号比较

字符串拷贝函数  strcpy(字符串1,字符串2);第二个字符串拷贝到第一个位置 覆盖原来的内容

字符串连接函数   strcat(字符串1,字符串2);

栗子

C++学习(十四)(C语言部分)之 数组

C++学习(十四)(C语言部分)之 数组

C++学习(十四)(C语言部分)之 数组

C++学习(十四)(C语言部分)之 数组

测试代码如下:

 /*
上期回顾:
三大循环 for while do while (循环体至少会执行一次)
四大跳转 goto continue(提前跳出当前循环 进入下一个循环) break(跳出本次循环) return(跳出当前函数)
exit(在任意地方跳出程序) 数组:
---->作用 同时定义多个相同类型的数据 必须是整型 不能是小数个 必须是常量
int arr[4]; //定义4个int 定义一个数组 arr是数组名 [] 下标运算符
定义格式 类型 数组名[数组大小];//定义数组的格式
赋初值:
定义的时候赋值 {} int arr[4]={1,2,3,4};//赋的值少于元素个数 多余的元素默认用0赋值
定义之后再赋值 arr[0]=1; 数组名[下标] //其中一个元素 下标可以是变量
int arr[4];//下标从0开始 0-3(下标不超过这个范围都可以) 错误的写法:
int arr[4];
arr[4]={1,23,4}; int arr[]={1,2,3,4,5};//这种定义是正确的 可以给初值 不给大小 arr--->数组名 街道
[下标]---> 门牌号 注意:定义的时候数组大小不能是变量 必须是整型 数组大小 --->数组能存放多少个元素 定义数组的时候给定大小
数组下标 --->元素的下标 从0开始 使用数组中元素的时候使用 int crr[10000000];//会报错 数组太大 栈溢出 字符数组
格式:
char str[10];//字符数组
特殊用法 字符串 "1234" 双引号 字符串 中文 "你好世界"
字符串用 '\0' 作为字符串结尾 一般是默认加上的 看不见 ----->字符串一般用字符数组存放 ascii----->char 数字---->字符
中文--->两个字符---->对应一个汉字
没赋值 都是无效值---->乱码 求数组大小 sizeof
获取数组 gets(数组名称)
输出字符串 puts(数组名称)
求字符串长度 strlen()
比较两字符串 strcmp(字符串1,字符串2); 字符串不能用等号比较
字符串拷贝函数 strcpy(字符串1,字符串2);
字符串连接函数 strcat(字符串1,字符串2); */ #include<stdio.h>
#include<stdlib.h>
#include<string.h>//用于字符串的操作的函数
//mciSendString(mystring, 0, 0, 0);
#include<windows.h>//graphics.h
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
int main()
{
#if 0
//举个栗子
int arr[];//= {1,2,3,4};//arr是数组名字 可以随意取 赋值时元素用逗号隔开 //printf("%d",arr[3]);
//arr[0] = 1;
//arr[1] = 2;
//arr[2] = 3;
//arr[3] = 4;//数组下标规定是从0开始的不能大于元素个数 (越界) for (int i = ; i < ; i++)
{
//arr[i] = i;
printf("请输入arr[%d]的值",i);
scanf_s("%d",&arr[i]);
printf("%d\t",arr[i]);
} #endif
#if 0
//输入输出
char arr[];
scanf("%s",arr);//特例 这种情况下scanf不需要取地址符
printf("%s",arr);//输出
//一个中文占两个字节
//赋默认值0 在定义的时候初始化才会赋值0
//0-7 8'\0' 字符串结尾 后面的值 无效值
//断点 --->添加监视 #endif
#if 0
char arr[] = "akdfnv";
char mystring[] = "play Debug\bgm.mp3 repeat";
mciSendString(mystring, , , );
printf("字符串长度%d\n",strlen(arr));
#endif
#if 0
if (strcmp("hello", "world") == )//比较两个字符串是否一致
{
printf("字符串一致\n");
}
else
{
printf("字符串不一致\n");
}
#endif
#if 1
char arr[] = { 'A', 'S', 'D', 'F', 'G' };
strcpy(arr, "hello");//拷贝 第二个字符串拷贝到第一个位置 覆盖原来的内容
puts(arr);
#endif system("pause");
return ;
}

2018-06-19   21:58:48