c++求俩矩阵的乘积、递归求次方和阶乘

374 阅读1分钟

1.用上述函数求以下两个矩阵的乘积。

基于Visual Studio集成开发环境设计一个完整的C++工程程序,其中,包括实现两个二维数组(矩阵)的乘法运算的函数,要求:函数的形式参数为int *p、int m、int n、 int *q、int n、int k、int *r,分别表示指向第一个二维数组的第一个元素的地址的指针p、第一个二维数组的行数m和列数n、指向第二个二维数组的第一个元素的地址的指针q、第二个二维数组的行数n和列数k、指向乘积矩阵的第一个元素的地址的指针r。函数的返回值为空。一个m行n列的矩阵A乘以一个n行k列的矩阵B的积为一个m行k列的矩阵R:

image.png

其中,Ri,j表示R矩阵的第i行第j列的元素。

image.png

    float arrA[100], arrB[100];
    char c;
    int m = 0, n = 0, k = 0, p = 0, i = 0, j, a, u, v;
    float arrC[10][10];
    
    int main(){
    
    cout << "请输入矩阵1的值,中间使用;隔开,元素使用,隔开:" << endl;
	cin >> arrA[i];
	while ((c = getchar()) != '\n') {
		cin >> arrA[++i];
		if (c == ';')m++;
	}
	m++;
	i++;
	n = i / m;


	cout << "请输入矩阵1的值,中间使用;隔开,元素使用,隔开:" << endl;
	cin >> arrB[j];
	while ((c = getchar()) != '\n') {
		cin >> arrB[++j];
		if (c == ';')k++;
	}
	k++;
	j++;
	p = j / k;

	if (n != k) {
		cout << "您输入的矩阵有错误!!";
		return 0;
	}

	for (i = 0; i < m; i++) {
		for (j = 0; j < p; j++) {
			for (a = 1; a <= n; a++) {
				arrC[i][j] += arrA[i * n + a - 1] * arrB[(a - 1) * p + j];
			}
		}
	}

	cout << "A*B=" << endl;
	for (u = 0; u < m; u++) {
		for (v = 0; v < p; v++) {
			if (v != p - 1) {
				cout << arrC[u][v] << ",";
			}
			else {
				cout << arrC[u][v] << endl;
			}
		}
	}


	system("pause");
    
    
    }

2.编写递归函数计算,其中n为整数,x为实数。用该函数求3.14的值。

    double cifang(int n, double x) {
	if (n == 0) return 1;
	else if (n == 1) return x;
	else {
		//pow(平方的数,几次方)
		return cifang(n - 1, x) * x;
	}
}
double cifang2(int n, double x) {
	if (n == 0) return 1;
	else if (n == 1) return x;
	else {
		//pow(平方的数,几次方)
		return x * pow(x, (n - 1));
	}
}
int main(){
        int n;
	double x;
	cout << "请输入n和x的值,其中n为整数,x为实数:" << endl;
	cin >> n;
	cin >> x;
	cout << x<<"的"<<n<<"次方结果为"<< cifang(n, x) << endl;
	cout << x<<"的"<<n<<"次方结果为"<< cifang2(n, x) << endl;
}

3.编写递归函数求阶乘,阶乘的定义为:n! = n×(n-1) ×…×2×1 = n × (n-1)!。这里求8!的值 。

    double jiecheng(int num) {
	if (num == 1) {
		return 1;
	}
	else {
		return  num * jiecheng(num - 1);
	}
}
int main(){

        double num;
	cout << "请输入num的值" << endl;
	cin >> num;
	cout << num << "的阶乘结果为" << jiecheng(num)<< endl;


}