c语言的数组练习
一维数组定义方式
- int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
- int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
- int arr[10] = { 1,2,3,4,5 }; // 初始化元素5个 其余全是0
- int arr[10] = { 1 };
复制代码 //初始化元素1个 其余全是0
- int main()
- {
- int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
- for (int i=0;i<10;i++) //i<10也可以写成 sizeof(arr)/sizeof(arr[0]));
- {
- printf("%d \n", arr[i]); //读取数组的每个元素
- }
- return EXIT_SUCCESS;
- }
复制代码
- int main()
- {
- int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
- arr[2]=arr[5];
- arr[5]=arr[3]*2; 两个可以给数组赋值操作
- printf("%p \n", arr);
- printf("%p \n", &arr);
- printf("%d \n", sizeof(arr)); //数组在内存空间和类型有关 int4字节 *元素个数
- printf("%d \n", sizeof(arr)/sizeof(arr[0]));
- return EXIT_SUCCESS;
- }
复制代码
十只小猪称体重
- #define SIZE 10
- int main()
- {
- int arr[SIZE];
- int max = 0;
- for (int i=0; i<SIZE;i++)
- {
- scanf("%d", &arr[i]); //根据输入的值
- }
- for (int i=0;i<SIZE;i++)
- {
- if (arr[i] > max); //判断那个小猪最重
- {
- max = arr[i];
- }
- }
- printf("%d \n", max);
- return EXIT_SUCCESS;
- }
复制代码
数组倒序
- int main()
- {
- int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
- int i = 0;
- int j = sizeof(arr) / sizeof(arr[0]) - 1;
- while (i < j)
- {
- int temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
- i++;
- j--;
- }
- for (int i=0;i<10;i++)
- {
- printf("%d ", arr[i]);
- }
- return EXIT_SUCCESS;
- }
复制代码
数组升序
- int arr[10] = { 7,2,3,5,4,8,1,6,9,10 }; //数组打乱利用冒泡排序进行有序的显示
- for (int i=0;i<10-1;i++) //外层控制行
- {
- for (int j = 0; j < 10 - 1 - i; j++) //内层控制列
- {
- if (arr[j]>arr[j+1]) //数组降序<
- {
- int temp = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = temp;
- }
- }
- }
- for (int i=0;i<10;i++)
- {
- printf("%d ", arr[i]);
- }
- return EXIT_SUCCESS;
复制代码
二维数组三种使用样式
- int arr[2][3] = { {1,2,3},{4,5,6}};
- int arr[][3]={ {1,2,3},{4,5,6}};
- int arr[2][3]=
- {
- {1,2,3},
- {4,5,6}
- };
- for (int i = 0; i < 2; i++)
- {
- for (int j = 0; j < 3; j++)
- {
- printf("%d ", arr[i][j]);
- }
- }
复制代码
printf("%p ", arr);
printf("%p ", arr[0]);
printf("%p ", &arr[0][0]); //取地址结果三个都是一样的
三维数组的使用 (四维 五维 好像还没有)
- int main()
- {
- int arr[2][3][4]= //int arr[][3][4] 2可以不输入
- {
- {
- {1,2,3,4},
- {2,3,4,5},
- {3,4,5,6}
- },
- {
- {4,5,6,7},
- {5,6,7,8},
- {6,7,8,9}
- }
- };
- for (int i=0;i<2;i++)
- {
- for (int j=0;j<3;j++)
- {
- for (int k=0;k<4;k++)
- {
- printf("%d \t", arr[i][j][k]);
- }
- printf("\n");
- }
- }
- printf("%d \n", sizeof(arr));
- printf("%d \n", sizeof(arr[0]));
- printf("%d \n", sizeof(arr[0][0]));
- printf("%d \n", sizeof(arr[0][0][0]));
- printf("层: %d \n", sizeof(arr) / sizeof(arr[0]));
- printf("行: %d \n", sizeof(arr[0]) / sizeof(arr[0][0]));
- printf("列: %d \n", sizeof(arr[0][0]) / sizeof(arr[0][0][0]));
- return EXIT_SUCCESS;
- }
复制代码
定义字符数组
char arr[5] = { 'h','e','l','l','o' }; //字符数组太麻烦了 还是字符串数组好些
for (int i=0;i<5;i++) //i<sizeof(arr)/sizeof(arr[0]));
{
printf("%c", arr);
}
字符串数组 遇到\0结束 数字小了 下标越界
char arr[20] = { 110,45,38,40,50 };
char arr[][30] = { "hello","world" };
char arr[]="hello"; //三种定义方法
char ch[10]; 必须保留\0占位符
scanf("%9s", ch); //9S 是限定输入9个字符 遇到空格结束
printf("%s", ch);
字符串的输入输出 这些可以对文件操作 先=练习到这 下回练习文件操作
gets 使用方式 char ch[10] gets(ch) 可以带空格接收字符串 scanf("[^ \n]",ch)这样写也可以接收空格
fgets 使用方式 char ch[10] fgets(ch,sizeof(ch),stdin); stdin 其中0就是stdin,表示输入流,指从键盘输入
puts 使用方式 char ch[] = "hello"; puts(ch); //自带换行
puts("hello"); 遇到\0结束 相当于printf(“hello”) puts("\n")
fputs 使用char ch[] = "hello"; fputs(ch, stdout); stdout 输出 stdin输入
strlen 使用方式char ch[] = "hello"; printf("%d",strlen(ch)); |