练习一 进行加减乘除
普通方法
#include <iostream>
using namespace std;
int add(int a,int b)
{
return a+b;
}
int min(int a,int b)
{
return a-b;
}
int mul(int a,int b)
{
return a*b;
}
float divRet(int a,int b)
{
return (float)a/b;
}
int main() {
int a;
int b;
char calWay;
while(1){
cout << "请输入两个数:"<< endl;
cin >> a;
cin >> b;
cout<<"请输入运算符号:+ - * /" <<endl;
cin >> calWay;
switch(calWay){
case '+':
printf("两数之和是%d\n",add(a,b));
break;
case '-':
printf("两数之差是%d\n",min(a,b));
break;
case '*':
printf("两数之积是%d\n",mul(a,b));
break;
case '/':
printf("两数之余是%f\n",divRet(a,b));
break;
default:
printf("运算符输入错误,请重新输入\n");
}
}
}
Lambda方法
#include <iostream>
using namespace std;
int calculator(int a, int b, int (*p)(int a, int b))
{
cout << "开始计算" << endl;
}
int main()
{
int a = 0;
int b = 0;
char cal;
while(1){
cout << "请输入两个数:" << endl;
cin >> a;
cin >> b;
cout << "请输入运算符+,-,*,/" << endl;
cin >> cal;
// auto minu = [a,b]()->int{ return a - b;};
switch(cal){
case '+':
cout << calculator(a,b,[](int a, int b){return a + b;}) << endl;
break;
case '-':
cout << calculator(a,b,[](int a, int b){return a - b;}) << endl;
break;
case '*':
cout << calculator(a,b,[](int a, int b){return a * b;}) << endl;
break;
case '/':
cout << calculator(a,b,[](int a, int b){return a / b;}) << endl;
break;
}
}
return 0;
}
练习二 求数组中最大值
#include <iostream>
using namespace std;
void initArry(int *arry, int len)
{
for(int i=0; i< len; i++){
cout << "请输入第" << i+1 << "个数" << endl;
cin >> arry[i];
}
}
void printArry(int *arry,int len)
{
for(int i=0; i< len; i++){
cout << arry[i] << endl;
}
}
int getMaxFromArray(int *arry, int len )
{
int maxTmp = arry[0];
for(int i=0; i< len; i++){
if(maxTmp < arry[i])
maxTmp = arry[i];
}
return maxTmp;
}
int main() {
int arry[5];
int len = sizeof(arry)/sizeof(arry[0]);
initArry(arry,len);
printArry(arry,len);
cout << "最大数是:" << getMaxFromArray(arry,len);
}