实验四

试验任务一
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

联想截图_20251113165312

实验任务五

 

#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

联想截图_20251113192210

实验任务六

#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

联想截图_20251113202159

实验任务七·

#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

联想截图_20251113230856

实验任务八

 

#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;
}

错了,等老师讲吧,我很努力了,

posted @ 2025-11-14 17:27  孙棒棒  阅读(0)  评论(0)    收藏  举报