c语言的矩阵乘法问题 初学者求助
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言的矩阵乘法问题 初学者求助相关的知识,希望对你有一定的参考价值。
完成程序,设计实现函数void f(int a[],int b[],int c[],int m,int n,int t),其功能为计算给定的两个整型数组(一个为m行n列,一个为n行t列)的乘积矩阵。
函数接口定义:
void f(int a[],int b[],int c[],int m,int n,int t);/*功能为计算给定的矩阵a(m行n列)和矩阵b(n行t列)的乘积矩阵c*/
裁判测试程序样例:
#include <stdio.h>
/* 请在这里填写答案 */
int main()
int i,j,a[3][4],b[4][3],c[3][3];
for(i=0; i<3; i++)
for(j=0; j<4; j++)
scanf("%d",&a[i][j]);
for(i=0; i<4; i++)
for(j=0; j<3; j++)
scanf("%d",&b[i][j]);
f(a[0],b[0],c[0],3,4,3);
for(i=0; i<3; i++)
for(j=0; j<3; j++)
printf("%5d",c[i][j]);
printf("\n");
输入格式:
首先输入整型数组a[3][4]的各元素的值,再输入整型数组b[4][3]的各元素的值,数据中间以空格为间隔。
输出格式:
对于输入的a数组和b数组,输出a和b的乘积矩阵c[3][3],其中每个元素显示格式为:占5列,右对齐。
输入样例:
1 2 3 4
2 3 4 5
3 4 5 6
1 2 3
2 3 4
3 4 5
4 5 6
结尾无空行
输出样例:
30 40 50
40 54 68
50 68 86
结尾无空行
//矩阵乘法属于线性代数;矩阵乘法的原理不难,只要原理搞请,代码很好写的
#include<stdio.h>
/*功能为计算给定的矩阵a(m行n列)和矩阵b(n行t列)的乘积矩阵c*/
void f(int a[3][4], int b[4][3], int c[3][3], int m, int n, int t)
//矩阵乘法:前行乘后列
//矩阵a的行(m)作为矩阵c的行
//矩阵b的列(t)作为矩阵c的列
for (int i = 0; i < m; i++) //新矩阵m行
for (int j = 0; j < t; j++) //新矩阵t列
int sum=0;
for (int k = 0; k < n; k++)
sum += (a[i][k] * b[k][j]);//行列对应相乘,然后累加
c[i][j]=sum;
/* 请在这里填写答案 */
/*
1 2 3 4
2 3 4 5
3 4 5 6
1 2 3
2 3 4
3 4 5
4 5 6
*/
int main()
int i, j, a[3][4], b[4][3], c[3][3];
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
scanf("%d", &a[i][j]);
for (i = 0; i < 4; i++)
for (j = 0; j < 3; j++)
scanf("%d", &b[i][j]);
f(a, b, c, 3, 4, 3);
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
printf("%5d", c[i][j]);
printf("\\n");
参考技术A #include<stdio.h>
//使用递归算法求阶乘
int calc(int num)
if(num==1)
return 1;
else
return num*calc(num-1);
void main()
int i,sum=0;
//①用for循环,计算n=10时sum的值?
for(i=1;i<=10;i++)
sum+=calc(i);
printf("n=10时sum的值是:%d!\n",sum);
//②用while循环,计算sum在1000内的最大值?
sum=0;
i=0;
while(sum<=1000)
i++;
sum+=calc(i);
printf("sum在1000内的最大值是:%d!\n",i-1);
参考技术B #include<stdio.h>
//使用递归算法求阶乘
int calc(int num)
if(num==1)
return 1;
else
return num*calc(num-1);
void main()
int i,sum=0;
//①用for循环,计算n=10时sum的值?
for(i=1;i<=10;i++)
sum+=calc(i);
printf("n=10时sum的值是:%d!\n",sum);
//②用while循环,计算sum在1000内的最大值?
sum=0;
i=0;
while(sum<=1000)
i++;
sum+=calc(i);
printf("sum在1000内的最大值是:%d!\n",i-1);
参考技术C 回家变卖典质,父亲还了亏空;又借钱办了丧事。这些日子,家中光景很是惨淡,一半为了丧事,一半为了父亲赋闲。丧事完毕,父亲要到南京谋事,我也要回到北京念书,我们便同行。
求助 :c语言程序设计 输入一个2-9之间任意一个数,然后利用循环嵌套,输出一个相应的乘法表
这个可以这样实现先读入一个数n,然后设计一个二重循环,外层循环从1一直到n,也就是一共输出有n行。然后内循环是从1开始,一直到本行的行数为止进行循环,每次执行内循环体就输出一个乘法等式,当内循环结束的时候进行换行。
整个程序就实现了题目所规定的要求。
main()
int i,j,n;
scanf (“%d”,&n);
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
printf (“%d*%d=%-4d”,i,j,i*j);
printf(“\n”);
参考技术A 你要写一个九九乘法表?
#include<stdio.h>
void main()
int num,i,j;
printf("请输入一个2-9之间的数:");
scanf("%d",&num);
while (num>9||num<2)
printf("必须输入一个2-9之间的数!\n\n");
scanf("%d",&num);
for (i = 1; i <= num; i++)
for (j = 1; j <= i; j++)
printf("%d×%d=%d\t",i,j,(i*j));
printf("\n");
本回答被提问者采纳
以上是关于c语言的矩阵乘法问题 初学者求助的主要内容,如果未能解决你的问题,请参考以下文章