实验1.1
#include<stdio.h> const int N=4; int main() { int a[N] = { 2,0,2,1 }; char b[N] = { '2','0','2','1' }; int i; printf("sizeof(int)=%d\n", sizeof(int)); printf("sizeof(char)=%d\n", sizeof(char)); printf("\n"); for (i = 0; i < N; i++) printf("%x:%d\n", &a[i], a[i]); for (i = 0; i < N; i++) printf("%x:%c\n", &b[i], b[i]); return 0; }
int型,char型都为连续存放,int型中每个元素占4个内存字节单元,char型占1个。
实验1.2
#include <stdio.h> int main() { int a[2][3] = { {1, 2, 3}, {4, 5, 6} }; char b[2][3] = { {'1', '2', '3'}, {'4', '5', '6'} }; int i, j; for(i=0;i<2;++i) for (j = 0; j < 3; ++j) printf("%x: %d\n", &a[i][j], a[i][j]); printf("\n"); for (i = 0; i < 2; ++i) for (j = 0; j < 3; ++j) printf("%x: %c\n", &b[i][j], b[i][j]); }
int型,char型二维都为连续存放。int型4个,char型1个。
实验2
#include<stdio.h> #define N 1000 int fun(int n, int m, int bb[N]) { int i, j, k = 0, flag; for (j = n; j <= m; j++) { flag = 1; for (i = 2; i < j; i++) if (j % i == 0) { flag = 0; break; } if(flag) bb[k++] = j; } return k; } int main() { int n = 0, m = 0, i, k, bb[N]; scanf("%d", &n); scanf("%d", &m); for (i = 0; i < m - n; i++) bb[i] = 0; k = fun(n,m,bb); for (i = 0; i < k; i++) printf("%4d", bb[i]); return 0; }
实验3
#include<stdio.h> const int N = 5; int find_max(int x[], int n); void input(int x[], int n); void output(int x[], int n); int main() { int a[N]; int max; input(a, N); output(a, N); max = find_max(a, N); printf("max= %d\n", max); return 0; } void input(int x[], int n) { int i; for (i = 0; i < n; i++) scanf("%d", &x[i]); } void output(int x[], int n) { int i; for (i = 0; i < n; i++) printf("%d ", x[i]); printf("\n"); } int find_max(int x[], int n) { int i = 0,j, t; for(j=0;j<N-1;j++) for (i = 0; i < N-j-1; i++) if (x[i] > x[i + 1]) { t = x[i]; x[i] = x[i + 1]; x[i + 1] = t; } return x[4]; }
实验4
#include<stdio.h> #include<math.h> void dec2n(int x, int n); int main() { int x; printf("输入一个十进制数:"); scanf("%d", &x); dec2n(x, 2); dec2n(x, 8); dec2n(x, 16); return 0; } void dec2n(int x, int n) { int a, b = 0, m[100]; int i = 0; while (x) { a = x % n; x = x / n; m[i] = a; i++; b++; } for (i = b; i >= 0; i--) { if (m[i] == 10)putchar('A'); else if (m[i] == 11)putchar('B'); else if (m[i] == 12)putchar('C'); else if (m[i] == 13)putchar('D'); else if (m[i] == 14)putchar('E'); else if (m[i] == 15)putchar('F'); else printf("%d", m[i]); } printf("\n"); }
实验5
#include<stdio.h> int main() { int n,i=1, j=1, k; while (scanf("%d", &n) != EOF) { for (i = 1; i <=n; i++) { for (j = 1; j <= n; j++) { k = i > j ? j : i; printf("%d ", k); } printf("\n"); } } return 0; }
#include<stdio.h> int main() { int a[100]; int b = 0,c=0, i = 0, n; while (scanf("%d", &n) != EOF) { for (i = 0; i < 100; i++) a[i] = 1; for (b = 0; b < n; b++) { for (i = 0; i < n; i++) printf("%2d", a[i]); printf("\n"); c++; for (i=c; i < n; i++) a[i] = a[i] + 1; } c = 0; } return 0; }