矩阵,那么就要用二维数组,你一位数组也是可以的,但是要确定怎么分割成二维数组的样子
N*N=10*10=100,可以定义一个100元素的数组
但是这个题目,我估计要定义二维数组的,呵呵
int a[100],sum[100]={0}; //最终结果一定要初始化
int i,n;
char op;
scanf("%",&n);
do //至少输入一次,用do--while最好
{
for(i=0;i
fflush(stdio); //清理一下缓冲,要不然char型op输入不进去
op=getchar();
switch(op) 计算加减,用switch也可,用if判断op也行(因为只有加减)
case '+':
for(i=0;i
break;
case '-':
for(i=0;i
break;
}while(op!='#');
for(i=0;i
printf("%5d",a[i]);
if(i%n==0) //n个一行
printf("\n");
}
我用二维数组存的 发给楼主借鉴一下
#include
#define Max 10
void fun(int a[][Max],int x )
{
int i,j;
for(i = 0 ; i < x; i++ )
for( j = 0 ; j < x ; j++)
{
scanf("%d",&a[i][j]);
}
fflush(stdin);
}
int main()
{
int a[Max][Max],result[Max][Max];
int num,i,j;
char op;
scanf("%d",&num);
fun(a,num);
for( i = 0 ; i < num ;i++)
for( j = 0; j < num;j++)
result[i][j] = a[i][j];
while( (op=getchar())!= '#')
{
fun(a ,num);
if( op =='+')
{
for( i = 0 ; i < num ;i++)
for( j = 0; j < num;j++)
result[i][j]+= a[i][j];
}
else
{
for( i = 0 ; i < num ;i++)
for( j = 0; j < num;j++)
result[i][j]-= a[i][j];
}
}
for( i = 0 ; i < num ;i++)
{
for( j = 0; j < num;j++)
printf("%5d",result[i][j]);
printf("\n");
}
reutn 0;
}
运行cpucash 的算法。发现还是有点问题。在上面改了改。解决了点逻辑问题。运行结果正确。
#include
int main(void)
{
int a[100],sum[100]={0}; //最终结果一定要初始化
int i,n;
char op='+';
scanf("%d",&n);
while(op!='#') //这个地方改了下
{
for(i=0;i
switch(op)//这样用效果好些,逻辑通顺
{
case '+':
for(i=0;i
fflush(stdin); //清理一下缓冲,要不然char型op输入不进去
op=getchar();
break;
case '-':
for(i=0;i
fflush(stdin); //清理一下缓冲,要不然char型op输入不进去
op=getchar();
break;
default:
break;
}
};
for(i=1;i<=n*n;i++) //输出
{
printf("%5d",sum[i-1]);
if(i%n==0) //n个一行
printf("\n");
}
return 0;
}
你写的fun函数是有返回值的,你在函数里面加上return就行了,还有在调用时也要对返回值加处理。