实验4
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 }

int类型数据在内存中连续存放,占用4个字节。(一维、二维数组)
char类型数据在内存中连续存放,占用1个字节。(一维、二维数组)
a[0]是第0个元素的值,&a[0]是第0个元素的地址。
1 #include <stdio.h> 2 #define N 2 3 #define M 4 4 5 int main() { 6 int a[N][M] = {{1, 9, 8, 4}, {2, 0, 2, 2}}; 7 char b[N][M] = {{'1', '9', '8', '4'}, {'2', '0', '2', '2'}}; 8 int i, j; 9 10 // 输出二维数组a中每个元素的地址和值 11 for (i = 0; i < N; ++i) 12 for (j = 0; j < M; ++j) 13 printf("%p: %d\n", &a[i][j], a[i][j]); 14 printf("\n"); 15 16 // 输出二维数组a中每个元素的地址和值 17 for (i = 0; i < N; ++i) 18 for (j = 0; j < M; ++j) 19 printf("%p: %c\n", &b[i][j], b[i][j]); 20 21 return 0; 22 }

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("%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 18 // 函数定义 19 // 补足函数days_of_year的定义 20 int days_of_year(int year, int month, int day) 21 { 22 int x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 23 int i,s=0; 24 for(i=1;i<month;i++) 25 s = s+x[i]; 26 if(year%4==0&&year%100!=0||year%400==0) 27 return s + day + 1; 28 else 29 return s + day; 30 }

#include <stdio.h> #define N 5 // 函数声明 void input(int x[], int n); void output(int x[], int n); double average(int x[], int n); void bubble_sort(int x[], int n); int main() { int scores[N]; double ave; printf("录入%d个分数:\n", N); input(scores, N); printf("\n输出课程分数: \n"); output(scores, N); printf("\n课程分数处理: 计算均分、排序...\n"); ave = average(scores, N); bubble_sort(scores, N); printf("\n输出课程均分: %.2f\n", ave); printf("\n输出课程分数(高->低):\n"); output(scores, N); return 0; } // 函数定义 // 输入n个整数保存到整型数组x中 void input(int x[], int n) { int i; for(i = 0; i < n; ++i) scanf("%d", &x[i]); } // 输出整型数组x中n个元素 void output(int x[], int n) { int i; for(i = 0; i < n; ++i) printf("%d ", x[i]); printf("\n"); } // 计算整型数组x中n个元素均值,并返回 // 补足函数average()实现 double average(int x[], int n) { int i; double s=0; for(i=0;i<=n;i++) s = s+x[i]; return s/n; } // 对整型数组x中的n个元素降序排序 // 补足函数bubble_sort()实现 void bubble_sort(int x[], int n) { int i,j,t,p; t = n; for(i=1;i<n;i++) for(j=0;j<t-1;j++) if(x[j]<x[j+1]) { p = x[j+1]; x[j+1] = x[j]; x[j] = p; } t--; }

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 20 // 函数定义 21 // 功能: 把十进制数x转换成n进制,打印输出 22 // 补足函数实现 23 void dec2n(int x, int n) 24 { 25 char my[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 26 char out[N]; 27 int i,j; 28 29 for(i=0;x>0;i++) 30 { 31 out[i] = my[x%n]; 32 33 x = x/n; 34 } 35 for(j = i-1;j>=0;j--) 36 printf("%c",out[j]); 37 printf("\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("%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 // 函数定义 37 // 功能:生成n行n列的左上拐矩阵,保存在两维数组x中 38 // 补足函数实现 39 void func(int x[][N], int n) 40 { 41 int i,j; 42 for(i=0;i<n;i++) 43 for(j=0;j<n;j++) 44 { 45 if(i<=j) 46 x[i][j] = i+1; 47 else 48 x[i][j] = j+1; 49 } 50 }

1 #include <stdio.h> 2 #include <string.h> 3 4 #define N 80 5 6 int main() { 7 char views1[N] = "hey, C, I have not love u yet."; 8 char views2[N] = "hey, C, how can I love u?"; 9 char t[N]; 10 11 printf("交换前: \n"); 12 printf("views1: %s\n", views1); 13 printf("views2: %s\n", views2); 14 15 // 交换 16 strcpy(t, views1); 17 strcpy(views1, views2); 18 strcpy(views2, t); 19 20 printf("交换后: \n"); 21 printf("views1: %s\n", views1); 22 printf("views2: %s\n", views2); 23 24 return 0; 25 }

1 #include <stdio.h> 2 #include <string.h> 3 4 #define N 80 5 6 int main() { 7 char views[2][N] = {"hey, C, I have not love u yet.", 8 "hey, C, how can I love u?"}; 9 10 char t[N]; 11 12 printf("交换前: \n"); 13 printf("views1: %s\n", views[0]); 14 printf("views2: %s\n", views[1]); 15 16 // 交换 17 strcpy(t, views[0]); 18 strcpy(views[0], views[1]); 19 strcpy(views[1], t); 20 21 printf("交换后: \n"); 22 printf("views1: %s\n", views[0]); 23 printf("views2: %s\n", views[1]); 24 25 return 0; 26 }

1 #include <stdio.h> 2 #include <string.h> 3 4 #define N 5 5 #define M 20 6 7 void bubble_sort(char str[][M], int n); // 函数声明 8 9 int main() { 10 char name[][M] = {"Bob", "Bill", "Joseph", "Taylor", "George"}; 11 int i; 12 13 printf("输出初始名单:\n"); 14 for (i = 0; i < N; i++) 15 printf("%s\n", name[i]); 16 17 printf("\n排序中...\n"); 18 bubble_sort(name, N); // 函数调用 19 20 printf("\n按字典序输出名单:\n"); 21 for (i = 0; i < N; i++) 22 printf("%s\n", name[i]); 23 24 return 0; 25 } 26 27 // 函数定义 28 // 功能:使用冒泡排序算法对二维数组str中的n个字符串按字典序排序 29 // 补足函数bubble_sort()实现 30 void bubble_sort(char str[][M], int n) 31 { 32 int i,j,t = N-2; 33 char x[M]; 34 for(i=0;i<N-1;i++) 35 { 36 for(j=0;j<=t;j++) 37 38 if(strcmp(str[j],str[j+1])>0) 39 { 40 strcpy(x,str[j]); 41 strcpy(str[j],str[j+1]); 42 strcpy(str[j+1],x); 43 } 44 t--; 45 } 46 47 }

浙公网安备 33010602011771号