除了ppt,还写了一个例子程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
// PlayWithC++_Lesson1.cpp : 定义控制台应用程序的入口点。 /********************************************************** 程序作用:一起玩C++第一课,基本的编程知识 程序作者:郭明. 创建时间:2012-10-6 最终修改:2012-10-6 **********************************************************/ #include "stdafx.h" #include <time.h>//time() #include <windows.h>//HANDLE #include <iostream> #include <vector>//vector #include <algorithm> //sort #include <deque>//deque using namespace std; // int _tmain(int argc, _TCHAR* argv[]) // { // return 0; // } /*_tmain()的说明***************************** _tmain()是为了支持unicode所使用的main一个别名而已 int argc //参数个数 char *argv[] //字符串数组,字符串数组的每个单元是char*类型的,指向一个c风格字符串。 _TCHAR类型是宽字符型字符串,和我们一般常用的字符串不同,它是32位或者更 高的操作系统中所使用的类型. 参考:http://baike.baidu.com/view/3478231.htm *****************************************/ //!函数声明----------------------------------- int Add(int val1,int val2); float Add(float val1,float val2); int Add(int val1,int val2,int val3);//函数重载 void changeColor(int F=0,int B=0);//最后有介绍 bool compareInt(int val1,int val2);//sort void swapInt(int &val1,int &val2);//引用 //!主函数------------------------------------- int main() { for(int i = 0 ; i < 100 ; i++); //for可以代替几乎所有的while循环结构 int flag = 10; //为了显示更清晰,"="左右加了空格 //如果条件很多可以省去一些空格 //这里把常量放在等号左侧,避免flag=10这种本应该判断是否一样,结果变成赋值操作的错误发生 if( 10 == flag ) { //注意代码对齐和布局 cout<<"first lesson"<<endl; } else { ; } //位运算 cout<<"--------位运算-----"<<endl; cout<<"与运算,3&5 =" <<(3&5)<<endl; cout<<"或运算,3|5 =" <<(3|5)<<endl; cout<<"异或运算,071^052 =" <<(071^052)<<endl; cout<<"取反运算,~025 =" <<(~025)<<endl; cout<<"左移运算,5<<1 =" <<(5<<1)<<endl; cout<<"右移运算,5>>2 =" <<(5>>2)<<endl; //函数的调用 cout<<"--------add()函数调用-----"<<endl; int x = 3,y = 7; int ans = Add(x,y); cout<<"current ans is:"<<ans<<endl; int z = 10; ans = Add(x,y,-z); cout<<"current ans is:"<<ans<<endl; //引用做形参 cout<<"--------引用做形参-----"<<endl; cout<<"current x is:"<<x<<",and y is:"<<y<<endl; swapInt(x,y); cout<<"after swap,now x is:"<<x<<",and y is:"<<y<<endl; //rand()函数 changeColor(11,0);//绿色 cout<<"--------rand()函数用法-----"<<endl; srand(time(0)); for(int i=0;i<3;i++) { int iTemp = rand()%100; cout<<"rand number "<<i+1<<" is:"<<iTemp<<endl; } changeColor(7,0);//绿色 //字符相关 cout<<"--------字符-----"<<endl; int iTemp=atoi("1234"); cout<<"字符串1234变成数字:"<<iTemp<<endl; cout<<"判断是否是数字:"<<isdigit('1')<<endl; cout<<"判断是否是数字:"<<isdigit('+')<<endl; cout<<"判断是否是数字:"<<isdigit('3')<<endl; cout<<"判断是否是数字:"<<isdigit('@')<<endl; char strNum[2]; strNum[0]='8'; strNum[1]='7'; iTemp = atoi(strNum); cout<<"a '87' string change to num:"<<iTemp<<endl; //容器 cout<<"--------容器-----"<<endl; vector<int> vTemp;//声明 vTemp.push_back(10);//加载数据 vTemp.push_back(-100); vTemp.push_back(125); vTemp.push_back(45); cout<<"排序前:"<<endl; vector<int>::iterator it_start=vTemp.begin(); vector<int>::iterator it_end=vTemp.end(); iTemp = 0; //开始遍历 for(vector<int>::iterator it=it_start;it!=it_end;it++,iTemp++) cout<<"vTemp["<<iTemp<<"]="<<*it<<endl; //进行排序 sort(vTemp.begin(),vTemp.end(),compareInt); cout<<"排序后:"<<endl; //另一种遍历方法 for(int i=0;i<vTemp.size();i++) cout<<"vTemp["<<i<<"]="<<vTemp[i]<<endl; vTemp.insert(vTemp.begin()+1,2012);//插入到第2个 vTemp.erase(vTemp.end()-1);//删的是最后1个----等效于vTemp.pop_back(); cout<<"插入、删除后:"<<endl; //另一种遍历方法 for(int i=0;i<vTemp.size();i++) cout<<"vTemp["<<i<<"]="<<vTemp[i]<<endl; /*记住数组的下表都是从0开始的,这和matlab等语言不同*/ //清除当前结果 vTemp.clear(); return 0; } //!函数定义------------------------------------- //整数加法,2个参数 int Add(int val1,int val2) { return val1+val2; } float Add(float val1,float val2) { return val1+val2; } //整数加法,3个参数 int Add(int val1,int val2,int val3) { //return Add(Add(val1,val2),val3);//效果一样 return val1+val2+val3; } void changeColor(int F,int B) { HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hCon,F|B); } //changeColor(2,0)绿色 //changeColor(10,0);亮绿 //changeColor(7,0);原始颜色 //changeColor(15,0);亮白 //changeColor(12,0)红色 //changeColor(11,0);湖蓝 //changeColor(158,0);蓝底黄字 //changeColor(110,10);//金底黄字 //changeColor(13,0);粉红 /*----changeColor介绍----------------------------------- /*使用了windows.h中的二个函数GetStdHandle和SetConsoleTextAttribute。 HANDLE GetStdHandle( DWORD nStdHandle ); GetStdHandle()返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕 缓冲区的句柄. 其参数nStdHandle的值为下面几种类型的一种: STD_INPUT_HANDLE 标准输入的句柄 STD_OUTPUT_HANDLE 标准输出的句柄 STD_ERROR_HANDLE 标准错误的句柄 函数SetConsoleTextAttribute()的作用是在console程序设置输入或输出文本的文本颜色和背景颜色. 只有在此函数设置后才能显示彩色的文本.其函数原型为: BOOL SetConsoleTextAttribute( HANDLE hConsoleOutput, // console 屏幕缓冲区的句柄 WORD wAttributes // 文本及背景的颜色 ); 最后只要调用这个函数,便能方便改变屏幕当前的前景色和后景色。 --------------------------------------------------*/ bool compareInt(int val1,int val2) { return val2>val1; } void swapInt(int &val1,int &val2) { int temp = val1; val1 = val2; val2 = temp; } /*vector vs deque vector适合于插入和删除操作都在尾部进行的情况。 deque-----double-ended-queue 以下情形,最好采用deque: 1)需要在两端插入和删除元素。 2)无需引用容器内的元素。 3)要求容器释放不再使用的元素。 deque的各项操作只在以下几点和vector不同: 1)deque不提供容量操作(capacity()和reserve())。 2)deque直接提供函数,用以完成头部元素的插入和删除(push_front()和pop_front())。 */ /*关于引用 当大型对象被传递给函数时,使用引用参数可使参数传递效率得到提高, 因为引用并不产生对象的副本,也就是参数传递时,对象无须复制。 */ |
程序包含内容有点杂乱,但都是很重要的方法。第一次课程为了培养良好变成习惯,以及看看大家究竟掌握多少、常犯那些毛病。
下面再把本次题目要求列出,这个题目应该说有一定难度,但不是很难。
作业一:计算24点
加减乘除,对1~13的4个数进行24点计算
比如给出:4 2 3 1
用户输入:4*2
返回:当前结果:8
用户输入:*3
返回:当前结果:24
用于输入:/1
返回:最终结果:24,并通知成功,成功次数加一,如果错误重新开始游戏
输入:c(表示clean),则清除刚才输入,重新解决这个问题
输入:r(表示restart),则清除所有刚才输入,重新生成题目
输入:s(表示show),显示当前赢几局,输几局。
输入:e(表示end),则退出游戏
输入:g(表示give up),显示结果,失败次数加一
还有可能需要其他的输入指令,自己考虑添加
可能用到的方法:随机数(1~13),排序,输入输出,字符判断是数还是运算符。
注意:
0.要有游戏介绍
1.生成题目时系统能判断题目是否可解,不可解重新生成。
2.输入不存在的数或者不能再使用的数时,提示错误,继续游戏。(错误指令也要考虑)
3.高级要求1,使用彩色显示
4.高级要求2,加入排行榜功能
5.高级要求3,用户输入2个数字,系统补充2个数字,补充完毕用户开始玩
我还给了他们我以前作业的参照,作业内容我写了300行代码,对于他们来说应该是个很大的挑战。给了2个星期,应该说,也是很充足的。但愿他们能学到些东西,我也能好好梳理自己的知识。