C++学习(十六)(C语言部分)之 数组三
程序员文章站
2022-07-01 11:09:48
复习 以及 测试 ......
复习 以及 测试
1 /* 2 一维数组 3 数组是相同的数据的一个集合 4 <类型><数组名>[下标表达式]={数组元素 初始值}; 5 数组名和变量的命名规则是一样的 6 数组名是一个地址 7 数组下标都是从0开始 8 9 字符串 10 字符串数组后面会有\0 11 ""字符串 ''字符 12 \0是不会输出的 只要空间够 他就会自己加上 13 字符数组是不会自己添加 \0 需要手动添加 14 15 二维数组 16 在一位数组的基础上 加一个下标的维度 17 可以理解为数组的数组 18 19 20 21 */ 22 23 24 #include<stdio.h> 25 #include<stdlib.h> 26 #include<time.h> 27 int main() 28 { 29 //第一种表示方法 30 //int a, b, c, d, e, f, g; 31 //a = 1; 32 //b = 2; 33 //c = 3; 34 //d = 4; 35 //e = 5; 36 //f = 6; 37 //g = 7; 38 39 //第二种表示方法 40 //int Arr[7] = {1,2,3,4,5,6,7}; 41 //printf("%d\n",Arr[3]);//0~6 Arr[3] 会打印4 数组名是地址 42 //printf("%d\n",sizeof( Arr)); 43 //printf("%d\n", sizeof(Arr[0])); 44 45 //栗子 46 //int a[7] = { 1 };//是给数组的第一个元素进行初始化为1 其他的元素默认为0 47 //printf("%d\n",a[2]); 48 //0 1 2 3 4 5 6 数组元素下标与初始化的对应 49 //1 0 0 0 0 0 0 50 51 //栗子 52 //char Name[20] = "胖七";//字符串数组 53 //char Str1[5] = { 'H', 'E', 'L', 'L', 'O' };//后面没有\0 数组大小是5 里面的元素刚好也是5个 \0的位置没有了 所以会出现乱码 54 //char Str[20] = { 'H', 'E', 'L', 'L', 'O' };//后面有\0 55 // printf("名字:%s\n",Name); 56 //printf("Str:%s\n",Str1); 57 //printf("Str:%s\n", Str); 58 59 //栗子 60 //char str[] = "hello"; 61 //char str1[20] = { 1, 2, 3, 4, 5, 6 }; 62 //char str2[] = {'n','i','h','a'}; 63 //char str3[] = {"niha"}; 64 //printf("%d\n",sizeof(str)); //结果为6 原因是 定义数组是没有给大小 是根据数组元素个数来计算大小的 65 //printf("%d\n", sizeof(str1));//结果为20 定义的数组大小为20 66 //printf("%d\n", sizeof(str2));//结果为4 67 //printf("%d\n", sizeof(str3));//结果为5 比上一个是多了一个 \0 68 69 //栗子 70 //int arr[3][5] = {15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; 71 //int arr1[3][5] = { { 15, 14, 13, 12, 11 }, { 10, 9, 8, 7, 6 }, { 5, 4, 3, 2, 1 } }; 72 //printf("%d\n",arr[1]);//打印出的是元素14的首地址 73 //printf("%d\n",arr1[1][2]); 74 //printf("%d\n",sizeof(arr1)); 75 //printf("%d\n",sizeof(arr1[0])); 76 77 //栗子 二维数组赋值 78 //int arr[3][5] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }; 79 //arr[1][3] = 88;//可以将初始化的数组元素进行修改 将7改为88 80 //for (int i = 0; i < 3; ++i) 81 //{ 82 // for (int j = 0; j < 5; ++j)//后面不能加分号 83 // { 84 // printf("%d\t",arr[i][j]); 85 // } 86 // printf("\n"); 87 //} 88 89 ////栗子 随机赋值 用到随机数 rand();获取随机数的函数 90 ////连连看游戏 需求: 1.图片是随机出现的 2.出现的图片是成对的 91 //int arr[3][5] = {0}; 92 ////int a = rand();//获取随机数 93 ////int b=rand(); 94 ////printf("a:%d\n",a); 95 ////printf("a:%d\n",b); 96 //srand(time(NULL));//种下随机数种子 97 //for (int i = 0; i < 3; ++i) 98 //{ 99 // for (int j = 0; j < 5; ++j) 100 // { 101 // arr[i][j] = rand()%101; 102 // } 103 //} 104 //// 5%2 5/2=2....1 105 //for (int i = 0; i < 3; ++i) 106 //{ 107 // for (int j = 0; j < 5; ++j) 108 // { 109 // printf("%d\t",arr[i][j]); 110 // } 111 // printf("\n"); 112 //} 113 114 //栗子 写拼图的地图游戏 需求:1数据不能重复 115 int arr[10]; 116 int temp[10] = {1,2,3,4,5,6,7,8,9,10}; 117 int len = 10; 118 //随机给arr数组赋值 并且不可以重复 119 for (int i = 0; i < 10; ++i) 120 { 121 int m = rand() % len;//随机获取一个下标 122 arr[i] = temp[m]; 123 for (int j = m; j < len - 1; ++j) 124 { 125 temp[j] = temp[j + 1]; 126 } 127 len--; 128 } 129 //输出 130 for (int i = 0; i < 10; ++i) 131 { 132 printf("%d\t",arr[i]); 133 } 134 135 getchar(); 136 return 0; 137 }
2018-07-18 12:46:54