实验四
试验任务一
1.一维数组x在内存中连续存放, x和&x[0]的值相同
2.二维数组x在内存中是按行连续存放, x、 x[0]和&x[0][0]的值相同, x[0]和x[1]相差16个字节
试验任务二
形参是x【】,实参是下x.
input:储存输入的n个数据
compete;计算去除最大值和最小值后的平均数
试验任务三
1.形参是x【】【n】
实参是x
2.不能不写
会报错
3.init是将value赋值给数组
output是逐行打印
实验任务四
#include <stdio.h> #define N 100 // 函数声明 // 待补足 // xxx double median(int x[],int n){ int i,j,t; for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(x[i]>x[j]){ t=x[i]; x[i]=x[j]; x[j]=t; } } } if(n%2==1){ return x[n/2]; } else{ return (x[n/2-1]+x[n/2])/2.0; } } void input(int x[],int n){ int i; for(i=0;i<n;i++){ scanf("%d",&x[i]); } } int main() { int x[N]; int n; double ans; while(printf("Enter n: "), scanf("%d", &n) != EOF) { input(x, n); // 函数调用 ans = median(x, n); // 函数调用 printf("ans = %g\n\n", ans); } return 0; } // 函数定义 // 待补足 // xxx

实验任务五
#include <stdio.h> #define N 100 // 函数声明 void input(int x[][N], int n); void output(int x[][N], int n); // 函数rotate_to_right声明 void rotate_to_right(int x[][N],int n) ; // 待补足 // ××× int main() { int x[N][N]; int n; printf("输入n: "); scanf("%d", &n); input(x, n); printf("原始矩阵:\n"); output(x, n); // 函数rotate_to_right调用 rotate_to_right(x,n); // 待补足 printf("变换后矩阵:\n"); output(x, n); return 0; } // 函数定义 // 功能: 输入一个n*n的矩阵x void input(int x[][N], int n) { int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) scanf("%d", &x[i][j]); } } // 函数定义 // 功能: 输出一个n*n的矩阵x void output(int x[][N], int n) { int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) printf("%4d", x[i][j]); printf("\n"); } } // 函数rotate_to_right定义 void rotate_to_right(int x[][N],int n){ int i,j; int t[N]; for(i=0;i<n;i++){ t[i]=x[i][n-1];} for(j=n-1;j>0;j--){ for(i=0;i<n;i++){ x[i][j]=x[i][j-1]; } } for(i=0;i<n;i++){ x[i][0]=t[i]; } } // 功能: 把一个n*n的矩阵x,每一列向右移, 最右边一列绕回左边 // 待补足 // xxx

实验任务六
#include <stdio.h> #define N 100 void dec_to_n(int x, int n); // 函数声明 int main() { int x; while(printf("输入十进制整数: "), scanf("%d", &x) != EOF) { dec_to_n(x, 2); // 函数调用: 把x转换成二进制输出 dec_to_n(x, 8); // 函数调用: 把x转换成八进制输出 dec_to_n(x, 16); // 函数调用: 把x转换成十六进制输出 printf("\n"); } return 0; } void dec_to_n(int x,int n){ if (x==0){ printf("0"); return; } int yvshu[N]; int t=x; int i=0; if(t<0){ printf("-"); t=-t; } while(t>0){ yvshu[i++]=t%n; t=t/n; } for(int j=i-1;j>=0;j--){ if(yvshu[j]>=10){ printf("%c",'A'+yvshu[j]-10); } else{ printf("%d",yvshu[j]); } } printf("\n"); } // 函数定义 // 功能: 把十进制数x转换成n进制,打印输出 // 补足函数实现 // xxx

实验任务七·
#include <stdio.h> #define N 100 // 函数声明 void input(int x[][N], int n); void output(int x[][N], int n); // 待补足函数is_magic声明 int is_magic(int x[][N], int n); int main() { int x[N][N]; int n; while(printf("输入n: "), scanf("%d", &n) != EOF) { printf("输入方阵:\n"); input(x, n); printf("输出方阵:\n"); output(x, n); if(is_magic(x, n)) printf("是魔方矩阵\n\n"); else printf("不是魔方矩阵\n\n"); } return 0; } // 函数定义 // 功能: 输入一个n*n的矩阵x void input(int x[][N], int n) { int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) scanf("%d", &x[i][j]); } } // 功能: 输出一个n*n的矩阵x void output(int x[][N], int n) { int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) printf("%4d", x[i][j]); printf("\n"); } } // 功能: 判断一个n阶方阵是否为魔方矩阵,如果是,返回1,否则,返回0 // 待补足函数is_magic定义 int is_magic(int x[][N], int n){ int i,j; int s=0; int s1=0; int s2=0; int s3=0; int s4=0; for(j=0;j<n;++j){ s+=x[0][j]; } for(i=1;i<n;++i){ for(j=0;j<n;++j){ s1 +=x[i][j]; } if(s1=!s){ return 0; } } for(j=0;j<n;++j){ for(i=0;i<n;++i){ s2 +=x[i][j]; } if(s2=!s){ return 0; } } for (i=0;i<n;++i){ s3 +=x[i][i]; } if(s3=!s){ return 0; } for (i=0;i<n;++i){ s4 +=x[i][n-1-i]; } if(s4=!s){ return 0; } return 1; } // xxx

实验任务八
#include <stdio.h> #define N 100000 int main() { int x[N] ,y[N]; int i,j,s,t,l,e,f; for(i=0;i<N;++i){ int b=i*i*i; int c=i*i; for(e=0;b>0;e++){ b/=10; } for(f=0;c>0;f++){ c/=10; } for(j=0;j<e;++j){ x[j]=b%10; } for(l=0;l<f;++l){ y[l]=c%10; } for(j=0;j<e;++j){ for(l=0;l<f;++l){ if(x[j]=x[l]){ break; } else{printf("%d\n",i); break; } } } } return 0; }
错了,等老师讲吧,我很努力了,
浙公网安备 33010602011771号