zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C++第11周项目2(7)参考——都要学C

C++项目 11 参考 要学
2023-09-11 14:15:56 时间

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565


【项目2:穷举法解决组合问题】先阅读例题,领会穷举法(意为“穷尽式列举”,也称枚举)的思想,然后自行选题进行解决,掌握这种程序设计的一般方法。

任务:利用穷举的方法解决下面的问题(选做一道即算完成任务,其他可以抽时间自由安排,多做会使你更聪明。)

(7)在下面的加法算式中,不同的符号代表不同的数字,相同的符号代表相同的数字。请设计程序求出"都、要、学、C"4个符号分别代表的数字。


 要 学 C

+ 都 要 学 C

________________

 2 0 0 8

提示:让计算机解奥数题。穷举"都、要、学、C"4个符号分别代表的数字(从0到9),然后进行组合,如果组合起来符合规则(不同的符号代表不同的数字,相同的符号代表相同的数字,且使等式成立),则为正解。

未优化前的代码 

#include iostream 

using namespace std; 

int main() 

 int dou,yao,xue,c,s;//变量这样取,比用i,j,p,q之类的要清晰得多

 for(dou=1;dou dou++)

 for(yao=0;yao yao++)

 for(xue=0;xue xue++)

 for(c=0;c c++)

 if((dou-yao)*(dou-xue)*(dou-c)*(yao-xue)*(yao-c)*(xue-c)!=0)//一个技巧:表示两两不同可以这样做

 s=4*c+3*xue*10+2*yao*100+dou*1000;

 if(2008==s) 

 cout "都:" dou " 要:" yao " 学:" xue " C:" c endl;

 return 0;

} 

运行结果



效率更高的解法 

#include iostream 

using namespace std; 

int main() 

 int dou,yao,xue,c,s;

 for(dou=1;dou dou++)

 for(yao=0;yao yao++)

 if(dou==yao) continue;//“都”和“要”的取值如果相同了,将不再考虑另外两字的取值,效果可观

 for(xue=0;xue xue++)

 if(xue==yao||xue==dou) continue; //理由同上

 for(c=0;c c++)

 if((dou-c)*(yao-c)*(xue-c)!=0)

 s=4*c+3*xue*10+2*yao*100+dou*1000;

 if(2008==s) 

 cout "都:" dou " 要:" yao " 学:" xue " C:" c endl;

 return 0;

}


视频:http://www.tudou.com/programs/view/InJLdkTDKSQ/


(下面是填好空的程序) (1)下面程序的功能是统计文本文件abc.txt中的字符个数,请填空将程序补充完整。
【项目2:洗牌】 在扑克牌游戏中,每次游戏开始都要求把54张牌重新排列一下,称为洗牌。试编写程序将一副扑克牌(用54个整数1~54表示)随机洗好后,顺序输出54张牌的情况。 参考界面: 参考解答(共4种,可作为程序阅读,品味用STL解决问题的方法,必要时,请查找相关手册) 解法1:初始化一个 vector,顺序加入所有牌,即整数1~54。然后从容器中随机
【项目-数组类模板】 在数组类的基础上,将之改造为类模板,以使数组中可以存储各种类型的数据。 template class T //数组类模板定义 class Array private: T* list; //用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数)
是一个函数模板的两个实例,其功能是将数组a中的前size个元素按从小到大顺序排列。试设计这个函数模板。 参考解答:
【项目1-分数类中的运算符重载】 (1)实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。
【项目-数组类运算的实现】 设计数组类Array,为了实现测试函数中要求的功能,请补足相关的函数(构造、析构函数)和运算符重载的函数。 实现策略提示:可以将测试函数中的语句加上注释,取消一句的注释,增加相应的函数,以渐增地实现所有的功能,避免全盘考虑带来的困难。
【项目 - 点-圆-圆柱类族的设计】 按以下的提示,由基类的设计和测试开始,逐渐地完成各个类的设计,求出圆格柱体的表面积、体积并输出并且完成要求的计算任务: (1)先建立一个Point(点)类,包含数据成员x,y(坐标点),实现需要的成员函数,并设计main函数完成测试; (2)以Point为基类,派生出一个Circle(圆)类,增加数据成员r(
贺利坚 烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学