#include <stdio.h> int main() { int arr[2][2] = { {1,2},{3,4} };//全体元素都赋值 int i, j; for (i = 0; i < 2; i++) { for (j = 0; j < 2; j++) { if (j% 2 == 0) printf("\n"); printf("%5d", arr[i][j]); } } return 0; } //转置数组的练习 int main() { int arr1 [2] [3] = { {1,2,3},{4,5,6} }; int arr2[3][2]; int i, j; printf("arr1:\n"); for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) { if (j % 3 == 0) printf("\n"); printf("%7d", arr1[i][j]); arr2[j][i] = arr1[i][j]; } } printf("\n"); printf("arr2(转置后):\n"); for (i = 0; i < 3; i++) { for (j = 0; j < 2; j++) { if (j % 2 == 0) printf("\n"); printf("%7d", arr2[i][j]); } } return 0; } //利用擂台算法来找出数组中最大值,并给出其row,column; int main() { int arr[4][5] = { {12,23,31,26,11},{10,11,56,67,79} ,{64,65,98,90,35 },{10,20,30,40,50} }; int i, j,row,column; int max; max = arr[0][0];//定义一个最大值,并使数组第一个元素为擂主 for (i = 0; i < 4; i++) { for (j = 0; j < 5; j++) { if (arr[i][j] > max) { max = arr[i][j]; row = i; column = j; } } } printf("max=%d\nrow=%d\ncolumn=%d\n" ,max,row,column); return 0; } //练习使用字符数组 #include <stdio.h> int main() { char ch[3][3] = { {' ','*',' '},{'*',' ','*'},{' ','*',' '} }; int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf("%c", ch[i][j]); } printf("\n");//循环一次,换行一次 } return 0; } #include <stdio.h> int main() { printf("love\0you");//字符串的结束标志为\0,这个程序的只会输出love;对于一般情况下,系统会自动在字符串末尾添加\0,作为结束标志; return 0; } //字符数组的输入与输出 #include <stdio.h> #include <string.h> int main() { char ch[100]; fgets(ch, 99, stdin); printf("%s", ch); return 0; } #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> int main() { strcat(str1, str2);//表示将字符串2连接到字符串1; char str1[] = "i and"; char str2 [] = "you"; printf("%s", strcat_s(str1, str2)); return 0; } #define _CRT_SECURE_NO_WARNINGS 1 //实现0—9的逆序输出 #include <stdio.h> int main() { int arr[10]; int i; for (i = 0; i <= 9; i++)//先把0-9这十个数字存到数组中; { arr[i] = i; } for (i = 9; i >= 0; i--) { printf("%d ", arr[i]); } return 0; } //解决数组中与斐波那契数列有关的问题 //输出数列中前25号元素,并每行5个数字打印出来 #include <stdio.h> int main() { int arr[25] = { 1,1 };//将前25号元素存到数组中 int i; for (i = 2; i <= 24; i++) { arr[i] = arr[i - 1] + arr[i - 2];//利用数列性质 } for (i = 0; i <= 24; i++) //存储完毕,接下来按要求输出 { if (i % 5 == 0) printf("\n"); //利用if语句实现换行printf("\n")系统会自动换行 printf("%12d ", arr[i]); } return 0; } #define _CRT_SECURE_NO_WARNINGS 1 //利用折半查找法判断用户输入的数字是否在数组1-10; #include <stdio.h> int main() { int k = 10; int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int sz = sizeof(arr) / sizeof(arr[0]); int left = 0; int right = sz - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] < k) { left = mid + 1; } else if (arr[mid] > k) { right = mid - 1; } else; { printf("查到了,下标为:%d\n", mid); break; } } if (left > right) { printf("查无此数"); } return 0; } #define _CRT_SECURE_NO_WARNINGS 1 //练习使用冒泡排序法,输入10个整数,最终使其升序排序。 //冒泡排序法就是两两比较,将较大的数字通过比较移动到后面,实现升序处理; #include <stdio.h> int main() { int arr[10]; int i, j, t; printf("请输入十个数字:\n"); for (i = 0; i <= 9; i++) { scanf("%d", &arr[i]);//将输入的十个数字存到数组中; } for (j = 0; j < 9; j++)//十个数字,第一趟需要比较九次,第二趟需要比较八次;以此类推 { for (i = 0; i < 9 - j; i++) { if (arr[i] > arr[i + 1]) //接下来进行比较 { t = arr[i + 1]; arr[i + 1] = arr[i]; arr[i] = t; }//交换前后两个数字顺序 } } for (i = 0; i < 10; i++) { printf("%d ", arr[i]); } printf("\n");//一定要注意循环{}的对应 return 0; } #define _CRT_SECURE_NO_WARNINGS 1 //利用折半查找法判断用户输入的数字是否在数组1-10; #include <stdio.h> int main() { int k; int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int sz = sizeof(arr) / sizeof(arr[0]); printf("请输入一个数字: "); scanf("%d", &k); int left = 0; int right = sz - 1; while (left <= right) { int mid = (left + right) / 2; if (arr[mid] < k) { left = mid + 1; } else if (arr[mid] > k) { right = mid - 1; } else { printf("查到了,下标为:%d\n", mid); break; } } if (left > right) { printf("查无此数"); } return 0; }