以下这段代码该怎么优化int main() { int v1=0, v2=0; std::cout << "请输入两个整数:" << std::endl; std::cout << "第一个整数:"; std::cin >> v1; std::cout << "第二个整数"; std::cin >> v2; if (v1 > v2) { int tmp = 0; tmp += v1; v1 = v2; v2 = tmp; } for (int i=v1;i <= v2;++v1) { std::cout << v1 <<std::endl; } return 0; }
时间: 2023-06-03 10:05:45 浏览: 118
可以将第二个整数的输入和v1、v2比较的逻辑拆分开来,避免不必要的变量赋值和比较。同时,在循环内部直接输出i。
代码如下:
int main() {
int v1, v2;
std::cout << "请输入两个整数:" << std::endl;
std::cout << "第一个整数:";
std::cin >> v1;
std::cout << "第二个整数:";
std::cin >> v2;
if (v1 > v2) {
int tmp = v1;
v1 = v2;
v2 = tmp;
}
for (int i = v1; i <= v2; i++) {
std::cout << i << std::endl;
}
return 0;
}
相关问题
MAX_VALUE是一个模板函数,其作用为求a、b、c三个值中的最大值,函数声明如下: template<typename T> T MAX_VALUE(T a, T b, T c) 请实现该函数,并通过如下测试程序: 测试程序: #include <iostream> #include <string> using namespace std; /* 请在这里填写答案 */ int main() { int v1=MAX_VALUE(1,2,3); cout<<v1<<endl; double v2=MAX_VALUE(3.14, 20.1,11.9); cout<<v2<<endl; long v3=MAX_VALUE(100L,200L,300L); cout<<v3<<endl; return 0; }
以下是实现MAX_VALUE函数的代码:
```c++
template<typename T>
T MAX_VALUE(T a, T b, T c) {
return (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
}
```
该函数通过比较a、b、c三个值的大小,返回其中的最大值。在该函数中,我们使用了C++中的三目运算符(?:),它相当于if-else语句的简写形式。
测试程序输出如下:
```
3
20.1
300
```
类体系设计#include<iostream> #include<fstream> #include<iomanip> using namespace std; double M[3][3]; double N[10][10]; bool ReadMatrix() { int i, j; ifstream Nfile("d:\\N矩阵.txt"); if (!Nfile) return false; ifstream Mfile("d:\\M矩阵.txt"); if (!Mfile) { Nfile.close(); return false; } for (i = 0;i < 10;i++) for (j = 0;j < 10;j++) Nfile >> N[i][j]; for (i = 0;i < 3;i++) for (j = 0;j < 3;j++) Mfile >> M[i][j]; Mfile.close(); Nfile.close(); return true; } double algorithms1(int I, int J) { double Mij, Nij; double a, b; int i, j, in, jn; a = 0; b = 0; for (i = 0;i <= 2;i++) for (j = 0;j <= 2;j++) { Mij = M[i][j]; in = I - i - 1; jn = J - j - 1; if (in < 0 || jn < 0 || in>9 || jn>9) Nij = 0; else Nij = N[in][jn]; a = a + Mij * Nij; b = b + Mij; } if (b != 0) return a / b; else return 0; } double algorithms2(int I, int J) { double Mij, Nij; double a, b; int i, j, in, jn; a = 0; b = 0; for (i = 0;i <= 2;i++) for (j = 0;j <= 2;j++) { Mij = M[i][j]; in = I - i - 1; jn = J - j - 1; if (in < 0 || jn < 0 || in>9 || jn>9) Nij = 0; else Nij = N[9 - in][9 - jn]; a = a + Mij * Nij; b = b + Mij; } if (b != 0) return a / b; else return 0; } int main() { int i, j; double v1, v2; char c; if (!ReadMatrix()) { cout << "打开文件出错,程序退出" << endl; return -1; } cout << "读入矩阵数据成功,请输入I:"; cin >> i; cout << endl << "请输入J:"; cin >> j; cout << "输入的I=" << i << "输入的J= " << j << endl; v1 = algorithms1(i, j); cout << "算法1的结果=" << v1 << endl; v2 = algorithms2(i, j); cout << "算法2的结果=" << v2 << endl; return 0; }
这段代码是一个简单的矩阵计算程序,实现了两种算法。其中,ReadMatrix()函数用于从文件中读取两个矩阵(一个是3x3的矩阵M,一个是10x10的矩阵N)。algorithms1()和algorithms2()函数实现了两种不同的矩阵计算算法,输入参数为矩阵中的行列坐标。在主函数中,程序首先调用ReadMatrix()函数读取矩阵数据,然后通过用户输入的行列坐标调用两个算法计算出结果并输出。
阅读全文