}
}
if(x==2) { if(m!=e||n!=f) { printf(\ printf(\ } else { j=0; while(j 问题27: Matrix Problem (III) : Array Pratice 题目描述 求两个矩阵A、B的乘积C=AB。根据矩阵乘法的定义,只有A的列数和B的行数相同才 能相乘。可以确保所有运算结果都在int类型的范围之内。 输入 输入数据为多个矩阵(最少2个),每个矩阵以两个正整数m和n开始,满足0 输出 对输入的矩阵两两相乘:第1个和第2个相乘、第1个和第2个相乘的结果和第3个相乘……按顺序输出矩阵相乘的结果:每行两个元素之间用一个空格分开,每行最后一个元素之后为一个换行,在下一行开始输出矩阵的下一行。 若前k个矩阵相乘的结果和第k+1个矩阵无法相乘(即不满足矩阵乘法定义),则输出“Not satisfied the definition of matrix multiplication!”。然后用第k+1个矩阵去和第k+2个矩阵相乘。最后一个矩阵只做乘数。 每两组输出之间用一个空行分隔开。 样例输入 2 3 1 1 1 1 1 1 3 3 1 2 3 4 5 6 7 8 9 3 1 0 0 0 0 0 样例输出 12 15 18 12 15 18 0 0 提示 矩阵的乘法就是一行乘以一列加起来做一个元素。 解答: #include int m,n,i,j,p,k,c,d,o,q; int a[100][100]={0},b[100][100]={0},e[100][100]={0}; for(k=1;;k++) { if(k==1&&k%2==1) { scanf(\ scanf(\ } else if(k%2==0) { scanf(\ scanf(\ } if(m==0&&n==0) return 0; else { if(k==1) { i=0; while(i while(j scanf(\ j++; } i++; } } else if((k>1)&&(k%2!=0)) { for(i=0;i for(j=0;j for(p=0;p scanf(\ if(j==p) { for(c=0;c while(d e[c][d]=0; for(o=0; o e[c][d]+=a[c][o]*b[o][d]; d++; } } for(c=0; c for(d=0; d if(d==0) printf(\ else printf(\ } printf(\ } } else { printf(\ for(c=0; c for(d=0; d if(k%2==0) printf(\ } } 问题28: 十进制整数转二进制 题目描述 给出一个十进制的非负整数x,x<=216,把它转换成二进制数输出。 输入 输入为多行,每行一个整数x,至读入EOF结束。 输出 每行输出x对应的二进制数值。 样例输入 0 1 3 33 65535 样例输出 0 1 11 100001 1111111111111111 提示 本题有多种解法:可以用循环迭代对2的除法和取余操作,不过处理的顺序与输出顺序相反,需要利用数组存储;用取对数或从大到小减去2的整数次幂的方法计算与输出顺序是相同的;也可以用printf()把十进制的数值处理成十六进制,然后1位十六进制转4位二进制;也可以用位运算处理。 解答: #include 问题29: 魔方阵 题目描述 所谓N阶魔方阵,是一个N*N的方阵,其元素由1到N^2组成,且方阵每行每列以及对角线的元素和相等。如三阶魔方阵: 8 1 6 3 5 7 4 9 2 魔方阵的规律如下: