本文介绍: 假设有一堆数字(小于100个)需要对其做如下处理:1. 求平均数2. 求标准差3. 求方差*可用函数实现也可以不用*### 题目假设有一个4*3的矩阵,元素自定:1. 求各一元各行元素的平均值2. 求该矩阵转置后的矩阵3. 若一个3乘4的矩阵与其相乘求新矩阵*必须用函数实现*
2013年苏州大学复试机试
第一题
题目
假设有一堆数字(小于100个)需要对其做如下处理:
- 求平均数
- 求标准差
- 求方差
可用函数实现也可以不用
代码
#include <iostream>
#include <sstream> //字符串流
#include <cmath> //数学运算
using namespace std;
void Input_Function();
void Mean_Function();
void Standard_deviation();
const int MAX_SIZE = 100;
int Arr[MAX_SIZE];
int Arr_Sum = 0;
double Average = 0;
int Arr_size = 0;
int main() {
//输入处理
Input_Function();
//求平均值
Mean_Function();
//求标准差和方差
Standard_deviation();
return 0;
}
void Input_Function(){
int Temp = 0;
Arr_size = 0;
cout << "请输入数字(以空格分隔):"<< endl;
//读取整行输入
string input;
getline(cin,input);
//使用字符串串流解析整行输入
stringstream ss(input);
//输入数组操作
while (ss >> Temp){
if (Arr_size < MAX_SIZE){
Arr[Arr_size] = Temp;
Arr_size++;
} else{
cout << "数组已满,无法添加更多元素。" << endl;
break;
}
}
//打印数组并求和
cout << "输入数为:";
for (int i = 0; i < Arr_size; ++i) {
Arr_Sum += Arr[i];
cout << Arr[i] << " ";
}
cout << endl;
}
void Mean_Function(){
if (Arr_size > 0) {
Average = static_cast<double>(Arr_Sum) / Arr_size;
cout << "平均值为:" << Average << endl;
} else{
cout << "数组为空,无法计算平均值。" << endl;
}
}
void Standard_deviation(){
if (Arr_size > 1){
double variance = 0;
for (int i = 0; i < Arr_size; ++i) {
variance += pow(Arr[i] - Average,2);
}
variance /= (Arr_size - 1);
double std_deviation = sqrt(variance);
cout << "方差为:" << variance << endl;
cout << "标准差为:" << std_deviation << endl;
} else{
cout << "数组元素不足以计算方差和标准差。" << endl;
}
}
结果
第二题
题目
假设有一个4*3的矩阵,元素自定:
- 求各一元各行元素的平均值
- 求该矩阵转置后的矩阵
- 若一个3乘4的矩阵与其相乘求新矩阵
必须用函数实现
代码
#include <iostream>
using namespace std;
void Inpu_Function();
void Tran_Arr();
void New_Arr();
void Average_lacedelmenets();
int Arr_A[4][3];
int Tran_Arr_A[3][4];
int Arr_B[3][4];
int Arr_AB[4][4];
int main()
{
//输入4*3矩阵A的元素
Inpu_Function();
// 求各一元各行元素的平均值
Average_lacedelmenets();
//矩阵A的转置
Tran_Arr();
//一个3乘4的矩阵与其相乘的新矩阵
New_Arr();
system("pause");
return 0;
}
void Inpu_Function()
{
cout << "请输入4*3矩阵A的元素:" << endl;
//输入矩阵元素:
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 3; ++j) {
cout << "请输入第 " << (i + 1) << " 行,第 " << (j + 1) << " 列的元素:";
cin >> Arr_A[i][j];
}
}
//输出矩阵
cout << "输入的矩阵为:" << endl;
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 3; ++j) {
cout << Arr_A[i][j] << " ";
}
cout << endl;
}
}
void Average_lacedelmenets() {
cout << "各行元素的平均值为:" << endl;
for (int i = 0; i < 4; ++i) {
int rowSum = 0;
for (int j = 0; j < 3; ++j) {
rowSum += Arr_A[i][j];
}
double average = static_cast<double>(rowSum) / 3;
cout << "第 " << (i + 1) << " 行元素的平均值为:" << average << endl;
}
}
void Tran_Arr(){
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 3; ++j) {
Tran_Arr_A[j][i] = Arr_A[i][j];
}
}
//输出矩阵A的转置
cout << "矩阵A的转置为:" << endl;
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 4; ++j) {
cout << Tran_Arr_A[i][j] << " ";
}
cout << endl;
}
}
void New_Arr(){
//输入矩阵B
cout << "请输入3*4矩阵B的元素:" << endl;
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 4; ++j) {
cout << "请输入第 " << (i + 1) << " 行,第 " << (j + 1) << " 列的元素:";
cin >> Arr_B[i][j];
}
}
//计算矩阵A和B的乘积
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
Arr_AB[i][j] = 0;
for (int k = 0; k < 3; ++k) {
Arr_AB[i][j] += Arr_A[i][k] * Arr_B[k][j];
}
}
}
// 输出矩阵乘积
cout << "矩阵 A 和 B 的乘积为:" << endl;
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
cout << Arr_AB[i][j] << " ";
}
cout << endl;
}
}
结果
最后
此代码为个人编写,题目来自互联网,使用平台为Clion,C++17标准。
由于博主才疏学浅,如有错误请多多指正,如有更好解法请多多交流!
原文地址:https://blog.csdn.net/qq_45628620/article/details/135889374
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_63857.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。