实验4
task1_1.cpp
#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]); printf("\n"); for (i = 0; i < N; ++i) printf("%x: %c\n", &b[i], b[i]); return 0; }
① int型数组a,在内存中是连续存放的 每个元素占用4个内存字节单元
② char型数组b,在内存中是连续存放的 每个元素占用1个内存字节单元
task1_2.cpp
#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]); return 0; }
task2.cpp
#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 != 0) 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; }
task3.cpp
#include <stdio.h> #define 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, j, k; for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) { if (x[i] > x[j]) k = x[i]; else k = x[j]; } } return k; }
task4.cpp
#include <stdio.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 i = 0,j, c; int a[32]; if (n == 2){ while (x!=0) { c = (x % n); a[i] = c; x = x / n; i++; } for(i--;i>=0;i--) printf("%d", a[i]); printf("\n"); } if (n == 8) printf("%o\n", x); if (n == 16) printf("%x\n", x); }
task5.cpp
#include<stdio.h> #define N 20 #define M 20 int a[N][M]; int main() { int j, i, n; n = 1; for (i = 0; i < N; i++) { for (j = 0; j < M; j++) { if (i < j) a[i][j] = i + 1; else a[i][j] = j + 1; } } scanf("%d", &n); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) printf("%d ", a[i][j]); printf("\n"); } return 0; }