C语言编写程序求5行5列矩阵的上三角元素之积。

如题所述

void fun (char s[][5]);

int main()

{

char s[5][5];

int i,j;

printf("请输入5行5列的矩阵:");

for(i=0;i<5;i++)

for(j=0;j<5;j++)

{

scanf("%d",&s[i][j]);

}

fun(s);

system("pause");

}

void fun (char s[][5])

{

long int sum=1, i,j;

for(i=0;i<5;i++)

for(j=i;j<5;j++)

{

sum*=s[i][j];

}

printf("%ld",sum);


}

        

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-05
// 1  2  3  4  5
// 6  7  8  9  10
// 11 12 13 14 15
// 16 17 18 19 20
// 21 22 23 24 25
// 5*5即25个整数malloc(sizeof(int)*25)
// 因为题目矩阵固定,上三角是2 3 4 5 8 9 10 14 15 20元素.所以直接取出相乘就行了

void main(){
int postable[10] = {2,3,4,5,8,9,10,14,15,20};
int *m = (int*)malloc(sizeof(int)*25);
int i = 0, d = 1;
while(i<25)
scanf("%d",m + i++);
for(i=0;i<10;i++)
d *= *(m + postable[i] - 1);
printf("%d",d);
free(m);
}

// 如果不想用表来取上三角,则:
#define x 5
void main()
{
int *m = (int *)malloc(sizeof(int) * x * x);
int i = 0, j = 0, d = 1;

while(i < x * x)
scanf("%d", m + i++);

for(i = 0; i < x; i++)
for(j = i + 1; j < x; j++)
d *= *(m + i * x + j);

printf("%d", d);
free(m);
}

本回答被网友采纳
第2个回答  2020-05-04
写个两层的for循环,每一行用i表示,而每一列用j表示。其他的就是一些基本的控制,然后就是把内层的控制循环条件写成i小于等于 j就行了,毕竟算的是上三角的那部分。然后定义一个total或者sum的变量记录乘积就行了。追问

能写下过程吗?

相似回答