请帮我分析一下下面这个C语言的题目,谢谢!
8、给定程序中,函数fun的功能是:将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。例如,有下列矩阵:12345...
8、给定程序中,函数fun的功能是:将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。
例如,有下列矩阵:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
若k为2,程序执行结果为
3 4 5 1 2
3 4 5 1 2
3 4 5 1 2
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define M 3
#define N 5
void fun(int (*a)[N],int k)
{ int i,j,p,temp;
/**********found**********/
for(p=1; p<= __1__; p++)
for(i=0; i<M; i++)
{ temp=a[i][0];
/**********found**********/
for(j=0; j< __2__ ; j++) a[i][j]=a[i][j+1];
/**********found**********/
a[i][N-1]= __3__;
}
}
main( )
{ int x[M][N]={ {1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5} },i,j;
printf("The array before moving:\n\n");
for(i=0; i<M; i++)
{ for(j=0; j<N; j++) printf("%3d",x[i][j]);
printf("\n");
}
fun(x,2);
printf("The array after moving:\n\n");
for(i=0; i<M; i++)
{ for(j=0; j<N; j++) printf("%3d",x[i][j]);
printf("\n");
}
} 答案:(1)k(2)N-1(3)temp 展开
例如,有下列矩阵:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
若k为2,程序执行结果为
3 4 5 1 2
3 4 5 1 2
3 4 5 1 2
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define M 3
#define N 5
void fun(int (*a)[N],int k)
{ int i,j,p,temp;
/**********found**********/
for(p=1; p<= __1__; p++)
for(i=0; i<M; i++)
{ temp=a[i][0];
/**********found**********/
for(j=0; j< __2__ ; j++) a[i][j]=a[i][j+1];
/**********found**********/
a[i][N-1]= __3__;
}
}
main( )
{ int x[M][N]={ {1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5} },i,j;
printf("The array before moving:\n\n");
for(i=0; i<M; i++)
{ for(j=0; j<N; j++) printf("%3d",x[i][j]);
printf("\n");
}
fun(x,2);
printf("The array after moving:\n\n");
for(i=0; i<M; i++)
{ for(j=0; j<N; j++) printf("%3d",x[i][j]);
printf("\n");
}
} 答案:(1)k(2)N-1(3)temp 展开
2个回答
展开全部
程序有错误。
----------------------
MAIN: MOV SP, #SP
MOV 30H, #08H
MOV P1, #FFH
MOV P0, FFH ---估计应该是带#的
CLR TR0
TO: MOV TMOD, #01H
MOV TH0, #3CH
MOV TL0, #0B0H
SETB TR0
T1: MOV 30H, #50
M8: CJNE 30H, #00H, M8 --非法指令,可以用CJNE A, #......
CJNE 31H, 08H, M7 --非法指令,也以用CJNE Rn, #......
MOV P1, FFH --估计应该是带#的,#0FFH
MOV P0, FFH
DEC 31H
SJMP T1
M7: CJNE 31H, 07H, M6 ---非法
………… ---下面的雷同,大约有将近二分之一的非法指令。
…………
=======================
中断服务程序
***************************************
INT1: PUSH 30H ---INT1,不能当标号吧?
PUSH 31H ;保护现场
CLR TR0
MOV TMOD, #01H
MOV TH0, #3CH
MOV TL0, #0B0H
DEC 30H ---这里减一,白忙
POP 31H
POP 30H ---恢复现场,刚才白减了
SETB TR0
RETI
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
----------------------
MAIN: MOV SP, #SP
MOV 30H, #08H
MOV P1, #FFH
MOV P0, FFH ---估计应该是带#的
CLR TR0
TO: MOV TMOD, #01H
MOV TH0, #3CH
MOV TL0, #0B0H
SETB TR0
T1: MOV 30H, #50
M8: CJNE 30H, #00H, M8 --非法指令,可以用CJNE A, #......
CJNE 31H, 08H, M7 --非法指令,也以用CJNE Rn, #......
MOV P1, FFH --估计应该是带#的,#0FFH
MOV P0, FFH
DEC 31H
SJMP T1
M7: CJNE 31H, 07H, M6 ---非法
………… ---下面的雷同,大约有将近二分之一的非法指令。
…………
=======================
中断服务程序
***************************************
INT1: PUSH 30H ---INT1,不能当标号吧?
PUSH 31H ;保护现场
CLR TR0
MOV TMOD, #01H
MOV TH0, #3CH
MOV TL0, #0B0H
DEC 30H ---这里减一,白忙
POP 31H
POP 30H ---恢复现场,刚才白减了
SETB TR0
RETI
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询