【问题描述】
对于多个N阶矩阵,依次进行加、减运算。
【输入形式】
从标准输入读取输入。第一行只有一个整数N(1≤N≤10),代表矩阵的阶数。
接下来是一个矩阵,是N行,每行有N个整数(可能是正、负整数),是矩阵的所有元素。
然后一行只含一个字符“+”或“-”,代表加、减操作。
然后用同样的方式输入另一个矩阵。
后续仍然是运算符和矩阵。直至运算符为“#”时停止计算,将结果输出。
【输出形式】
向标准输出打印矩阵的操作结果。输出N行,每行对应矩阵在该行上的所有元素,每一行末均输出一个回车符。每个元素占5个字符宽度(包括负号),向右对齐,不足部分补以空格。
【输入样例】
3
1 -2 7
2 8 -5
3 6 9
+
3 5 7
-1 2 6
3 7 10
-
1 -2 7
2 8 -5
3 6 9
#
【输出样例】
(下图中”-”代表空格)
####3####5####7
###-1####2####6
####3####7###10
【评分标准】
本题不准使用数学库函数。运行时限1秒,完全正确20分,每个测试点4分。提交程序文件名为matrix.c。
下面是我写的,为什么在输入第一个矩阵时就会出现错误呢?
#include
int main()
{
int m,x,p,q,s,t=0;
int a[99],b[99],result[99];
int fun(int a[],int x);
char op;
scanf("%d",&x);
fun(a,x); /*输入一个矩阵*/
for(p=0;p<100;p++)
result[p]=a[p];
scanf("%c",&op); /*输入一个运算符*/
while(op!='#'){
fun(b,x); /*输入一个矩阵*/
if(op=='+'){
for(m=0;m<100;m++)
result[m]=result[m]+b[m];
}
else if(op=='-'){
for(m=0;m<100;m++)
result[m]=result[m]-b[m];
}
scanf("%d",&op); /*输入一个运算符*/
}
for(q=0;q
for(s=0;s<9*t+x;s++){
if(result[s]<0){
printf("###");
printf("%d",result[s]);
}
else{
printf("####");
printf("%d",result[s]);
}
}
t++;
}
return 0;
}
int fun(int a[],int x) /*函数:输入一个矩阵*/
{
int i=0,j,k=0;
for(j=0;j
for(;i<9*k+x;i++)
{
scanf("%d",a[i]);
}
i+=(10-x);
k++;
}
}