双线性-插值的图像缩放算法的研究与实现(常用版).doc

上传人:可****阿 文档编号:91824823 上传时间:2023-05-27 格式:DOC 页数:33 大小:891.04KB
返回 下载 相关 举报
双线性-插值的图像缩放算法的研究与实现(常用版).doc_第1页
第1页 / 共33页
双线性-插值的图像缩放算法的研究与实现(常用版).doc_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《双线性-插值的图像缩放算法的研究与实现(常用版).doc》由会员分享,可在线阅读,更多相关《双线性-插值的图像缩放算法的研究与实现(常用版).doc(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、双线性 插值的图像缩放算法的研究与实现(常用版)(可以直接使用,可编辑 完整版资料,欢迎下载)双线性 插值的图像缩放算法的研究与实现一、引言数字图像处理的对象因其涉及到社会的各个领域,倍受到越来越多的关注,而图像缩放作为数字图像处理中的基本操作尤为重要,在社会的很多领域都需要对图像进行放大和缩小。利用VC+的MFC类库中的StretchBlt函数可以很容易的实现图像放大和缩小,但是当放大或缩小的比率比较大时就容易出现失真现象,因此必须进行改进。本文提出了一种双线性插值算法,用以改进图像的缩放质量。二、空间变换图像的空间变换,也称几何变换或几何运算,包括图像的平移、旋转、镜像变换、转置、缩放等。

2、几何运算可改变图像中各物体之间的空间关系,这种运算可以被看成是将各物体在图像内移动。空间变换可如下表示:设(u,v)为源图像上的点,(x,y)为目标图像上的点,则空间变换就是将源图像上(u,v)处的颜色值与目标图像上(x,y)处的颜色对应起来。(u,v)?-(x,y)并具有以下关系:x=X(u,v),y=Y(u,v)(即由(u,v)计算对应点(x,y)(1.1)或u=U(x,y),v=V(x,y)(即由(x,y)反求对应点(u,v)(1.2)其中X(u,v)、Y(u,v)、U(x,y)、V(x,y)均为变换。由(1.1)对应的变换称作向前映射法也叫像素移交法,而由(1.2)对应的变换称作向后映

3、射法也叫像素填充法,向后映射法是向前映射法的逆。对于向前映射法来说,由于许多输入像素可能映射到输出图像的边界之外,所以,向前映射法有些浪费,而且每个输出像素的灰度值可能要由许多输入像素的灰度值来决定,因此要涉及多次运算。如果空间变换中包括缩小处理,则会有四个以上的输入像素来决定输出像素的灰度值;如果含有放大处理,则一些输出像素可能被漏掉。而向后映射算法是逐像素、逐行地产生输出图像。每个像素的灰度级由最多四个像素参与的插值所惟一确定,虽然向后映射法比向前映射法要复杂,但是向后映射法对于一般的应用却具有更为现实的意义。本文就是采取了向后映射法来实现图像缩放的。三.双线性插值最简单的插值算法是最邻近

4、插值,也称为零阶插值。它输出的像素灰度值就等于距离它映射到的位置最近的输入像素的灰度值,最邻近插值算法简单,在许多情况下都能得到令人满意的结果,但是当图像中包含像素之间灰度级有变化的细微结构时,最邻近算法会在图像中产生人为加工的痕迹。双线性插值算法计算量比零阶插值大,但缩放后图像质量高,不会出现像素值不连续的情况,这样就可以获得一个令人满意的结果。双线性插值是利用了需要处理的原始图像像素点周围的四个像素点的相关性,通过双线性算法计算得出的。对于一个目的坐标,通过向后映射法得到其在原始图像的对应的浮点坐标(i+u,j+v),其中i,j均为非负整数,u,v为0,1区间的浮点数,则这个像素的值f(i

5、+u,j+v)可由原图像中坐标为(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1),其中f(i,j)表示源图像(i,j)处的像素值,以此类推,这就是双线性内插值法。如图1所示,已知(0,0)、(0,1)、(1,0)、(1,1)四点的灰度,可以由相邻像素的灰度值f(0,0)和f(1,0)在X方向上线性插值求出(x,0)的灰度f(x,0),由另外两个相邻像素f(0,1)和f(1,1)在X方向上线性插值可求出(x,1

6、)的灰度f(x,1),最后由f(x,0)、f(x,1)在Y方向上进行线性插值就可以得到(x,y)的灰度f(x,y)。screen.width-333)this.width=screen.width-333四.算法1.算法假设原始图像大小为size=mn,其中m与n分别是原始图像的行数与列数。若图像的缩放因子是t(t0),则目标图像的大小size=tmtn。对于目标图像的某个像素点P(x,y)通过P*1/t可得到对应的原始图像坐标P(x1,y1),其中x1=x/t,y1=y/t,由于x1,y1都不是整数所以并不存在这样的点,这样可以找出与它相邻的四个点的灰度f1、f2、f3、f4,使用双线性插值

7、算法就可以得到这个像素点P(x1,y1)的灰度,也就是像素点P(x,y)的灰度。一个完整的双线性插值算法可描述如下:(1)通过原始图像和比例因子得到新图像的大小,并创建新图像。(2)由新图像的某个像素(x,y)映射到原始图像(x,y)处。(3)对x,y取整得到(xx,yy)并得到(xx,yy)、(xx+1,yy)、(xx,yy+1)和(xx+1,yy+1)的值。(4)利用双线性插值得到像素点(x,y)的值并写回新图像。(5)重复步骤(2)直到新图像的所有像素写完。2.核心代码/函数名Bilinear/参数floatk/返回值无/作用利用双线性插值来实现图像缩放voidCChildView:Bi

8、linear(floatk)intnBpp=m_imPicture.GetBPP();intwidthNew,heightNew;/新图像的宽度和高度floatwidthScale=(float)(1.0/k),heightScale=(float)(1.0/k);floatxx,yy;inta,b;intrr,gg,bb;/保存R、G、B分量/得到新图像的宽度和高度widthNew=(int)(m_imPicture.GetWidth()*k);heightNew=(int)(m_imPicture.GetHeight()*k);/利用新图像的宽度和高度来创建新图像m_imNewPictur

9、e.Destroy();m_imNewPicture.Create(widthNew,heightNew,nBpp);/得到新、老图像的每行的字节数intnPitch=m_imPicture.GetPitch();intnPitchNew=m_imNewPicture.GetPitch();/得到新、老图像的数据指针LPBYTEpBitsNew=(LPBYTE)m_imNewPicture.GetBits();LPBYTEpBits=(LPBYTE)m_imPicture.GetBits();if(m_imPicture.GetBPP()!=24)MessageBox(必须是24位图像或8位图

10、像);m_imNewPicture.Destroy();Invalidate();return;for(intx=(int)k;xwidthNew-k;x+)for(inty=(int)k;yheightNew-k;y+)xx=x*widthScale;yy=y*heightScale;if(xx=1e-8)xx=0;if(xxm_imPicture.GetWidth()-2)xx=(float)(m_imPicture.GetWidth()-2);if(yy=1e-8)yy=0;if(yym_imPicture.GetHeight()-2)yy=(float)(m_imPicture.Get

11、Height()-2);a=(int)xx;b=(int)yy;/分别得到对应像素的R、G、B值并用双线性插值得到新像素的R、G、B值intr11,r12,r21,r22;r11=*(pBits+b*nPitch+3*a+2);r12=*(pBits+b*nPitch+3*(a+1)+2);r21=*(pBits+(b+1)*nPitch+3*a+2);r22=*(pBits+(b+1)*nPitch+3*(a+1)+2);rr=(int)(r11*(a+1-xx)*(b+1-yy)+r12*(a+1-xx)*(yy-b)+r21*(xx-a)*(b+1-yy)+r22*(xx-a)*(yy-

12、b);intg11,g12,g21,g22;g11=*(pBits+b*nPitch+3*a+1);g12=*(pBits+b*nPitch+3*(a+1)+1);g21=*(pBits+(b+1)*nPitch+3*a+1);g22=*(pBits+(b+1)*nPitch+3*(a+1)+1);gg=(int)(g11*(a+1-xx)*(b+1-yy)+g12*(a+1-xx)*(yy-b)+g21*(xx-a)*(b+1-yy)+g22*(xx-a)*(yy-b);intb11,b12,b21,b22;b11=*(pBits+b*nPitch+3*a);b12=*(pBits+b*nP

13、itch+3*(a+1);b21=*(pBits+(b+1)*nPitch+3*a);b22=*(pBits+(b+1)*nPitch+3*(a+1);bb=(int)(b11*(a+1-xx)*(b+1-yy)+b12*(a+1-xx)*(yy-b)+b21*(xx-a)*(b+1-yy)+b22*(xx-a)*(yy-b);/将得到的新R、G、B值写到新图像中*(pBitsNew+y*nPitchNew+x*3)=min(255,bb);*(pBitsNew+y*nPitchNew+x*3+1)=min(255,gg);*(pBitsNew+y*nPitchNew+x*3+2)=min(2

14、55,rr);m_imPicture.Destroy();Invalidate();五.结语本文介绍了一种利用双线性插值来实现图像缩放的算法,通过图2可以看到这种算法和传统的利用StretchBlt来实现图像缩放相比具有很大的改善。StretchBlt实现的图像具有很大的失真,并且随着缩小的比率越大失真也越严重;而双线性插值算法则很好地解决了这个问题,可以得到很高的清晰度,这种方法可以广泛应用在图像变形、计算机动画、计算机辅助设计等领域。所附源代码在VC+.NET2003下编译通过。screen.width-333)this.width=screen.width-333图2注:左图是利用本文介

15、绍的双线性插值算法缩小一倍得到图像,右图是利用StretchBlt缩小一倍得到图像。【From】图像水印技术研究与实现文献综述 文献综述图像水印技术研究与实现一、前言部分:近年来,随着数字化技术的进步和Internet 的迅速发展,多媒体信息的交流达到了前所未有的深度和广度,其发布形式愈加丰富了。网络发布的形式逐渐成为一种重要的形式,伴随而来的是多媒体数据的版权保护问题。因此多媒体信息版权保护问题成了一项重要而紧迫的研究课题。为了防止窃取信息而使用的传统加密技术,在应用于图像版权保护上却存在一些缺点,比如图像被解密后与所有者无关,使用者可以对解密后的图像进行任何形式的电子传播;密文形式的图像更

16、加容易引起攻击者的注意;被加密的图像未解密前无法查看,而图像的传播就是为了被查看,如此将严重影响人们利用网络的效率1。为了解决这一难题,近几年国际上提出了一种新的有效的数字信息产品版权保护和数据安全维护的技术一一数字水印技术(digtal watermarking)。数字水印技术通过在原始媒体数据中嵌入秘密信息?水印来证实该数据的所有权归属。水印可以是代表所有权的文字、产品或所有ID、二维图像,视频或音频数据、随机序列等。主要应用于:媒体所有权的认定。即辨认所有权信息,媒体合法用户信息;媒体的传播跟算法研究。该子模块的研究为解决网络制造产品版权保护问题奠定了基础数字水印技术,又称数字签名技术,

17、成为信息隐藏技术的一种重要研究分支,为实现有效的信息版权保护提供了一种重要的手段。二、主题部分: 1 图像水印的基本原理 从图像处理的角度看,嵌入水印信号可以视为在强背景下迭加一个弱信号,只要迭加的水印信号强度低于人类视觉系统 Human Visual System ,HVS 的对比度门限,HVS 就无法感到信号的存在2。对比度门限受视觉系统的空间、时间和频率特性的影响。 因此通过对原始信号作一定的调整,有可能在不改变视觉效果的情况下嵌入一些信息,从数字通信的角度看,水印嵌入可理解为在一个宽带信道载体图像 上用扩频通信技术传输一个窄带信号水印信号 。 尽管水印信号具有一定的能量,但分布到信道中

18、任一频率上的能量是难以检测到的。 水印的译码检测 即是在有噪信道中弱信号的检测问题。 一般来说,为了使水印能有效地应用于版权保护中,水印必须满足如下特性:1 隐蔽性 水印在通常的视觉条件下应该是不可见的,水印的存在不会影响作品的视觉效果。2 鲁棒性 水印必须很难去掉希望不可能去掉 ,当然在理论上任何水印都可以去掉,只要对水印的嵌入过程有足够的了解,但是如果对水印的嵌入只是部分了解的话,任何破坏或消除水印的企图都应导致载体严重的降质而不可用。3 抗窜改性 与抗毁坏的鲁棒性不同,抗窜改性是指水印一旦嵌入到载体中,攻击者就很难改变或伪造。 鲁棒性要求高的应用,通常也需要很强的抗窜改性。 在版权保护中

19、,要达到好的抗窜改性是比较困难的。4 水印容量 嵌入的水印信息必须足以表示多媒体内容的创建者或所有者的标志信息,或是购买者的序列号。 这样在发生版权纠纷时,创建者或所有者的信息用于标示数据的版权所有者,而序列号用于标示违反协议而为盗版提供多媒体数据的用户。5 安全性 应确保嵌入信息的保密性和较低的误检测率。 水印可以是任何形式的数据,比如数值、文本、图像等。 所有的水印都包含一个水印嵌入系统和水印恢复系统。 水印的嵌入和提取过程分别。6 低错误率 即使在不受攻击或者无信号失真的情况下,也要求不能检测到水印漏检、false -negative 以及不存在水印的情况下,检测到水印虚检、false

20、- positive 的概率必须非常小2。 2 小波变换历史 小波变换(wavelet transformation)3基本概念是以某些特殊函数为基将数据过程或数据系列变换为级数系列以发现它的类似频谱的特征,从而实现数据处理。法国从事石油信号处理的工程师J.Morlet在1974年首先提出的,通过物理的直观和信号处理的实际需要经验的建立了反演公式,当时未能得到数学家的认可。正如1807年法国的热学工程师J./.rier提出任一函数都能展开成三角函数的无穷级数的创新概念未能得到认可一样。幸运的是,早在七十年代,A.Calderon表示定理的发现、Hardy空间的原子分解和无条件基的深入研究为小波

21、变换的诞生做了理论上的准备,而且/.omberg还构造了历史上非常类似于现在的小波基;1986年著名数学家Y.Meyer偶然构造出一个真正的小波基,并与S.Mallat合作建立了构造小波基的统一方法-多尺度分析之后,小波分析才开始蓬勃发展起来,其中比利时女数学家I.Daubechies撰写的小波十讲(Ten Lectures on Wavelets)对小波的普及起了重要的推动作用。与Fourier变换、视窗Fourier变换(Gabor变换)相比,具有良好的时频局部化特性,因而能有效的从信号中提取资讯,通过伸缩和平移等运算功能对函数或信号进行多尺度细化分析(Multiscale Analysi

22、s),解决了Fourier变换不能解决的许多困难问题,因而小波变化被誉为“数学显微镜”,它是调和分析发展史上里程碑式的进展。 3 小波变换在图像处理上的应用 小波变换是空间时间和频率的局部变换4,因而能有效地从信号中提取信息。信号和信息处理专家认为,小波分析是时间?尺度分析和多分辨分析4的一种新技术。在图像处理方面,小波变换是对图像进行多分辨率分解,分解成不同空间、不同频率的子图像,然后再对子图像的系数进行处理。对系数的处理是小波变换用于图像处理的核心。根据S.Mallat的塔式分解算法,图像经过小波变换后被分解成2个部分,即低频平滑部分LL和高频细节部分LH、HL、HH,共4个子带。其中,L

23、H、HL、HH分别对应水平、垂直、对角线方向的边缘和细节,这个分解过程可重复地用于分解LL部分4。图像经过小波分解后生成的小波图像具有与原图像不同的特性,表现在图像的能量主要集中在低频部分,即图像的主要部分,也是视觉重要部分;而图像的高频部分,即图像的细节部分能量较少。且分辨率越低,各部分中的有用信息的比例越高5。 4 应用于图像水印技术的小波变换 1)基于小波变换的图像水印算法是自适应性。这种特性为分析图像的局部特性如边缘和纹理等特性提供了很好的空间一尺度定位6。小波变换所使用的基于变换域的技术可以嵌入大量比特数据而不会导致可察觉的缺陷,往往采用类似扩频图像技术来隐藏数字水印信息7。同时由于

24、小波对图像的多分辨率表示,因此该方法在嵌入水印时,可根据各自的重要程度对图像进行分级处理,这一点已经在图像编码中应用得相当广泛,小波变换的这一特性可以实现水印的渐进编码和传输12。将水印信息直接叠加到图像的空间域上的算法叫做空域算法。基于小波变换的水印和基于分块DCT的水印不同,它具有不同的空间支持区域,因而具有局部水印和全局水印的双重优点,基于局部空间支持的水印分量可以抵抗诸如剪切一类的攻击,而基于全局支持的水印则对低通滤波和图像缩放等攻击有较强的稳健性9。 2)基于盲水印检测的DWT算法。该算法首先对原始图形进行小波变换,根据人类具有的视觉掩饰特性对低频分量进行一定的量化,同时可不影响视觉

25、效果,并对水印的图像进行压缩和二值化处理,形成一维的二值序列,根据二值序列的值对上述量化后的原始信号的低频分量进行视觉阀值范围内允许的修改,从而实现水印的嵌入10。水印的提取过程是对含有水印的图像进行小波变换,对低频分量同样进行量化处理,为了增大算法的安全性,可以对水印形成的二值0,1序列在嵌入前进一步进行伪随机序列调制,相应的在水印提取过程需要增加伪随机序列调解的步骤11。这样,不知道伪随机序列的攻击者即使推测出水印的嵌入规律,也无法提取水印。大大增加了水印系统的透明性和鲁棒性。 5 MATLAB简介 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件

26、中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,只要用于工程计算、控制设计、信号处理和通讯、图像处理、信号检测、金融建模设计和分析等领域8。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。三、总结部分 近年来随着Internet网络用户的飞速增加,以及电子商务的加速发展,各种媒体特别是图像及影音媒体的安全性要求进一步提

27、高,应用于版权保护和安全认证的图像水印技术更是受到了极大的重视,活跃于网络防盗版的前线,为各大网站、公司的版权保护贡献了很大的一股力量。现如今世界各地特别是中国的反盗版活动越来越多,图像水印技术越来越为广大深受盗版影响的网站公司所使用。但是图像水印技术仍然不够成熟,鲁棒性和抗篡改性依旧需要得到更大的提升,还有很多问题亟待解决。图像水印技术普遍存在一些局限,例如不知道能够隐藏多少位、没有真正健壮的盲图像水印算法、所有者能去除标记等,相信随着数学家和密码学家的努力,先进的信号处理技术和密码设计思想的产生,使得图像水印技术更加成熟,也更为广泛的得到发展应用。四、主要参考文献1 杨福生. 小波变换的工

28、程分析与应用M.北京:科学出版社,20002 蔺鹏, 张永, 鲁江. 一种彩色图像处理的水印新算法J. 兰州工业高等专科学校学报 , 2005,043 冉启文.小波变换与分数傅立叶变换理论及应用M.哈尔滨:哈尔滨工业大学出版社,2001.4 秦前清.实用小波分析M.西安:西安电子科技出版社,1998.5 章毓晋.图象分割M.北京:科学出版社.2001.6 蔺鹏, 张永. 基于离散小波变换的彩色图像水印算法及其MATLAB实现J. 兰州工业高等专科学校学报 , 2005,017 郑宏兴,姚纪欢.MATLAB5.X工具箱使用技巧与实例M.武汉:华中科技大学出版社,2001.8 王晓丹,吴崇明.基于

29、MATLAB的系统分析与设计-图像处理M.西安:西安电子科技大学出版社,2000.9 徐祥兵. 基于小波变换的两重图像数字水印技术J. 商丘职业技术学院学报 2006,0210 周术诚,周明全,耿国华.基于小波变换的自适应阈值三维图像分割J.计算机应用与软件.2006,2310:20-2211 /.son.DCT quantization Matrices Visually Optimized for Individual Images M .SPIE:Human Vision,Visual Processing and Digital Display ,Vol.202 216,1999.12

30、 Campbell F.W.,and Kulikowski J.J.,Orientational selectivity of the human visual13 Lewis /0. Knowlets G,Image compression using the 2-d wavelet transform,IEEE Transactions on Image Processing,vol.1,April 199214 Stefan?Katzenbcisser,Fabien?/.itcolas,信息隐藏技术-隐写术与数字水印M.北京:人民邮电出版社,2001.15Jian?Ren.?A?cryp

31、tographic?watermarking?technique?for?multimedia?signalsJ.?Advances?in?Computational?Mathematics. 实验报告参考示例软件技术基础实验报告姓名 张子逸 班级及学号电控自动化07 322实验题目 线性表基本操作的实现 二项式加法及乘法 约瑟夫环游戏一、二、 问题的描述和分析问题陈述: 1.设计一个一元多项式简单计算器 2.设有n个人围坐成一圈,现从某个人开始报数,数到m的人出列, 接着从出列的下一个人开始重新报数,数到m的人又出列,如此下去,直到所有的人都出列为止。问题分析: “线性表基本操作的实现”部分

32、当在线性表的顺序存储结构上的第i个位置上插入一个元素时,必须先将线性表中第i个位置之后的所有元素依此后移一个位置,以便腾空一个位置,再把新元素插入到该位置。如果要删除第i个元素时,则必须把第i个元素之后的所有元素向前移一个位置。当采用链结式存储结构时,通过修改第i个结点前后的地址指针来实现插入与删除,并释放被删除结点的内存。基本要求: 1. “一元多项式的简单计算”部分。一元多项式简单计算器的基本功能为:输入并建立多项式;输出多项式;两个多项式相加减、相乘,建立并输出多项式。2. “约瑟夫环游戏的两种实现方法对比”部分 选择单项循环链表作为存储结构模拟整个过程,并依次输出出列人的编号;选择数组

33、作为存储结构模拟整个过程,并依次输出出列人的编号;对同一问题,比较数据结构不同时,同一算法的不同实现及效率。1、 需求与规格说明2、 设计方案的描述1) 设计思想2) 设计的程序表示3) 程中有关约束条件的注释4) 详细设计3、 运行实例及分析1. “线性表基本操作的实现”部分1) 进入C语言开发环境;2) 装入样本程序shiyan11.c或输入自己编写的程序;3) 阅读样本程序;如果学生有自己编写的完成同样功能的程序,则调试自己的程序;c,C.Create List /* 建表 */i,I.Insert /* 插入元素到指定位置 */d,D.Delete /* 删出指定位置的元素 */q,Q

34、.Quit /* 退出 */Your choice:4) 编译并运行样本程序;显示屏上出现:选择上面4个功能进行测试。Please input total number of data item键入5data1=1data2=2data3=3data4=4data5=5Press any key to continue程序显示:程序返回显示主菜单:c,C.Create Listi,I.Insertd,D.Deleteq,Q.QuitYour choice: I Input the data to be inserted: 88Input the poistion to be inserted:

35、(1-5):2data1=1data2=88data3=2data4=3data5=4data6=5Press any key to continue 程序返回显示主菜单:c,C.Create Listi,I .Insertd,D.Deleteq,Q.QuitYour choice: d Input the index_No of data to be deleted(1-6):2data1=1data2=2data3=3data4=4data5=52. “一元多项式的简单计算”部分1) 编译并运行样本程序;显示屏上出现:Input the 1st polynomial /* 要求输入第一个多

36、项式*/input coef and exp(1,2):3,10Input coef and exp:4,8Input coef and exp:5,6Input coef and exp:6,4Input coef and exp:-2,2Input coef and exp:8,0Input coef and exp:0,0Input the 2nd polynomial /* 要求输入第二个多项式*/input coef and exp(1,2):Input coef and exp:4,7Input coef and exp:3,5Input coef and exp:2,2Input

37、 coef and exp:12,0Input coef and exp:0,0the 1st polynomial is:3,10 4,8 5,6 6,4 -2,2 8,0 the 2nd polynomial is:4,7 3,5 2,2 12,0 /* 多项式相加的结果*/the addition of the two polynomial is:3,10 4,8 4,7 5,6 3,5 6,4 20,0 /*多项式相乘的结果*/the multiplication of the two polynomial is:12,17 25,15 32,13 6,12 39,11 44,10 1

38、0,9 58,8 26,7 72,6 24,5 68,4 -8,2 96,0 3. “约瑟夫环游戏的两种实现方法对比”部分A. 链式结构实现1) 进入C语言开发环境;2) 装入样本程序shiyan13.c或输入自己编写的程序;3) 阅读样本程序;如果学生有自己编写的完成同样功能的程序,则调试自己的程序;4) 编译并运行样本程序;显示屏上出现:Input the total number of people: 8input the number of person you are to call: 4 48521376 the last one:6B. 顺序结构实现1) 进入C语言开发环境;2)

39、 装入样本程序shiyan14.c或输入自己编写的程序;3) 阅读样本程序;如果学生有自己编写的完成同样功能的程序,则调试自己的程序;4) 编译并运行样本程序;显示屏上出现:Johephas probleminput number of people, number to call,and start number:8,4,14 8 5 2 1 3 7 6我的程序#include #include #define MaxSize 1024#define Null 0 /*定义全局变量*/typedef int DataType; typedef struct node /*定义线形表*/ Da

40、taType dataMaxSize; int last; SequenList; void PrintOut(SequenList *L); int Delete(SequenList *L,int i); void CreateList(SequenList *L); /*定义各个函数*/int main() SequenList MyList,*L; char cmd; int i,t,x; L=&MyList; L-last=-1; do do clrscr(); printf(ntc,C.Create List); printf(nti,I .Insert); printf(ntd,

41、D.Delete); printf(ntq,Q.QuitntYour choice:); cmd=getchar(); /*给出主菜单*/ while(toupper(cmd)!=D)&(toupper(cmd)!=Q)& (toupper(cmd)!=I)&(toupper(cmd)!=C); /*输入小写则变为大写*/ switch(cmd) case c: case C:CreateList(L); break; case i: /*如果输入I或i则运行Insert函数*/ case I:printf(nInput the data to be inserted:); scanf(%d,

42、&x); printf(nInput the poistion to be inserted:); printf(n(1-%d)n,(L-last+2); scanf(%d,&i); Insert(L,x,i); PrintOut(L); getch(); break; case d: case D:printf(nInput the index_No of data to be deletedn); /*如果输入d或者D,则运行Delete函数*/ printf(n(1-%d):n,(L-last+1); scanf(%d,&i); Delete(L,i); PrintOut(L); getch(); break; default: break; while(toupper(cmd)!=Q); /*设置主画面中输入的字母,及其相对应的函数*/ v

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁