实验4
实验一:
1.是连续存放,&x[0]和x相同。
2.是连续存放,x和x[0]和x[0][0]相同,x[0]和x[1]相差16,相差的是4个int,一个int占4个字节。
实验二:
1.形参形式是 数组名[],数组大小;实参形式是 数组名,数组大小。
2.input的功能是遍历输入数组的每一个数,compute的功能是计算数组去掉一个最大值和最小值后的平均值
实验三:
1.形参形式是 数组名[][N],变量 ;实参形式是 数组名,变量。
2.不能。
3.output是二维数组的边路输出,init是让数组的前n维方阵的值为value。
实验四:
1 #include <stdio.h> 2 #define N 100 3 4 void input(int x[], int n); 5 double median(int x[], int n); 6 7 8 int main() { 9 int x[N]; 10 int n; 11 double ans; 12 13 while(printf("Enter n: "), scanf_s("%d", &n) != EOF) { 14 input(x, n); 15 ans = median(x, n); 16 printf("ans = %g\n\n", ans); 17 } 18 19 return 0; 20 } 21 22 void input(int x[], int n) { 23 int i; 24 25 for (i = 0; i < n; ++i) 26 scanf_s("%d", &x[i]); 27 } 28 29 double median(int x[], int n) { 30 int i, j, t; 31 for (i = 0; i < n; i++) 32 for (j = i; j < n-1; j++) { 33 if (x[j] < x[j + 1]) { 34 t = x[j]; 35 x[j] = x[j + 1]; 36 x[j + 1] = t; 37 } 38 } 39 if (n % 2 == 0) return (double)(x[n / 2-1] + x[n / 2 ]) / 2; 40 if (n % 2 == 1) return x[n / 2 ]; 41 }
实验五:
1 #include <stdio.h> 2 #define N 100 3 4 void input(int x[][N], int n); 5 void output(int x[][N], int n); 6 void rotate_to_right(int x[][N],int n); 7 8 9 int main() { 10 int x[N][N]; 11 int n; 12 13 printf("输入n: "); 14 scanf_s("%d", &n); 15 input(x, n); 16 17 printf("原始矩阵:\n"); 18 output(x, n); 19 20 rotate_to_right(x,n); 21 22 23 printf("变换后矩阵:\n"); 24 output(x, n); 25 26 return 0; 27 } 28 29 void input(int x[][N], int n) { 30 int i, j; 31 32 for (i = 0; i < n; ++i) { 33 for (j = 0; j < n; ++j) 34 scanf_s("%d", &x[i][j]); 35 } 36 } 37 38 void output(int x[][N], int n) { 39 int i, j; 40 41 for (i = 0; i < n; ++i) { 42 for (j = 0; j < n; ++j) 43 printf("%4d", x[i][j]); 44 45 printf("\n"); 46 } 47 } 48 49 void rotate_to_right(int x[][N], int n) { 50 int i,j,t; 51 for (i = 0; i < n; i++) 52 for (j=n-1;j>0;j--){ 53 t = x[i][j]; 54 x[i][j] = x[i][j-1]; 55 x[i][j-1] = t; 56 } 57 }
实验六:
1 #include <stdio.h> 2 #define N 100 3 void dec_to_n(int x, int n); 4 5 int main() { 6 int x; 7 8 while(printf("输入十进制整数: "), scanf_s("%d", &x) != EOF) { 9 dec_to_n(x, 2); 10 dec_to_n(x, 8); 11 dec_to_n(x, 16); 12 13 printf("\n"); 14 } 15 16 return 0; 17 } 18 19 void dec_to_n(int x, int n) { 20 int a[N]; 21 int i,j=0; 22 for (i = 0; i < N; i++,j++) { 23 a[i] = x % n; 24 x = x / n; 25 if (x == 0) break; 26 } 27 28 for (j; j >= 0; j--) { 29 if (a[j] > 9) printf("%c", 'A'+a[j] - 10); 30 else printf("%d", a[j]); 31 } 32 printf("\n"); 33 }
实验七:
1 #include <stdio.h> 2 #define N 100 3 4 void input(int x[][N], int n); 5 void output(int x[][N], int n); 6 int is_magic(int x[][N], int n); 7 8 int main() { 9 int x[N][N]; 10 int n; 11 12 while(printf("输入n: "), scanf_s("%d", &n) != EOF) { 13 printf("输入方阵:\n"); 14 input(x, n); 15 16 printf("输出方阵:\n"); 17 output(x, n); 18 19 if(is_magic(x, n)) 20 printf("是魔方矩阵\n\n"); 21 else 22 printf("不是魔方矩阵\n\n"); 23 } 24 25 return 0; 26 } 27 28 void input(int x[][N], int n) { 29 int i, j; 30 31 for (i = 0; i < n; ++i) { 32 for (j = 0; j < n; ++j) 33 scanf_s("%d", &x[i][j]); 34 } 35 } 36 37 void output(int x[][N], int n) { 38 int i, j; 39 40 for (i = 0; i < n; ++i) { 41 for (j = 0; j < n; ++j) 42 printf("%4d", x[i][j]); 43 44 printf("\n"); 45 } 46 } 47 48 int is_magic(int x[][N], int n) { 49 int i, j,sum2=0,sum3=0; 50 for (i = 0; i < n; i++) { 51 int sum1 = 0; 52 for (j = 0; j < n; j++) { 53 sum1 += x[i][j]; 54 } 55 if (sum1 != n * (n * n + 1) / 2) return 0; 56 sum2 += x[i][i]; 57 sum3 += x[n - 1 - i][n - 1 - i]; 58 } 59 if (sum2 != n * (n * n + 1) / 2|| sum3!= n * (n * n + 1) / 2) return 0; 60 return 1; 61 }
实验八:
1 #include<stdio.h> 2 3 int is_number(int i); 4 5 int main() { 6 int n = 2; 7 while (is_number(n) == 0) { 8 n = n++; 9 } 10 printf("%d\n", n); 11 return 0; 12 } 13 int is_number(int n) { 14 int i = 0; 15 int a = n * n; 16 int b = n * n * n; 17 int x[100] = { 0 }; 18 for (a; a > 0; ) { 19 x[i] = a % 10; 20 a = a / 10; 21 i = i++; 22 } 23 24 for (b; b > 0; ) { 25 x[i] = b % 10; 26 b = b / 10; 27 i = i++; 28 } 29 30 int j, k,t; 31 for(j=0;j<10;j++) 32 for (k=0;k<9-j;k++) 33 if (x[k] > x[k + 1]) { 34 t = x[k]; 35 x[k] = x[k + 1]; 36 x[k + 1] = t; 37 } 38 39 for (i = 0; i < 9; i++) { 40 if (x[i] == x[i + 1]|| x[i + 1] == 0) return 0; 41 } 42 return 1; 43 }

浙公网安备 33010602011771号