文档库 最新最全的文档下载
当前位置:文档库 › 二级C上机填空(矩阵)

二级C上机填空(矩阵)

18.下列给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均向右移动m个位置,左位置为0。例如,N=3,m=2,有下列矩阵
1 2 3
4 5 6
7 8 9
程序执行结果为
0 0 1
0 0 4
0 0 7
#include
#define N 4
void fun(int (*t)[N], int m)
{ int i, j;
/**********found**********/
for(i=0; i{ for(j=N-1-m; j>=0; j--)
/**********found**********/
t[i][j+m]=t[i][j];
/**********found**********/
for(j=0; jt[i][j]=0;
}
}
main()
{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j, m;
printf("\nThe original array:\n");
for(i=0; i{ for(j=0; jprintf("%2d ",t[i][j]);
printf("\n");
}
printf("Input m (m<=%d): ",N);scanf("%d",&m);
fun(t,m);
printf("\nThe result is:\n");
for(i=0; i{ for(j=0; jprintf("%2d ",t[i][j]);
printf("\n");
}
}
21.下列给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素做顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,再使临时数组中的元素成为最后一列。
例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
操作后应为:
7 4 1
8 5 2
9 6 3
#include
#define N 4
void fun(int (*t)[N])
{ int j ,r[N];
for(j=0; jfor(j=0; j/**********found**********/
t[0][N-j-1]=t[j][0];
for(j=0; jt[j][0]=t[N-1][j];
/**********found**********/
for(j=N-1; j>=0;j--)
t[N-1][N-1-j]=t[j][N-1];
for(j=N-1; j>=0; j--)
/**********found**********/
t[j][N-1]=r[j];
}
main()
{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
printf("\nThe original array:\n");
for(i=0; i{ for(j=0; jprintf("\n");
}
fun(t);
printf("\nThe result is:\n");
for(i=0; i{ for(j=0; jprintf("\n");
}
}
25.下列给定程序中,函数fun的功能是:将N×N矩阵主对角线元素的值与反向对角线对应位置上元素的值进行交换。
例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
交换后为:
3 2 1
4 5 6
9 8 7
#include
#define N 4
/**********found**********/
void fun(int t[][N], int n)
{ int i,s;
/**********found**********/
for(i=0;i{ s=t[i][i];
t[i][i]=t[i][n-i-1];
/**********found**********/
t[i][n-1-i]=s;
}
}
main()
{ int t[][N]={21,12,13,24,25,16,

47,38,29,11,32,54,42,21,33,10}, i, j;
printf("\nThe original array:\n");
for(i=0; i{ for(j=0; jprintf("\n");
}
fun(t,N);
printf("\nThe result is:\n");
for(i=0; i{ for(j=0; jprintf("\n");
}
}
29.下列给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。
例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
计算后结果为
1 0 0
6 5 0
10 14 9
#include
#define N 4
/**********found**********/
void fun(int (*t)[N] )
{ int i, j;
for(i=1; i{ for(j=0; j{
/**********found**********/
t[i][j] =t[i][j]+t[j][i];
/**********found**********/
t[j][i] =0;
}
}
}
main()
{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
printf("\nThe original array:\n");
for(i=0; i{ for(j=0; jprintf("\n");
}
fun(t);
printf("\nThe result is:\n");
for(i=0; i{ for(j=0; jprintf("\n");
}
}
43.下列给定程序中,函数fun的功能是:计算N×N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。要求先累加主对角线元素中的值,再累加反向对角线元素中的值。
例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
首先累加1、5、9,然后累加3、5、7,函数返回值为30。
#include
#define N 4
fun(int t[][N], int n)
{ int i, sum;
/**********found**********/
sum=0;
for(i=0; i/**********found**********/
sum+=t[i][i] ;
for(i=0; i/**********found**********/
sum+= t[i][n-i-1] ;
return sum;
}
main()
{ int t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;
printf("\nThe original data:\n");
for(i=0; i{ for(j=0; jprintf("\n");
}
printf("The result is: %d",fun(t,N));
}

相关文档