基本控制结构程序设计-枚举与.ppt
C+C+程序设计(第程序设计(第2 2版)版)第2章 基本控制结构程序设计-枚举与文件 如果一个变量只有几种可能的值,可以定义为枚举类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。定义一个枚举类型enum color_name red,yellow,blue,white,black;enum color_name color;(1)C+语言在编译时按顺序赋值为0,1,2,。(2)可以在定义枚举类型时,改变枚举元素的值。例如enum weekdaysun=7,mon=1,tue,wed,thu,fri,sat week1,week2;(3)枚举变量可以用来作比较判断if(week1=sun)break;2.7 2.7 枚举类型(枚举类型(enumenum)【例例319】口口袋袋中中有有红红、黄黄、蓝蓝、白白、黑黑五五种种颜颜色色的的球球若若干干个个,每次从口袋中取三种不同颜色的球,统计并输出所有的取法。每次从口袋中取三种不同颜色的球,统计并输出所有的取法。分分析析:每每个个球球的的颜颜色色都都是是这这五五种种颜颜色色之之一一,因因此此可可以以使使用用枚枚举举类类型型来来定定义义球球的的颜颜色色。假假设设所所取取三三个个球球的的颜颜色色分分别别为为i,j,k,每每个个量量都都有有5种种取取值值,其其中中ijk就就是是满满足足要要求求的的取取法法,因因此此用用穷穷举举算算法法可以解决。可以解决。/文件名:文件名:Ex3_19.cpp#include#includevoidmain()enumcolor_setred,yellow,blue,white,black;color_setcolor;inti,j,k,counter=0,loop;for(i=red;i=black;i+)for(j=red;j=black;j+)if(i!=j)/前两个球颜色不同前两个球颜色不同for(k=red;k=black;k+)if(k!=i&k!=j)/第三个球不同于第三个球不同于/前两个,满足要求前两个,满足要求counter+;coutsetw(15)counter;/*下面输出每种取法,一行为一种取法的三个颜色下面输出每种取法,一行为一种取法的三个颜色*/for(loop=1;loop=3;loop+)switch(loop)case1:color=(color_set)i;break;/第一个是第一个是icase2:color=(color_set)j;break;/第二个是第二个是jcase3:color=(color_set)k;break;/第三个是第三个是kswitch(color)casered:coutsetw(15)red;break;caseyellow:coutsetw(15)yellow;break;caseblue:coutsetw(15)blue;break;casewhite:coutsetw(15)white;break;caseblack:coutsetw(15)black;break;coutendl;/输出一种取法后换行输出一种取法后换行cout共有:共有:counter种取法种取法,是读操作)文件类型ofstream:支持将数据写入到输出文件的操作(输出是指以文件为信息的汇,信息从程序插入文件到达磁盘的过程,是写操作,相当于插入和插入运算符进行,也可以用读字符的get()和读字符串的getline()等函数。读写文件是在文件缓冲区中进行的。(4)关闭文件关闭文件时,系统把与该文件相关联的文件缓冲区中的数据写到磁盘文件中,以保证文件的完整。同时把磁盘文件名与文件对象之间的关联断开,防止由于误操作修改磁盘文件。例:ifile.close();ofile.close();#include#includevoidmain()inti,j,k;ofstreamofile;/定义输出文件定义输出文件ofile.open(d:myfile.txt);/打开文件打开文件ofile公鸡公鸡母鸡母鸡小鸡小鸡endl;for(i=0;i=20;i+)for(j=0;j=33;j+)k=100-i-j;if(5*i+3*j+k/3=100)&(k%3=0)/注意注意(k%3=0)非常重要非常重要ofilesetw(6)isetw(10)jsetw(10)k,它不能读它不能读/白字符包括空格,制表,白字符包括空格,制表,backspace和回车等)和回车等)if(ai=n)break;i+;ai=0;coutaijk;/由文件读入由文件读入if(ifile.eof()!=0)break;coutsetw(6)isetw(10)jsetw(10)kendl;/屏幕显示屏幕显示ifile.close();找一找D盘有无文件myfile.txt