实验四
1 #include <stdio.h> 2 #define N 4 3 4 int main() { 5 int a[N] = {1, 9, 8, 4}; 6 char b[N] = {'1', '9', '8', '4'}; 7 int i; 8 9 printf("sizeof(int) = %d\n", sizeof(int)); 10 printf("sizeof(char) = %d\n", sizeof(char)); 11 printf("\n"); 12 13 // 输出数组a中每个元素的地址、值 14 for (i = 0; i < N; ++i) 15 printf("%p: %d\n", &a[i], a[i]); 16 printf("\n"); 17 18 // 输出数组b中每个元素的地址、值 19 for (i = 0; i < N; ++i) 20 printf("%p: %c\n", &b[i], b[i]); 21 printf("\n"); 22 23 // 输出数组名a和b对应的值 24 printf("a = %p\n", a); 25 printf("b = %p\n", b); 26 27 return 0; 28 }
1 #include <stdio.h> 2 #define N 2 3 #define M 4 4 int main() { 5 int a[N][M] = {{1, 9, 8, 4}, {2, 0, 2, 2}}; 6 char b[N][M] = {{'1', '9', '8', '4'}, {'2', '0', '2', '2'}}; 7 int i, j; 8 // 输出二维数组a中每个元素的地址和值 9 for (i = 0; i < N; ++i) 10 for (j = 0; j < M; ++j) 11 printf("%p: %d\n", &a[i][j], a[i][j]); 12 printf("\n"); 13 // 输出二维数组a中每个元素的地址和值 14 for (i = 0; i < N; ++i) 15 for (j = 0; j < M; ++j) 16 printf("%p: %c\n", &b[i][j], b[i][j]); 17 return 0; 18 }
1 #include <stdio.h> 2 #define N 13 3 4 int days_of_year(int year, int month, int day); 5 6 int main() { 7 int year, month, day; 8 int days; 9 10 while (scanf_s("%d%d%d", &year, &month, &day) != EOF) { 11 days = days_of_year(year, month, day); 12 printf("%4d-%02d-%02d是这一年的第%d天.\n\n", year, month, day, days); 13 } 14 15 return 0; 16 } 17 int days_of_year(int year, int month, int day) 18 { 19 int k=0,i,p; 20 int a[13] = { 0,31,1,31,30,31,30,31,31,30,31,30,31 }; 21 if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) 22 a[2] = 29; 23 else 24 a[2] = 28; 25 for (i = 0;i < month;i++) 26 { 27 k = k + a[i]; 28 p = k + day; 29 } 30 return p; 31 32 }
1 #include <stdio.h> 2 #define N 5 3 4 // 函数声明 5 void input(int x[], int n); 6 void output(int x[], int n); 7 double average(int x[], int n); 8 void bubble_sort(int x[], int n); 9 10 int main() { 11 int scores[N]; 12 double ave; 13 14 printf("录入%d个分数:\n", N); 15 input(scores, N); 16 17 printf("\n输出课程分数: \n"); 18 output(scores, N); 19 20 printf("\n课程分数处理: 计算均分、排序...\n"); 21 ave = average(scores, N); 22 bubble_sort(scores, N); 23 24 printf("\n输出课程均分: %.2f\n", ave); 25 printf("\n输出课程分数(高->低):\n"); 26 output(scores, N); 27 28 return 0; 29 } 30 31 // 函数定义 32 // 输入n个整数保存到整型数组x中 33 void input(int x[], int n) { 34 int i; 35 36 for(i = 0; i < n; ++i) 37 scanf("%d", &x[i]); 38 } 39 40 // 输出整型数组x中n个元素 41 void output(int x[], int n) { 42 int i; 43 44 for(i = 0; i < n; ++i) 45 printf("%d ", x[i]); 46 printf("\n"); 47 } 48 49 // 计算整型数组x中n个元素均值,并返回 50 // 补足函数average()实现 51 // ××× 52 double average(int x[], int n) 53 { 54 int i,k=0,p; 55 for(i=0;i<n;++i) 56 k=k+x[i]; 57 p=k/n; 58 return p; 59 60 } 61 62 // 对整型数组x中的n个元素降序排序 63 // 补足函数bubble_sort()实现 64 // ××× 65 void bubble_sort(int x[], int n) 66 { 67 int i,t; 68 for(i=0;i<n-1;i++) 69 { 70 for(int j=0;j<n-1-i;j++) 71 { 72 if(x[j]<x[j+1]) 73 { 74 t=x[j]; 75 x[j]=x[j+1]; 76 x[j+1]=t; 77 } 78 } 79 } 80 81 } 82
1 #include <stdio.h> 2 #define N 100 3 void dec2n(int x, int n); // 函数声明 4 5 int main() { 6 int x; 7 8 printf("输入一个十进制整数: "); 9 while (scanf("%d", &x) != EOF) { 10 dec2n(x, 2); // 函数调用: 把x转换成二进制输出 11 dec2n(x, 8); // 函数调用: 把x转换成八进制输出 12 dec2n(x, 16); // 函数调用: 把x转换成十六进制输出 13 14 printf("\n输入一个十进制整数: "); 15 } 16 17 return 0; 18 } 19 void dec2n(int x, int n) { 20 char a[N] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' }; 21 char b[N]; 22 int j = 0; 23 int i; 24 while (x != 0) 25 { 26 b[j++] = a[x % n]; 27 x = x / n; 28 } 29 for (i = j - 1; i >= 0; --i) 30 printf("%c", b[i]); 31 printf("\n"); 32 33 } 34 35 36 // 函数定义 37 // 功能: 把十进制数x转换成n进制,打印输出 38 // 补足函数实现 39 // ×××
1 #include <stdio.h> 2 #define N 100 3 4 // 函数声明 5 void func(int x[][N], int n); // 注意:两维数组作为形参的语法 6 void output(int x[][N], int n); // 注意:两维数组作为形参的语法 7 8 int main() { 9 int x[N][N]; 10 int i, j, n; 11 12 printf("Enter n: "); 13 while (scanf_s("%d", &n) != EOF) { 14 func(x, n); // 注意:两维数组作为实参的语法 15 output(x, n); // 注意:两维数组作为实参的语法 16 17 printf("\nEnter n: "); 18 } 19 20 return 0; 21 } 22 23 // 函数定义 24 // 功能:输出两维数组x中的数据,数据项n行、n列 25 void output(int x[][N], int n) { 26 int i, j; 27 28 for (i = 0; i < n; ++i) { 29 for (j = 0; j < n; ++j) 30 printf("%5d", x[i][j]); 31 32 printf("\n"); 33 } 34 } 35 36 void func(int x[][N], int n) { 37 { 38 int i, j; 39 for (i = 0; i < n; ++i) 40 for (j = 0; j < n; ++j) 41 x[i][j] = i + 1; 42 for (i = 0; i < n; ++i) 43 for (j = 0; j < n; ++j) 44 x[j][i] = x[i][j]; 45 } 46 47 } 48 // 函数定义 49 // 功能:生成n行n列的左上拐矩阵,保存在两维数组x中 50 // 补足函数实现 51 // ×××
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <string.h> 4 5 6 #define N 80 7 8 int main() { 9 char views1[N] = "hey, C, I have not love u yet."; 10 char views2[N] = "hey, C, how can I love u?"; 11 char t[N]; 12 13 printf("交换前: \n"); 14 printf("views1: %s\n", views1); 15 printf("views2: %s\n", views2); 16 17 // 交换 18 strcpy(t, views1); 19 strcpy(views1, views2); 20 strcpy(views2, t); 21 22 printf("交换后: \n"); 23 printf("views1: %s\n", views1); 24 printf("views2: %s\n", views2); 25 26 return 0; 27 }
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <string.h> 4 5 #define N 5 6 #define M 20 7 8 void bubble_sort(char str[][M], int n); // 函数声明 9 10 int main() { 11 char name[][M] = { "Bob", "Bill", "Joseph", "Taylor", "George" }; 12 int i; 13 14 printf("输出初始名单:\n"); 15 for (i = 0; i < N; i++) 16 printf("%s\n", name[i]); 17 18 printf("\n排序中...\n"); 19 bubble_sort(name, N); // 函数调用 20 21 printf("\n按字典序输出名单:\n"); 22 for (i = 0; i < N; i++) 23 printf("%s\n", name[i]); 24 25 return 0; 26 } 27 28 // 函数定义 29 // 功能:使用冒泡排序算法对二维数组str中的n个字符串按字典序排序 30 // 补足函数bubble_sort()实现 31 // ××× 32 void bubble_sort(char s[][M], int n) { 33 int i, j; 34 char x[100]; 35 for (i = 0; i < n - 1; ++i) 36 { 37 for (j = 0; j < n - i - 1; ++j) 38 { 39 if (strcmp(s[j], s[j + 1]) > 0) 40 { 41 strcpy(x, s[j]); 42 strcpy(s[j], s[j + 1]); 43 strcpy(s[j + 1], x); 44 } 45 } 46 47 } 48 49 }