资源预览内容
第1页 / 共33页
第2页 / 共33页
第3页 / 共33页
第4页 / 共33页
第5页 / 共33页
第6页 / 共33页
第7页 / 共33页
第8页 / 共33页
第9页 / 共33页
第10页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C+,程序设计,C+,基础与编程,1,编程练习一:自动出题器,2,编程练习二:判断字符串是否是,“,回文,”,3,编程练习三:数据排序,4,深入学习一:文字常量和常变量,5,深入学习二:,const,的用法,6,深入学习三:引用与指针常量,1,要求:,对两个随机的,100,以内的整数进行加法运算,共出,10,题,每题,10,分,最后给出得分。,1,编程练习一:自动出题器,基本思想:,(,1,)用循环实现,(,2,)产生两个,100,以内的随机数,(,3,)将用户输入的答案与正确答案比较,如果一致则在得分上加,10,分,否则不得分,(,4,)输出总分,2,1,编程练习一:自动出题器,程序:,#include,#include,using namespace std;,int,main(),int,x,y,a,b,s,=0;,for(int,i=1;i=10;i+),x=rand()%100;,y=rand()%100;,a=,x+y,;,cout,第,i,题:,x+yb;,if(a,=b)s+=10;,cout,您的总得分是:,s,endl,;,3,问题:,当程序第二次运行时,所出的题目与第,1,次一样。,1,编程练习一:自动出题器,原因:,随机数的序列总是和一个随机种子相关联,相同随机种子对应的随机数序列相同。,由于没有指定随机种子,因此程序运行后均以默认的随机种子产生相应的随机数序列。,解决方案:,使用,srand,库函数重新指定随机种子。,4,1,编程练习一:自动出题器,程序:,#include,#include,#include,using namespace std;,int,main(),int,x,y,a,b,s,=0;,srand(unsigned)time(NULL,);,for(int,i=1;i=10;i+),x=rand()%100;,y=rand()%100;,a=,x+y,;,cout,第,i,题:,x+yb;,if(a,=b)s+=10;,cout,您的总得分是:,s,endl,;,5,要求:,对于一个字符串,顺读与逆读是相同的字符。,定义一个子函数完成判断功能,若是回文,返回,1,,否则返回,0,。在主函数中根据返回值输出结果。,2,编程练习二:回文字符串判断,基本思想:,(,1,)计算字符串的长度,(,2,)第一个字符与最后一个字符比较,第二个字符与倒数第二个字符比较,(,3,)用循环实现,(,4,)考虑参数传递,6,程序:,#include,#include,using namespace std;,int,decidePalindrome(char,s),int,i=0,j;,j=strlen(s)-1;,while(i,j),if(si,!=,sj,)return 0;,i+;j-;,return 1;,int,main(),char str100;,cout,“,输入一个字符串:”,str,;,int,result=,decidePalindrome(str,);,if(result,),cout,“,该字符串是回文”,endl,;,else,cout,“,该字符串不是回文”,endl,;,return 0;,2,编程练习二:回文字符串判断,7,要求:,冒泡法,选择法,直接插入法,3,编程练习三:数据排序,8,冒泡法程序:,#include,#include,using namespace std;,void,bubblesort(int,data,int,n);,int,main(),int,a=20,40,-50,7,13;,int,n=,sizeof(a)/sizeof(int,);,bubblesort(a,n,);,for(int,j=0;j,n;j,+),cout,aj,t;,cout,endl,;,system(pause,);,void,bubblesort(int,data,int,n),int,temp;,for(int,i=0;in-1;i+),for(int,j=0;jdataj+1),temp=,dataj,;,dataj,=dataj+1;,dataj+1=temp;,3,编程练习三:数据排序,9,选择法程序:,#include,#include,using namespace std;,void,bubblesort(int,data,int,n);,int,main(),int,a=20,40,-50,7,13;,int,n=,sizeof(a)/sizeof(int,);,selsort(a,n,);,for(int,j=0;j,n;j,+),cout,aj,t;,cout,endl,;,system(pause,);,void,selsort(int,data,int,n),int,min,k,temp,;,for(int,i=0;in-1;i+),min=,datai,;k=i;,for(int,j=i+1;j,dataj,),min=,dataj,;,k=j;,temp=,datai,;,datai,=,datak,;,datak,=temp;,3,编程练习三:数据排序,10,练习,:,把输入的字符串逆序排列,并显示。,分析:,数据结构:,输入的字符串用字符数组存放。,算法要点:,逆序排列用交换算法,求出字符串最后一个字符的下标,,然后将第一个和最后一个交换,第二个和倒数第二个交换,,.,。,11,程序:,#include,using namespace std;,int,main(),char str80;,int,temp,i,j;,cout,Enter a string:,str,;,for(i=0,j=strlen(str)-1;ij;i+,j-),temp=,stri,;,stri,=,strj,;,/*,交换,i,j,两个元素,*,/,strj,=temp;,cout,nReversed,string:n“,str,;,12,练习,:,直接插入法排序,基本思想:,先将下标为,0,的元素作为已排好的元素,然后从下标为,1,的元素开始,依次把后面的元素按大小插入到前面已排好序的元素中,直到将全部元素插完为止,从而完成排序过程。,13,程序:,#include,using namespace std;,void,insertsort(int,data,int,n);,int,main(),int,a=20,40,-50,7,13;,int,n=,sizeof(a)/sizeof(int,);,insertsort(a,n,);,for(int,j=0;j,n;j,+),cout,aj,t;,cout,endl,;,system(pause,);,void,insertsort(int,data,int,n),int,nInsert,nPos,;,int,nPosMax,=0;,int,j;,for(int,i=1;i,n;i,+),nInsert,=,datai,;,nPos,=i;,for(j,=0;j=,nPosMax;j,+),if(nInsert,=,nPos,),dataj+1=,dataj,;,datanPos,=,nInsert,;,nPosMax,+;,14,void,insertsort(int,data,int,n),int,nInsert,j,;,for(int,i=1;i=0)&(nInsert,dataj,),dataj+1=,dataj,;,j-;,dataj+1=,nInsert,;,15,#include,#include,using namespace std;,int,const N=3;,int,main(),char lN30,temp30;,int,i,j,k,;,cout,请输入字符串,endl,;,for(i,=0;i,N;i,+),cin.getline(li,10,#);,for(i,=0;iN-1;i+),for(j,=0;j0),strcpy(temp,lj,);,strcpy(lj,lj+1);,strcpy(lj+1,temp);,for(i,=0;i,N;i,+),cout,li,;,system(pause,);,return 0;,练习,:,对字符串进行排序,16,文字常量(,literal constant,),又称为“符号常量”、“字面常量”,经编译之后写在代码区,是不可寻址的。,利用预编译指令,#define,定义的常量属于文字常量。,常变量(,constant variable,),常变量与其他变量一样被分配空间,是可以寻址的。,由普通变量在前面加,const,关键字定义的是常变量。,4,深入学习一:文字常量和常变量,17,常变量的值,常变量的值在初始化后不能改变,是在高级语言的语义层面上定义的,由编译器所做的语法检查进行保障。,但是,由于运行时常变量并不是放在只读内存中,而是和一般变量一样放在数据区,所以在运行时如果能获得常变量的地址,一样可以通过特殊的途径对它们进行修改。,4,深入学习一:文字常量和常变量,18,例子:,#include,using namespace std;,void,ShowValue(const,int,&i),cout,i,endl,;,int,main(),const,int,j=5;,int,*,ptr,;,void*p=(void*),ptr,=(,int,*)p;,(*,ptr,)+;,ShowValue(j,);,4,深入学习一:文字常量和常变量,19,例子:,#include,using namespace std;,void,ShowValue(const,int,&i),cout,i,endl,;,int,main(),const,int,j=5;,int,*,ptr,;,void*p=(void*),ptr,=(,int,*)p;,(*,ptr,)+;,cout,j,endl,;,4,深入学习一:文字常量和常变量,20,原因:,编译器在代码优化的过程中已经将,j,替换成了文字常量,5,。,另:,ShowValue,(),中的形参不用引用可以吗?,值传递、指针传递,4,深入学习一:文字常量和常变量,21,出于语法规则或代码优化的需要,在某些情况下文字常量和常变量会由编译器进行转换。,例子:,#include,using namespace std;,void,DefineArray(const,int,n),int,Bn,=;/,出编译错误,cout,B0,endl,;,int,main(),const,int,m=5;,int,Am,=;/,正确,cout,A0,endl,;,4,深入学习一:文字常量和常变量,22,const,的位置,const,的位置与语义之间的关系:,#include,using namespace std;,int,main(),int,i=5;,const,int,v1=1;,int,const v2=2;,const,int,*p1;,int,const*p2;,const*,int,p3;/wrong,int,*const p3=/wrong,int,*const p3;/wrong,int,*const p3=,const,int,*const p4=,int,const*,const,p5=,const,int,int,const ,5,深入学习二:,const,用法,23,const,的位置,(,1,),const,和数据类型结合在一起,形成所谓“常类型”。利用常类型声明或定义变量,就产生了常变量。,(,2,),const,用来修饰类型时,既可以放在类型的前面,也可以放在类型的后面,(,3,)用常类型声明或定义变量时,,const,只会出现在变量前面。,(,4,),const,和被修饰
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6