啊哈磊_编程从这里起步
标题:
小学生的救星 圆的计算器
[打印本页]
作者:
ejuooooooo
时间:
2014-1-18 10:37
标题:
小学生的救星 圆的计算器
昨天刚学完 引用 练习一下~
#include<iostream>
#include<string>
const double PUBLIC_PAI = 3.14; // 方便调试
using namespace std;
const double &YUAN_C(double &YUAN_C_R) //引用 节约内存
{
return PUBLIC_PAI * (YUAN_C_R + YUAN_C_R);
}
const double &YUAN_S(double &YUAN_S_R)
{
return PUBLIC_PAI * YUAN_S_R * YUAN_S_R;
}
int main()
{
int MAIN_I;
double MAIN_R_D,MAIN_SUM;
string MAIN_STR,MAIN_SUM_STR;
system("color 0a");
label1:
cout << "欢迎使用圆的计算器" << endl;
cout << "请输入半径或直径的值" << endl;
cin >> MAIN_R_D;
cout << "你刚才输入半径的值就输入“半径”,输入直径的值就输入“直径”" << endl;
cin >> MAIN_STR;
if( MAIN_STR == "直径")
MAIN_R_D = MAIN_R_D / 2;
cout << "你要求什么?(周长 或 面积)" << endl;
cin >> MAIN_SUM_STR;
if(MAIN_SUM_STR == "周长")
MAIN_SUM = YUAN_C(MAIN_R_D);
else if (MAIN_SUM_STR == "面积")
MAIN_SUM = YUAN_S(MAIN_R_D);
system("cls");
cout << "你输入的半径的值是 " << MAIN_R_D << endl;
cout << "你要求的" << MAIN_SUM_STR << "的值是 " << MAIN_SUM << endl;
cout << "继续计算请输入 1 ,退出请输入 2"<< endl;
cin >> MAIN_I;
if (MAIN_I == 1)
{
system("cls");
goto label1;
}
else if (MAIN_I == 2)
{
system("pause");
return 0;
}
}
复制代码
对比一下 引用传递和按值传递
按值传递(C\C++)
在主函数 传递 给 函数1时
函数1 会创建一个新的变量
两个变量 值是相同的 地址是不同的
引用传递 (C++)
在主函数 传递 给 函数1时
函数1 不会创建一个新的变量
而是引用 主函数里的变量
两个变量 值是相同的 地址也是相同的
虽然有两个变量名
欢迎大神们多多指导
作者:
ejuooooooo
时间:
2014-1-18 11:46
最后那个goto是用来继续计算的
作者:
4399APPLE
时间:
2014-1-18 14:42
有问题。
永远不要用goto
还有,using namespace std只是教材上的用法
std只是为了省空间
作者:
ejuooooooo
时间:
2014-1-19 13:15
4399APPLE 发表于 2014-1-18 14:42
有问题。
永远不要用goto
还有,using namespace std只是教材上的用法
谢谢点评
那我用
using std::cout;
复制代码
还是直接在代码里写
std::cout
复制代码
作者:
rosynirvana
时间:
2014-1-20 19:50
这样写是错误的
首先,不该返回一个局部变量的引用,否则行为是未定义的
局部变量在函数返回后就销毁了,系统可以回收掉那部分内存
其次,这样做不一定会节约内存,double占8字节,64位环境下地址也要8字节
另外风格方面,全大写字母一般用来表示常量
作者:
1935515130
时间:
2014-6-1 20:35
我有一个更好的,链接:
http://www.ahalei.com/thread-4901-1-1.html
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/)
Powered by Discuz! X3.2