实验4

1
问题1:连续 ,相同
问题2:连续,相同,16,一行差的总字节数
2
问1:input(int x[], int n);input(x,n)
问2:函数input的功能是输入并存储数组x中的n个数值;函数compute的功能是计算数组x中去掉最大值最小值后的平均值
3
问1:output(int x[][N], int n);output(x, n)
问2:不能
问3:打印两维数组x中的所有元素;将两维数组x中的每个元素赋值为value
4

include <stdio.h>

define N 100

double median(int x[],int n);
void input(int x[],int n);
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;
}

void input(int x[],int n){
for(int i=0;i<n;++i)
scanf("%d",&x[i]);
for(int i=0;i<n-1;++i)
for(int j=0;j<n-1-i;++j)
if(x[j]>x[j+1]){
int temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}

}
double median(int x[],int n){
double avg;
if(n%2==0){
avg=(x[n/2-1]+x[n/2])/2.0;
}
else if(n%2!=0){
avg=x[n/2];
}
return avg;
}

4

5

include <stdio.h>

define N 100

void input(int x[][N], int n);
void output(int x[][N], int n);
void rotate_to_right(int x[][N],int n);
int main() {
int x[N][N];
int n;
printf("Enter n: ");
scanf("%d", &n);
input(x, n);
printf("原始矩阵:\n");
output(x, n);
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]);
 }

}
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");
}
}
void rotate_to_right(int x[][N],int n){
int temp[n][1];
for(int i=0;i<n;++i)
temp[i][0]=x[i][n-1];
for(int i=n-1;i>0;--i)
for(int j=0;j<n;++j)
x[j][i]=x[j][i-1];
for(int i=0;i<n;++i)
x[i][0]=temp[i][0];
}

4
6

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);
dec_to_n(x, 8);
dec_to_n(x, 16);
printf("\n");
}
return 0;
}

void dec_to_n(int x, int n) {
int yu, i = 0;
int y[N];
int temp = x;

 while (temp != 0) {
     yu = temp % n;
     y[i++] = yu;
     temp = temp / n;
 }
 
 
 for (int j = i - 1; j >= 0; j--) {
     if (y[j] >= 10) { 
         printf("%c", 'A' + y[j] - 10);
     } 
     else {
         printf("%d", y[j]);
     }
 }
printf("\n");

}

4

7

include <stdio.h>

define N 100

void input(int x[][N],int n);
void output(int x[][N],int n);
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;

}

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]);
}

}

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");    
 }

}

int is_magic(int x[][N],int n){
int i,j;
int sum;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
int a = x[i][j];
for (int k = i; k < n; k++) {
int b = (k == i) ? (j + 1) : 0;
for (int l = b; l < n; l++) {
if (x[k][l] == a) {
return 0;
}
}
}
}
}
for(i=0;i<n;i++)
sum+=x[0][i];
for(i=1;i<n;i++){
int hang=0;
for(j=0;j<n;j++){
hang += x[i][j];
}
if(sum!=hang){
return 0;
}
}
for(i=0;i<n;i++){
int lie=0;
for(j=0;j<n;j++){
lie += x[j][i];
}
if(sum!=lie){
return 0;
}
}
int diag1=0;
for(i=0;i<n;i++){
diag1+=x[i][i];
}
if(sum!=diag1){
return 0;
}
int diag2=0;
for(i=0;i<n;i++){
diag2+=x[i][n-1-i];
}
if(sum!=diag2){
return 0;
}
return 1;
}

4

posted @ 2025-11-16 20:37  135hlj  阅读(6)  评论(0)    收藏  举报