2011级C++教学
迂者-贺利坚
烟台大学计算机学院教师,坚持教育情怀,持续进行教学改革。和学生并肩,与不良学风作斗争,为IT菜鸟建跑道,追求快乐与激情的大学。著书《逆袭大学:传给IT学子的正能量》,帮助迷茫中的大学生。
展开
-
第12周 报告1 --- 2-1000内的完数
任务1:(课本p86第20题)一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数。编程找出1000以内的所有完数。本文先给出我做的程序,后面加上对同学们做法的点评。【第一部分 我的报告】实验目的:学会使用循环控制语句解决实际问题,并强化注重效率的观念实验内容:用循环控制语句编写程序,完成表达式的计算/*原创 2011-12-09 20:24:27 · 4842 阅读 · 3 评论 -
第12周报告2-2 大奖赛计分程序
任务2-1:为大奖赛编制一个计分程序,成绩在0-10之间,输入错误时要能马上重新输入。评委人数在程序中的修改要尽可能方便。任务2-2:在任务2-1的基础上,输出当前选手的最后得分后,提示“按任意键计算下一位选手的成绩,退出请选择N:”如果输入的不是N或n,可以为下一位选手计算成绩。运行结果如图所示,将此任务写入报告,体会:如果一个大任务难于直接完成,可以先完成核心任务,再逐渐完善。第一原创 2011-12-09 20:31:57 · 2921 阅读 · 0 评论 -
第13周报告1:用函数完成分段数学函数的求解
任务1:编写函数,求解分段函数的值,并设计能够满足路径覆盖的测试用例完成测试。 0 当xf(x)= (x-0.3)/(0.8-0.3) 当0.3≤x≤0.8时 1 当x>0.8时实验目的:学会使用函数编程,以及设计原创 2011-12-09 20:47:07 · 2988 阅读 · 0 评论 -
第14周报告2:使用函数解决实际问题
任务2:(函数及数组的简单应用) 在数组score中将要存储某小组C++程序设计的成绩,请设计完成下面功能函数,并将它们组合成一个完整的应用:(1)输入小组人数及成绩;(2)输出该小组的最高成绩、最低成绩、平均成绩和成绩的标准偏差;(3)输出考得最高成绩和最低成绩的同学的人数及对应的学号(设成绩对应的下标即学号,可能有相同的成绩)实验目的:学会使用函数解决实际问题实验内容:用函原创 2011-12-09 21:43:51 · 3033 阅读 · 1 评论 -
C++程序设计课程同步项目——简单程序设计任务
如果没有用过自动取款机,先用你的银行卡取一次钱去吧,权当作调研。 我们首先插卡,输密码。做纯软件模拟,我们认为卡已经插好了,永久忽略。 你的程序要支持下面的工作: 屏幕输出:XX银行欢迎您(例如,贺氏银行欢迎您,下辈子一定做梦开银行。) 请输入密码: 用户输入密码(真正的自动取款机上,输入的密码显示为*,没有让人看见的,此处先不作处理。暂时用整数当密码,实际应该用字符原创 2011-12-09 07:41:41 · 5028 阅读 · 9 评论 -
C++程序设计课程同步项目——选择结构程序设计任务(一)
在上一次任务的基础上,完善一些环节 你的程序要支持下面的工作: 用#define或const定义常量PASSWORD,作为银行卡的密码(银行卡的密码可不是这样,它要分别记住各个帐户的密码,我们现在认为所有卡都这个密码)。 屏幕输出:请输入密码 用户输入密码(输入的密码仍然直接显示) 判断输入的密码是否正确,如果正确,继续下面的工作,否则退出程序,提示:“你这个原创 2011-12-09 07:43:57 · 4477 阅读 · 1 评论 -
C++程序设计课程同步项目——循环结构程序设计项目任务一
1、在输入密码环节,实现有限次密码输入的限制,如果三次都没有输入正确,程序将直接退出,不允许用户继续操作。 不正确=true; do{ 输入密码; 次数++; if(相符)不正确=false; }while(不正确且尝试次数不足3次); if(密码输入正确) { 重复多次完成业务功能; } els原创 2011-12-09 07:53:44 · 3564 阅读 · 1 评论 -
C++程序设计课程同步项目——循环结构程序设计项目任务二
用两个变量account1和account2,以及pwd1和pwd2两组变量分别表示两个客户和他们的密码,balance1和balance2分别表示这两个用户的余额(开始靠近真的银行了,得为多个用户服务,两个用户的完成后,你可以改造成三个用户的。这样做比较麻烦,要4个、5个用户,乃至几百万用户该如何做?也需要多一个用户就改一次程序吗?学习了数组,我们会有好的解决办法,学习结构体,还有更好的办法,到原创 2011-12-09 07:55:16 · 3356 阅读 · 1 评论 -
C++同步项目——结构化程序设计之全部任务
好长时间没有写同步项目了,很着急,很自责。原因有两点:(1)深入做下去,需要用到字符串、数组、结构体、文件等等,单独地用其中一个,有些地方显得有些太迁就;(2)近日学的一些内容也有大量的练习可做,不像刚开始,急需要一些看似“实用”的项目给大家提神。 再次决心将这个任务写下去,就将任务一下子说透吧。最近大家的进步已经能够接受我的这种“和盘托出”了。从技术角度,有了函数,写程序变成一种可组合的事原创 2011-12-09 08:00:45 · 4009 阅读 · 0 评论 -
第11周 上机报告 2:英尺到米的转换表
题目要求:编程序生成一张从英尺到米的转换表(1米大约等于3.28英尺),以方便工厂里工人师傅使用。输出形式如下图所示,第i行第j列的值vij代表i*10+j英尺对应的米数。每输出10英尺的转换表后,另起一行输出。I2M 0123j56789原创 2011-12-09 08:38:27 · 3844 阅读 · 4 评论 -
第12周报告3 --- 计算存款利息
任务3:输入存款金额并选择存款种类,计算出利息(不计利息税)。如果是活期存款,需要补充输入天数。利息=金额×年利率×存期(单位:年,活期一年按360天计)。要求使用switch语句,根据选择的存款种类,确定利率和存期后计算。利率使用2011年7月7日公布的最新年利率:活期 0.50%,3个月 3.10%,6个月 3.30%,一年 3.50%,二年 4.40%,三年 5.00%,五年 5.50%原创 2011-12-09 20:39:34 · 3153 阅读 · 2 评论 -
第15周报告2: 操作字符数组
任务2(字符数组和字符串):给出一个字符数组char str[],在程序中赋初值为一个句子,例如char str[]=”he threw threefree throws”,自编函数完成下面的功能:(1)求出字符数组中字符的个数(从第一个字符读起,直到读到’\0’结束计数)(对于例句,输出为26);(2)计算句子中各字符出现的频数算法提示:(a) i=0(b)取字符串中的第i个原创 2011-12-09 21:53:50 · 3106 阅读 · 0 评论 -
C++程序设计课程同步项目开发——前言
在学习中,总是想要些成就感的。当你没有做过一些事情的时候,总是不能知道所学知识究竟能干些什么。一些人可以淡定地按老师的指点,扎实地学习基本知识,有些人则不能。无论如何,如果在课堂学习过程中,就可以完成一个象样的项目,那是一件很酷的事情,对能淡定地学下来的同学,也将更有激情。 基于这种想法,老贺想“闭门造车”,和大家随着C++程序设计课程的进展,也做个“项目”出来。这纯属课外安排,愿者自来。中原创 2011-12-09 07:38:41 · 5442 阅读 · 11 评论 -
C++程序设计课程同步项目——选择结构程序设计任务(二)
在上一次任务的基础上,改进用户选择功能后的工作 包括(1)用函数优化程序的结构;(2)完成取款并计算利息的工作。 函数的有关知识在第4章,可以提前预习。不过,凭在“初识程序设计”部分的几个例子,模仿着也能写出相关的要求。模仿是一种非常重要的学习方法,尤其适用于没有“系统”学习之前的探索。挑战一下,尝试这种有效的学习方法。 显示功能选项 1.查询 2.取款原创 2011-12-09 07:47:18 · 3919 阅读 · 7 评论 -
第17周报告1:结构体数组
任务:score.txt中是一些同学的学号、姓名、C++、高数、英语成绩,定义一个学生成绩的结构体数组,其中的成员包括学号(char num[12])、姓名(name)、三门课的成绩(grade)、总分(score))。建议将某些功能设计成自定义函数。(1)从文件中读出数据,存放到你定义的结构体数组中;(2)求出每名同学的总分(可以读入过程中“顺便”计算);(3)按总分排序(降序);原创 2011-12-19 11:40:27 · 4140 阅读 · 0 评论 -
C++学习、成长记录(2011-2012第一学期第17周)
尽管已经期末了,看同学博文的感觉越来越好(尽管这一周难声一片)。决定以后每周将课程中的一些故事记录下来,尤其是同学感言部分。不用说再过多些日子,刚刚看过都觉得亲切和慰藉。※ 链表如一条链子把所有的内容都连起来了,就像老鹰抓小鸡,抓到了鸡妈妈,鸡宝宝一个都不落!【好狠耶!】※ 我发现,用分号成了一种习惯.....【一切都会习惯,那就是感觉,日久渐浓 】※ 这次的作业又补上了以前的原创 2011-12-19 11:00:59 · 2866 阅读 · 0 评论 -
第15周报告1: 冒泡排序
任务1:(数组的排序)编函数,完成冒泡排序。要求不能改变下面的main函数。重点体会:(1)排序算法;(2)数组名作形式参数,将能改变作为实际参数的数组的值,实际参数传递给形式参数的是数组的地址值,也是传值;(3)形式参数中不指定数组大小,实际数组的大小也一并作为参数传递。实验目的:学会冒泡排序算法实验内容:实现冒泡排序算法,并将之定义为一个函数/* 程序头部注释开始原创 2011-12-09 21:47:31 · 3076 阅读 · 0 评论 -
C++程序设计三周教学记录
从第五周到第八周,除去第七周的国庆,C++共上了三周的课。大一新生三周能学会些什么?他们已经能输出漂亮的星号图了。身为老师的我,和这群大孩子一样高兴。同学们的努力令我感动,自己的不少非常规的想法和做法在他们的配合下正在起着作用,我已经感觉到,他们中的绝大多数将就此找到感觉,不光是专业学习,而是整个大学生活,在忙碌和不断出现的困难中,在快乐和不断冲破束缚的过程中,享受大学带来的一切。原先安排第四原创 2011-12-10 10:19:09 · 2652 阅读 · 0 评论 -
第13周报告2:定义自定义函数,计算sin和cos的近似值
任务2:先听故事,再编程序。故事是这样的:话说sin和cos是一对夫妇。一天,sin去听相声了,cos在家。过了一会,有人敲门,cos开门一看,是一个不认识的多项式函数。cos问:你是谁啊?他说:我是你的老公sin啊。cos说:你不是去听相声了吗?怎么成这幅摸样了?他说:是啊,太乐了!故事讲完了。不懂吗?好好学高数。否则,挂了不冤。 编程序求出sin(π/2)、cos(87°)程序原创 2011-12-09 21:30:07 · 7707 阅读 · 0 评论 -
第13周报告3:编制一个三角函数表
任务3:(函数的嵌套)编制一个三角函数表,要求在main()函数中调用show_sin_table(min_angle, max_angle),显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值。要求不能用数学库函数,将任务2中的mysin函数拷贝到这个程序中,用于计算sin值。例如show_sin_table(0, 90)可以显示出所有0到90度的正弦值。为取原创 2011-12-09 21:34:33 · 6108 阅读 · 0 评论 -
第14周报告1--函数的递归
任务1:(函数的递归) 用递归函数求f(n)=13+23+…+n3,要求先将f(n)数学表达式表示成递归的形式,然后再编程序实现。实验目的:学会使用函数的递归实验内容:用递归函数求解表达式/* 程序头部注释开始* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院* All rights reserved.* 文件名称: fun.cpp原创 2011-12-09 21:39:26 · 2001 阅读 · 0 评论 -
第15周报告3: ASCII文件的操作
任务3:从文件salary.txt中读入500名工人的工资,全部增加100元后进行排序(好事,涨工资了),将排序后的结果在屏幕上输出,并保存到文件ordered_salary.txt中。(salary.txt可以从BB平台下载)实验目的:学会ASCII文件的操作实验内容:从文件中读入数据,排序并输出到另外一个文件中/* 程序头部注释开始* 程序的版权和版本声明部分* Cop原创 2011-12-09 21:59:29 · 2854 阅读 · 0 评论 -
第17周报告2:动态链表
任务:数据来自score.txt,在程序中建立一个动态链表:每读入一个同学的数据,计算总分,分配结点的存储空间并赋值,并建立起前后相链的关系。在建立链表的同时,要进行统计,以便于求出所有同学总分的平均成绩。动态链表建立后,从头结点开始,依次输出所有总分高于平均总分且没有挂科的同学的学号、姓名、总分。 实验目的:学会动态链表的建立和输出实验内容:动态链表的定义、建立、输出 /* 程序原创 2011-12-19 15:06:36 · 3185 阅读 · 0 评论 -
第16周报告1:冒泡排序指针版
题目:(数组的排序) 按模板中的要求,用指向数组的指针变量作为形式参数编写函数,完成冒泡排序。重点体会:(1)冒泡排序算法;(2)用指向数组的指针变量作为形式参数,用数组名(即数组的地址)作为实际参数,函数中对于形参的改变实质上也就是对实参对应内存单元的改变;(3)形式参数中不指定数组大小,实际数组的大小也一并作为参数传递。详见 指导书实验目的:学会冒泡排序算法实验内容:实现冒泡排原创 2011-12-13 21:48:30 · 5028 阅读 · 0 评论 -
第18周报告2:二维数组
题目:定义一个8行8列的二维数组a[8][8](1)(模板中已经完成)利用产生随机数的系统函数为其置初值(1-50之间),可能的取值如右图所示;(2)输出从左上到右下对角线上的元素的值,如对右图而言,输出为48 34 12 31 40 42 34 45;再输出从右上到左下对角线上的值;(3)将此数组视为“扫雷”游戏的界面(实际上扫雷游戏的界面一般就用二维数组保存其界面),通过键盘输入一原创 2011-12-24 22:14:28 · 2850 阅读 · 0 评论 -
第18周报告1:指向字符的指针
任务:有一字符串,包含n个字符。实现函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串,当m值大于str1的长度n时,输出空字符串。实验目的:学会指针访问字符数组实验内容:从字符数组中取出指定位置开始的子符串/* 程序头部注释开始* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生* All rights reser原创 2011-12-24 22:10:26 · 3139 阅读 · 5 评论 -
C++学习、成长记录(2011-2012第一学期第18周)
【18周任务篇】二维数组的应用还是比较简单的,而在实际编写中,出现了将==写成了=的错误。找清数组间的关系,本项目会简单许多。理解原理是第一位,而找好算法更重要。明白用循环还是判断,会让事情简单很多。指针真的是很神奇,将实际参数传递给形式参数,在函数的调用过程中,通过改变指向的地址中的数值,其实实现了实际参数与形式参数的双向传递,这是其他变量所不具被的独特能力,当然也正是因为此,它才相原创 2011-12-25 21:00:46 · 3145 阅读 · 0 评论 -
写给计114-34的同学——IT雏鸟即将起飞
每周2-3个必做题目,一堆可选题目。调好一个程序,发布一篇博文。少部分同学享受着选做题,少部分同学不能按期完成基本要求,大部分学生在完成基本要求都觉得已经尽力。这是整个学期我们学习C++的状况。十年前讲过C语言后,就再也没有给大一的同学上过课,讲编程技术也没有过“零基础”的前提。十年后,在几番波折之后,再次有机会面对大一的学生讲程序设计。此时,对我而言,教学手段更熟练,教学原创 2011-12-27 07:42:19 · 4185 阅读 · 2 评论 -
考完了,寒假开始了
刚刚监考完C++课。 事前见过题目,觉得我的学生没有问题。对于小题,我知道同学们做题的能力,他们手里也有不少习题,考前猛做着呢。 重点还在编程题,我知道递归的题目有不少人还没有转过弯子来,看谁先悟到吧。而其他题目甚至只配作以往实验任务中的一部分,脑子转一下就能过来。 但看学生做题,急。好几个同学编程题没做完,也不再努力做了,恨不得替他们上阵。这两个小时,过得很快,和监考其他与己在原创 2012-01-06 12:15:02 · 2179 阅读 · 1 评论 -
谈迭代方法与递归方法
(一)迭代法迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。迭代算法利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值,是用计算机解决问题的一种基本方法。迭代常用循环实现。例1:分析下面的程序的功能int main(void){ int x;原创 2011-12-24 22:20:58 · 4330 阅读 · 0 评论 -
搬家到CSDN的同学要用好一个好功能
已经见到了一位同学搬家CSDN的博客(http://blog.csdn.net/kamiming)。提醒大家用好其中的一个功能:插入代码。先上图: 图中的工具栏上,如图位置的图标表示插入代码,可以选择多种编程语言。将代码(包括注释)都粘贴到小框中后点确定。结果是……,再上图: 很漂亮的代码。 到了CSDN,就是为了更好地展示我们的成果,将“卫生”搞好一些。搬家时,原创 2012-01-15 21:06:21 · 4442 阅读 · 4 评论 -
第11周 上机报告 1:累加
上机题目:用各种方法求f=1-1/2!+1/3!-...+1/9!,并且要写在一个程序中。 目的在于锻炼各种循环。 提倡大家优先用for循环。计数型循环很方便,要习惯。 看题目,有点难度。题目显然将大家难住了。老师有责任,给大家跨度大了。大家要快进步,中间的招数你都领教过了,只不过现在要综合起来。 我带着大家把这个问题分解一下,由易到难解出来。 *******原创 2011-12-09 08:14:59 · 3894 阅读 · 1 评论 -
第3周-任务4-设计立方柱类
【题目】(改自教材P262第6题)仿照你阅读过的程序,编写基于对象的程序,求3个长方柱的体积。数据成员包括长(length)、宽(width)、高(heigth)、体积,要求用成员函数实现下面的功能:(1)由键盘输入3个长方柱的长、宽、高;(2)计算长方柱的体积(volume)和表面积(areas);(3)输出这3个长方柱的体积和表面积;【说明】这是第一个设计性质的程序,需原创 2012-03-06 16:08:10 · 3048 阅读 · 1 评论 -
第3周-任务2-改造坏程序
题目:(教材P261页第1题)上机前在纸上先找出错误,然后上机调试,使之正常运行。运行时输入时分秒,检查输出是否正确。要求:在实验报告中,在改动处加注释说明理由#include using namespace std;class Time{ void set_time(void) ; void show_time(void); int hour; int minute;原创 2012-03-06 08:35:01 · 2611 阅读 · 2 评论 -
第16周报告2:求奇因子
问题:编写函数 int fun(int x, int *pp)。其功能是,求出x的所有奇数因子,并按照从小到大的顺序放在pp指向的内存中,函数返回值为这些整数的个数。若x的值为30, 数组中的数为1,3,5,15,函数返回4。 详见 实验指导书实验目的:学会利用指针解决问题实验内容:求出一个数所有的奇数因子 /* 程序头部注释开始 * 程序的版权和版本声明部分 * Copyri原创 2011-12-13 22:00:06 · 2878 阅读 · 0 评论 -
挂了羊头就要卖羊肉
昨天(2012.3.8)在课堂上郑重地向同学们挑明了目前的一个严峻事实:不少同学有了自己笔记本电脑,但按时提交报告的却急剧下降。还有一个好消息是,学院为同学增加了自由上机的机会。但显然,这一条件也没有反映出其应有的效果。 好条件哪去了?无须说破,人人明白。自己的电脑,在宿舍能够方便地上机,利用得好,这是你在学习上的一个好的条件,利用得不好,则绝对是致命的毒酒。 有同学通过文字做了检讨,原创 2012-03-09 09:17:29 · 4297 阅读 · 3 评论 -
第6周-任务1-使用常对象的一个典型错误
【题目】下面的程序存在编译错误。有两种方法可以修改,请给出这两种修改方案,在报告中说明你倾向于用哪一种?为什么?处理此类问题的原则是什么?class C{private: int x; public: C(int x){this->x= x;} int getX(){return x;}};void main(){ const C c(5);原创 2012-03-27 05:14:21 · 2779 阅读 · 0 评论 -
第6周-任务4-用点类作成员的三角形类
【题目】设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。提示:(1)这个问题需要用到两个类,顶点类参照任务3中的CPoint类;(2)三角形类参考下面CTriangle类的声明;(3)充分利用CPoint类中已有的代码实现;(4)关于三条边的处理,可以增加三个私有属性,在初始化时求出来备用,也可以在需要时计算得到。class CTri原创 2012-03-27 06:19:55 · 3324 阅读 · 3 评论 -
第6周-任务5-多文件组织三角形类
【题目】将任务4(第6周-任务4-用点类作成员的三角形类)中的的解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。【要点】对多个文件一个项目的组织方法的一般原则是:(1)若干个功能相近的类的声明放在一个头文件中;(2)每个类的成员函数分别放在一个.cpp文件中;(3)如果有main()函原创 2012-03-27 08:01:58 · 2670 阅读 · 0 评论 -
第3周-任务3-扩充Time类
【题目】阅读、运行程序后,按要求增加类的功能要求:请在原类基础上,增加下列成员函数,要求前三个设计成内置函数,在main()数中增加适当的调用以展示扩充类定义后的功能(最好能一次运行)。add_a_sec() //增加1秒钟add_a_minute() //增加1分钟add_an_hour() //增加1小时add_seconds(int) //增加n秒钟add_min原创 2012-03-06 09:30:06 · 2955 阅读 · 9 评论