上期回顾:
三大循环 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;
举个栗子
第31行是直接在定义的时候就赋值
第33-37行是在定义之后再进行赋值
上图是用循环对数组进行赋值
手动输入数组的值
数组名[下标] //其中一个元素 下标可以是变量
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" 双引号 字符串 中文 "你好世界"
字符串用 ' ' 作为字符串结尾 一般是默认加上的 看不见
----->字符串一般用字符数组存放
举个栗子
输入时 不能有制表符
ascii----->char 数字---->字符
中文--->两个字符---->对应一个汉字
没赋值 都是无效值---->乱码
//一个中文占两个字节
//赋默认值0 在定义的时候初始化才会赋值0
//0-7 8' ' 字符串结尾 后面的值 无效值
//断点 --->添加监视
#include<string.h>//用于字符串的操作的函数
求数组大小 sizeof
获取数组 gets(数组名称)
输出字符串 puts(数组名称)
求字符串长度 strlen()
比较两字符串 strcmp(字符串1,字符串2); 字符串不能用等号比较
字符串拷贝函数 strcpy(字符串1,字符串2);第二个字符串拷贝到第一个位置 覆盖原来的内容
字符串连接函数 strcat(字符串1,字符串2);
栗子
测试代码如下:
1 /* 2 上期回顾: 3 三大循环 for while do while (循环体至少会执行一次) 4 四大跳转 goto continue(提前跳出当前循环 进入下一个循环) break(跳出本次循环) return(跳出当前函数) 5 exit(在任意地方跳出程序) 6 7 8 数组: 9 ---->作用 同时定义多个相同类型的数据 必须是整型 不能是小数个 必须是常量 10 int arr[4]; //定义4个int 定义一个数组 arr是数组名 11 12 [] 下标运算符 13 定义格式 类型 数组名[数组大小];//定义数组的格式 14 赋初值: 15 定义的时候赋值 {} int arr[4]={1,2,3,4};//赋的值少于元素个数 多余的元素默认用0赋值 16 定义之后再赋值 arr[0]=1; 17 18 数组名[下标] //其中一个元素 下标可以是变量 19 int arr[4];//下标从0开始 0-3(下标不超过这个范围都可以) 20 21 错误的写法: 22 int arr[4]; 23 arr[4]={1,23,4}; 24 25 int arr[]={1,2,3,4,5};//这种定义是正确的 可以给初值 不给大小 26 27 arr--->数组名 街道 28 [下标]---> 门牌号 29 30 注意:定义的时候数组大小不能是变量 必须是整型 31 32 数组大小 --->数组能存放多少个元素 定义数组的时候给定大小 33 数组下标 --->元素的下标 从0开始 使用数组中元素的时候使用 34 35 int crr[10000000];//会报错 数组太大 栈溢出 36 37 38 字符数组 39 格式: 40 char str[10];//字符数组 41 特殊用法 字符串 "1234" 双引号 字符串 中文 "你好世界" 42 字符串用 ' ' 作为字符串结尾 一般是默认加上的 看不见 43 44 ----->字符串一般用字符数组存放 45 46 ascii----->char 数字---->字符 47 中文--->两个字符---->对应一个汉字 48 没赋值 都是无效值---->乱码 49 50 求数组大小 sizeof 51 获取数组 gets(数组名称) 52 输出字符串 puts(数组名称) 53 求字符串长度 strlen() 54 比较两字符串 strcmp(字符串1,字符串2); 字符串不能用等号比较 55 字符串拷贝函数 strcpy(字符串1,字符串2); 56 字符串连接函数 strcat(字符串1,字符串2); 57 58 59 */ 60 61 62 #include<stdio.h> 63 #include<stdlib.h> 64 #include<string.h>//用于字符串的操作的函数 65 //mciSendString(mystring, 0, 0, 0); 66 #include<windows.h>//graphics.h 67 #include<mmsystem.h> 68 #pragma comment(lib,"winmm.lib") 69 int main() 70 { 71 #if 0 72 //举个栗子 73 int arr[4];//= {1,2,3,4};//arr是数组名字 可以随意取 赋值时元素用逗号隔开 74 75 //printf("%d",arr[3]); 76 //arr[0] = 1; 77 //arr[1] = 2; 78 //arr[2] = 3; 79 //arr[3] = 4;//数组下标规定是从0开始的不能大于元素个数 (越界) 80 81 for (int i = 0; i < 4; i++) 82 { 83 //arr[i] = i; 84 printf("请输入arr[%d]的值",i); 85 scanf_s("%d",&arr[i]); 86 printf("%d ",arr[i]); 87 } 88 89 #endif 90 #if 0 91 //输入输出 92 char arr[10]; 93 scanf("%s",arr);//特例 这种情况下scanf不需要取地址符 94 printf("%s",arr);//输出 95 //一个中文占两个字节 96 //赋默认值0 在定义的时候初始化才会赋值0 97 //0-7 8' ' 字符串结尾 后面的值 无效值 98 //断点 --->添加监视 99 100 #endif 101 #if 0 102 char arr[10] = "akdfnv"; 103 char mystring[80] = "play Debuggm.mp3 repeat"; 104 mciSendString(mystring, 0, 0, 0); 105 printf("字符串长度%d ",strlen(arr)); 106 #endif 107 #if 0 108 if (strcmp("hello", "world") == 0)//比较两个字符串是否一致 109 { 110 printf("字符串一致 "); 111 } 112 else 113 { 114 printf("字符串不一致 "); 115 } 116 #endif 117 #if 1 118 char arr[10] = { 'A', 'S', 'D', 'F', 'G' }; 119 strcpy(arr, "hello");//拷贝 第二个字符串拷贝到第一个位置 覆盖原来的内容 120 puts(arr); 121 #endif 122 123 124 system("pause"); 125 return 0; 126 }
2018-06-19 21:58:48