/*二维数组应用转置*/
#include <stdio.h>
#define N 2
#define M 3
int main()
{
int i, j, a[N][M], b[M][N];
/*a数组键盘读取使之初始化*/
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
scanf("%d", &a[N][M]);
}
}
/*a数组屏幕整齐输出*/
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
printf("%d\t", a[N][M]);
}
putchar('\n');
}
/*规律发现:关注下标 转置操作*/
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
b[M][N] = a[N][M];
}
}
/*输出b转置 答案*/
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{
printf("%d\t", b[M][N]);
}
printf("\n");
}
}
已经私信发你了!数组的概念没理解清楚
修改如下,改动处见注释,供参考:
/*二维数组应用转置*/
#include <stdio.h>
#define N 2
#define M 3
int main()
{
int i, j, a[N][M], b[M][N];
/*a数组键盘读取使之初始化*/
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
scanf("%d", &a[i][j]); // 修改
//scanf("%d", &a[N][M]);
}
}
/*a数组屏幕整齐输出*/
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
printf("%d\t", a[i][j]); // 修改
//printf("%d\t", a[N][M]);
}
putchar('\n');
}
/*规律发现:关注下标 转置操作*/
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
b[j][i] = a[i][j]; // 修改
// b[M][N] = a[N][M];
}
}
/*输出b转置 答案*/
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{
printf("%d\t", b[i][j]); // 修改
//printf("%d\t", b[M][N]);
}
printf("\n");
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:#include<reg51.h> // 引入头文件
unsigned int right,left,temp; // 定义个位,十位,中间转换变量,个位保存的变量
void main(){
P2 = 0x00; // 初始化
EA = 1; // 总中断
EX0 = 1; // 外部中断0
IT0 = 1; // 触发方式 下降沿
EX1 = 1; // 外部中断1
IT1 = 1; // 触发方式 下降沿
while(1);
}
// 外部中断0的服务子程序
void first() interrupt 0{
left++; // 十位++
temp = left%10<<4|right%10; // 取十位的余数 左移 + 个位取余
P2 = temp;
}
// 外部中断1的服务子程序
void second() interrupt 2{
if(right>9){ // 大于九,十位++ 再加上个位
left++;
P2=left%10<<4|right%10;
right=0;
}else{
right++; // 个位++
P2=left%10<<4|right%10;
}
}