//动动手1 将四行五列的二维数组打印出来编程五行四列
#include <stdio.h>
int main(void){
int a[4][5]={
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20}};
int i,j;
for(i=0;i<4;i++){
for(j=0;j<5;j++){
printf("%2d ",a[i][j]);
if(i+j==3){
printf("\n");
}
}
}
return 0;
}
//使用二维数组打印slogan
#include <stdio.h>
int main(void){
char s[5][100];
int i;
for(i=0;i<5;i++){
printf("请输入第%d句话:",i+1);
gets(s[i]);
}
printf("你输入了下面5句话:\n");
for(i=0;i<5;i++){
printf("%s\n",s[i]);
}
return 0;
}
//实现矩阵相乘算法
#include <stdio.h>
#define m 2
#define n 2
#define p 3
int main(void){
int a[m][p]={{1,2,3},{4,5,6}};
int b[p][n]={{1,4},{2,5},{3,6}};
int c[m][n];
int i,j,k;
//初始化C
for(i=0;i<m;i++){
for(j=0;j<n;j++){
c[i][j]=0;
}
}
//赋值C
for(i=0;i<m;i++){
for(j=0;j<n;j++){
for(k=0;k<p;k++){
c[i][j]+=a[i][k]*b[k][j];
}
}
}
int row=m>p?m:p;
//开始打印
for(i=0;i<row;i++){
//打印A 在i<m的情况下才打印 |
if(i<m){
printf("| ");
for(j=0;j<p;j++){
printf("%d ",a[i][j]);
}
printf("|");
}
else{
for(j=0;j<2*(p+1)+1;j++){ //打印一个数字和空格为一个p,因为一开始打印了一个|+空格,所以在i>=M的时候,需要打印p+1个空格
putchar(' ');
}
}
//打印 * 号
if(i==row/2){
printf(" * ");
}
else{
printf(" ");
}
//打印B
if(i<p){
printf("| ");
for(j=0;j<n;j++){
printf("%d ",b[i][j]);
}
printf("|");
}
else{
for(j=0;j<2*(n+1)+1;j++){
printf(" ");
}
}
//打印 = 号
if(i==row/2){
printf(" = ");
}
else{
printf(" ");
}
//打印C
if(i<m){
printf("| ");
for(j=0;j<n;j++){
printf("%d ",c[i][j]);
}
printf("|");
}
else{
for(j=0;j<2*(n+1)+1;j++){ //一开始这里写成了i++,导致一直循环,注意细节
printf(" ");
}
}
printf("\n");
}
return 0;
}