免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 无风之谷
打印 上一主题 下一主题

让我欢喜让我忧——我的C++之路 [复制链接]

论坛徽章:
0
871 [报告]
发表于 2012-04-22 14:28 |只看该作者
OwnWaterloo 发表于 2012-04-22 12:53
回复 861# 陈良乔

说诱导算是我想多了。


string.h和memory.h的争论就到此为止吧,谢谢大家给我指出

不如大家再来帮我挑一挑其他章节中的错误

感谢大家乐

论坛徽章:
0
872 [报告]
发表于 2012-04-22 14:33 |只看该作者
书中用了一个工资程序(我知道很俗,这一点不用提了)的成长演变,从面向结构的函数,到面向对象的类和对象,再到STL的容器和算法阿,展示了如何使用C++的各个部分来解决问题。

这是第一部分,数组

4.4.2 工资程序成长记:用数组处理批量数据
还记得在3.6小节中,我们的冒牌程序员小陈要解决的那个管理查询100 000个工资数据的艰巨任务吗?在继续学习了数组以及条件、循环控制结构等知识之后,在他看来,当初似乎不可能完成的艰巨任务,现在也不过是小菜一碟了。很快,他就利用数组和各种控制结构,将这个艰巨任务完成了:
// 工资程序
#include <iostream>
using namespace std;  

int _tmain(int argc, TCHAR* argv[])
{
            // 定义数组的最大数据元素量,
                // 表示这个程序最多可以处理100 000个工资数据
                const int MAX = 100000;  
            // 定义数组,这个数组可以包含100000个int数据
                int nSalary[MAX];
               
                // 定义记录工资总值、最小值和最大值的变量
                // 因为min和max用于记录最小值和最大值,
                // 所以我们将其初始化为int数据的最大值和最小值
                int nTotal = 0;
                int min = INT_MAX;
                int max = INT_MIN;
                // 利用for循环逐个输入工资数据
                // 因为在for循环之外还需要用到i作为输入的数据个数,
                // 所以这里将for循环的初始化语句放到for循环之前
                int i = 0;
                for(; i < MAX; ++i) // 初始化语句留空
                {
                        // 提示用户输入
                        cout<<"请输入"<<i<<"号员工的工资(-1表示输入结束):"<<endl;
                        // 将输入的数据保存到数组的nSalary[i]数据元素
                        cin>>nSalary[i];
                       

                        // 利用条件结构,检查是否输入结束
                        if(-1 == nSalary[i])
                        {
                                // 输出统计结果
                                cout<<"工资输入结束,一共输入了"<<i<<"个工资数据。"<<endl;
                                cout<<"其中,"<<endl;
                                cout<<"最大值是"<<max<<endl;
                                cout<<"最小值是"<<min<<endl;
                                // 计算平均工资
                                float fAver = 0.0;
                                if(0 != i)
                                        fAver = (float)nTotal/i;
                               
                                cout<<"平均工资是"<<fAver<<endl;
                       
                                break;
                        }

                        // 累计工资总额,开始下一次输入
                        nTotal += nSalary[i];
                        // 判断本次输入是否是最大值或最小值
                        if(nSalary[i] < min)
                                min = nSalary[i];
                        if(nSalary[i] > max)
                                max = nSalary[i];
        }

// 获得一共输入了多少个工资数据
        int nCount = i-1;
// 构造无限循环进行工资查询
while(true)
        {
                int n = 0;
                // 提示用户输入
                cout<<"请输入要查询的员工序号(0-"<<nCount-1<<",-1表示结束查询):"<<endl;
                // 获取用户输入的员工序号并保存到n
                cin>>n;
                // 对用户输入进行检查
                if(-1 == n) // 是否结束
                {
                        // 查询结束,用break结束循环
                        cout<<"查询完毕,感谢使用!"<<endl;
                        break;
                }
                else if(n<0||n>=nCount) // 是否超出序号范围
                {
                        // 输入超出范围,用continue开始下一次循环
                        cout<<"输入的序号"<<n<<"超出了序号范围0-"
                           <<nCount-1<<",请重新输入。"<<endl;
                        continue;
                }
               
                // 输入合法,输出用户查询的员工工资
                cout<<"员工序号:"<<n<<endl;
                cout<<"员工工资:"<<nSalary[n]<<endl;

                }
               
                return 0;
}
利用C++中的条件和循环控制结构,这个工资程序不仅可以输入工资数据,还可以对工资数据进行查询。同时借助于数组保存和处理批量数据的强大威力,现在的工资程序,可以轻松处理成千上万的员工工资数据,小陈再也不用为如何处理更多的数据而发愁了。于是他赶紧把这个程序拿去让老板试试。老板试了试发现,这个工资程序不仅能够处理足够多的工资数据,能够对工资数据进行查询,同时还有非常好的用户操作提示,连三岁小孩子都会用。老板非常高兴,喜笑颜开地对小陈说:“干得不错,下个月,涨工资,啊哈哈哈…… ”听到这句话,小陈在心里偷着乐,心中暗想,能够处理大量数据,不过是数组的功劳,而统计与查询,也不过是条件和循环结构的综合运用。当初看似无法完成的艰难任务,现在利用C++几下就完成了,还得到了老板的夸奖。看来真是“学好C++,走遍天下都不怕”。

论坛徽章:
0
873 [报告]
发表于 2012-04-22 14:35 |只看该作者
幻の上帝 发表于 2012-04-22 13:29
回复 850# 陈良乔

我的英文确实挺差劲的
在这里,我就想表达原来的网站不稳定,查了一下,用了这个词
不知道更加地道的应该用哪一个词呢?

论坛徽章:
0
874 [报告]
发表于 2012-04-22 14:39 |只看该作者
幻の上帝 发表于 2012-04-22 13:21
回复 867# OwnWaterloo

这个,老实说不带什么期望。

不如我贴出来让大家帮我看看?

记得提醒我,如果我忘了

论坛徽章:
0
875 [报告]
发表于 2012-04-22 15:04 |只看该作者
回复 856# 陈良乔


论坛徽章:
0
876 [报告]
发表于 2012-04-22 15:04 |只看该作者
回复 875# 陈良乔

查得到这词?你没加工?
直接用形容词unstable/instable就行了。

论坛徽章:
0
877 [报告]
发表于 2012-04-22 15:06 |只看该作者
回复 857# OwnWaterloo


你这个说法不太妥当

编程本身就不应该是靠猜,靠臆断


很多时候必须要猜,要实验。但是绝不臆断。猜完实验就行,猜完不实验就是臆断。

当然,如果白纸黑字都摆在面前了,那就根本没猜这回事,那就是自己和自己过不去。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
878 [报告]
发表于 2012-04-22 15:09 |只看该作者
回复 879# walleeee

我就在那个回复里,就在那句话下面,就有一个实验的例子。
点评一下?
   

论坛徽章:
0
879 [报告]
发表于 2012-04-22 15:12 |只看该作者
回复 857# OwnWaterloo


显然他是想把bs拉来,而且他认准了bs会有最后这个回答,然后我们就没什么好说的,至少bs同意他一部分。

别忘了,外国人不想我们,你再逼急一点,他有很大概率就同意你了,或者干脆不踩你,滚蛋

论坛徽章:
0
880 [报告]
发表于 2012-04-22 15:14 |只看该作者
回复 861# 陈良乔




ps,不要踩他了
ow
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP