实验四
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #define N 4 4 int main() 5 { 6 int i; 7 int a[N] = { 1,9,8,4 }; 8 char b[N] = { '1','9','8','4' }; 9 printf("sizeof(int)=%d\n", sizeof(int)); 10 printf("sizeof(char)=%d\n", sizeof(char)); 11 printf("\n"); 12 for (i = 0; i < N; i++) 13 { 14 printf("&a[%d]=%p,a[%d]=%d\n", i, &a[i], i, a[i]); 15 } 16 printf("\n"); 17 for (i = 0; i < N; i++) 18 { 19 printf("&b[%d]=%p,b[%d]=%c\n",i, &b[i], i, b[i]); 20 } 21 printf("\n"); 22 printf("&a=%p\n", a); 23 printf("&b=%p\n", b); 24 return 0; 25 }
1、int型数组在内存中是按行连续存放的,每个元素占内存单元4个字节;
2、char同理,但每个元素只占1个字节;
3、数组名和他们所存第一个元素地址一样。
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #define N 2 4 #define M 4 5 int main() 6 { 7 int i,j; 8 int a[N][M] = { {1,9,8,4}, {2,0,2,2} }; 9 char b[N][M] = {{'1','9','8','4'}, {'2','0','2','2'}}; 10 for (i = 0; i < N; i++) 11 { 12 for(j=0;j<M;j++) 13 printf("%p %d\n",&a[i][j],a[i][j]); 14 } 15 printf("\n"); 16 for (i = 0; i < N; i++) 17 { 18 for(j=0;j<M;j++) 19 printf("%p %c\n", &b[i][j], b[i][j]); 20 } 21 printf("\n"); 22 printf("%p\n", a); 23 printf("%p\n", b); 24 return 0; 25 }
结论同上,二维数组仍是连续存放,int占四个字节,char占1个字节。
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<stdlib.h> 4 #define N 13 5 int sum(int year, int month, int day); 6 int main() 7 { 8 int day, month, year; 9 int s=0; 10 while (scanf("%d%d%d", &year, &month, &day) != EOF) 11 { 12 s = sum(year, month, day); 13 printf("%4d-%02d-%02d是这一年的第%d天.\n\n", year, month, day, s); 14 } 15 return 0; 16 } 17 int sum(int year, int month, int day) 18 { 19 int i,s=0; 20 int a[N] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; 21 for (i = 1; i < month; i++) 22 { 23 s += a[i]; 24 } 25 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) 26 s = s + day + 1; 27 else 28 s = s + day; 29 return s; 30 }
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<stdlib.h> 4 #define N 5 5 void input(int a[], int n); 6 void output(int a[], int n); 7 double average(int a[], int n); 8 void bubble_sort(int a[], int n); 9 int main() 10 { 11 int a[N]; 12 double avg; 13 printf("录入%d个分数:\n",N); 14 input(a, N); 15 printf("输出课程分数:\n"); 16 output(a, N); 17 printf("\n课程分数处理: 计算均分、排序...\n"); 18 avg = average(a, N); 19 bubble_sort(a, N); 20 printf("\n 输出课程均分:%.2lf", avg); 21 printf("\n输出课程分数(高->低):\n"); 22 output(a, N); 23 return 0; 24 } 25 void input(int a[], int n) 26 { 27 int i; 28 for (i = 0; i < n; i++) 29 scanf("%d", &a[i]); 30 } 31 void output(int a[], int n) 32 { 33 int i; 34 for (i = 0; i < n; i++) 35 { 36 printf("%d ", a[i]); 37 } 38 printf("\n"); 39 } 40 double average(int a[], int n) 41 { 42 double s=0.0; 43 int i; 44 for (i = 0; i < n; i++) 45 s += a[i]; 46 s = s / i; 47 return s; 48 } 49 void bubble_sort(int a[], int n) 50 { 51 int i, j,t; 52 for (i = 0; i < n-1; i++) 53 { 54 for (j = 0; j < n - 1 - i; j++) 55 { 56 if (a[j] < a[j + 1]) 57 { 58 t = a[j]; 59 a[j] = a[j + 1]; 60 a[j + 1] = t; 61 } 62 } 63 } 64 output(a, n); 65 }
1 #define _CRT_SECURE_NO_WARNINGS 2 #include<stdio.h> 3 #include<stdlib.h> 4 #define N 100 5 void dec2n(int x, int n); 6 int main() 7 { 8 int x; 9 printf("输入一个十进制整数:"); 10 while (scanf("%d", &x) != EOF) 11 { 12 dec2n(x, 2); 13 dec2n(x, 8); 14 dec2n(x, 16); 15 printf("输入一个十进制整数:"); 16 } 17 return 0; 18 } 19 void dec2n(int x, int n) 20 { 21 char a[N],i=0,t; 22 char b[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 23 do 24 { 25 t=x % n; 26 x = x / n; 27 a[i++] = b[t]; 28 } while (x != 0); 29 30 for (i--; i >= 0; i--) 31 { 32 printf("%c", a[i]); 33 } 34 printf("\n"); 35 36 }
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #define N 100 void func(int x[][N], int n); void output(int a[][N], int n); int main() { int a[N][N]; int n; printf("Enter n: "); while (scanf("%d", &n) != EOF) { printf("\n"); func(a, n); output(a, n); printf("\n"); printf("Enter n: "); } return 0; } void func(int x[][N], int n) { int i, j; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (i <= j) x[i][j] = i + 1; else x[i][j] = j + 1; } } } void output(int a[][N], int n) { int i, j; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%d ",a[i][j]); } printf("\n\n"); } }
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #define N 80 int main() { char views1[N]= "hey, C, I have not love u yet."; char views2[N] = "hey, C, how can I love u?"; char t[N]; printf("交换前: \n"); printf("\n"); printf("views1: %s\n", views1); printf("views2: %s\n", views2); strcpy(t, views2); strcpy(views2, views1); strcpy(views1, t); printf("\n"); printf("交换后: \n"); printf("views1: %s\n", views1); printf("views2: %s\n", views2); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #define N 80 int main() { char views1[2][N] = { "hey, C, I have not love u yet.","hey, C, how can I love u?" }; char t[N]; printf("交换前: \n"); printf("\n"); printf("views1: %s\n", views1[0]); printf("views1: %s\n", views1[1]); printf("交换后: \n"); strcpy(t, views1[1]); strcpy(views1[1], views1[0]); strcpy(views1[0], t); printf("\n"); printf("views1: %s\n", views1[0]); printf("views1: %s\n", views1[1]); return 0; }
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #define N 5 #define M 20 void bubble_sort(char str[][M], int n); int main() { char name[][M] = { "Bob", "Bill", "Joseph", "Taylor", "George" }; int i; printf("输出初始名单:\n"); for (i = 0; i < N; i++) printf("%s\n", name[i]); printf("\n排序中...\n"); bubble_sort(name, N); printf("\n按字典序输出名单:\n"); for (i = 0; i < N; i++) printf("%s\n", name[i]); return 0; } void bubble_sort(char str[][M], int n) { int i, j; char t[M]; for (i = 0; i < n-1; i++) { for (j = 0; j < n-1-i; j++) { if (strcmp(str[j], str[j + 1]) > 0) { strcpy(t, str[j]); strcpy(str[j], str[j + 1]); strcpy(str[j + 1], t); } } } }