版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
易建勋《计算机导论第2版》教参05:教材程序案例代码第20页共23页易建勋《计算机导论第2版》清华大学出版社教参05:教材程序案例源代码2017年8月本教材介绍的编程案例语言:C、Java、Python、R、Prolog、MPI、汇编、VHDL、HTML、JavaScript、MATLAB、SQL等,共计60个源程序代码。说明:以下程序中,黑色为程序代码;蓝色为程序运行输出;红色为提示符下输入的指令或数据。第1章【无】第2章/*【例2-7】C程序:helloworld程序*/#include<stdio.h>intmain(void){printf("hello,world\n");return0;}hello,world/*【例2-19】C程序:超市自动计费*/#include<stdio.h>intmain(void){floatw,x;printf("请输入购物金额\n");scanf("%f",&w);if(w<=100)x=0.9*w;elsex=0.9*100+0.7*(w-100);printf("应付款=%10.2f\n",x);return0;}/*【例2-20】C程序:求1+2+3….+100之和*/#include<stdio.h>intmain(void){inti=1,sum=0;while(i<=100){sum=sum+i;i++;}printf("Sum=%d\n",sum);return0;}/*【例2-21】C程序:求1+2+3….+100之和*/#include<stdio.h>intmain(void){inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("sum=%d\n",sum);return0;}/*【例2-22】C程序:比较两数大小,输出较大的一个数*/#include<stdio.h>intmain(void){intmax();inta=5,b=8;intc;c=max(a,b);printf("max=%d\n",c);return0}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}//【例2-24】Java程序:hello,world程序//文件名:helloworld.javaPackagemypack;publicclasshelloworld{publicstaticvoidmain(Stringargs[]){System.out.println("hello,world");}}//【例2-25】Java程序:计算从1+2+3+…+100的累加和//文件名:Sum.javapublicclassSum{publicstaticvoidmain(String[]args){ints=0,i=0;{for(i<=100;i++)s+=i;}System.out.println("累加和为:"+s);}}#【例2-30】Python程序:格式化字符串>>>'您好,%s,您有%s美元到账了。'%('小明',10000.68)'您好,小明,您有10000.68美元到账了。'#【例2-31】Python程序:输出图形界面HelloWorld程序#-*-coding:utf-8-*-importsys,tkinterroot=tkinter.Tk()root.title("HelloWorld")root.minsize(200,100)tkinter.Label(root,text="HelloWorld!你好,世界").pack()tkinter.Button(root,text="退出",command=sys.exit).pack()root.mainloop()#【例2-32】Python程序:创建网络爬虫程序#-*-coding:utf-8-*-importurllib.requesturl=""get=urllib.request.urlopen(url).read()print(get)#【例2-33】R程序:hello,world程序>print("hello,world")[1]hello,world#【例2-34】R程序:用R语言进行卡方检验,说明吸烟与肺癌之间是否有关系?>x<-c(60,3,32,11)>dim(x)<-c(2,2)>chisq.test(x)Pearson'sChi-squaredtestwithYates'continuitycorrectiondata:xX-squared=7.9327,df=1,p-value=0.004855#【例2-35】R程序:画出鸢尾花数据集的散点图>data(iris)>head(iris)>plot(iris)/*【例2-39】Prolog程序:判断李白(libai)的朋友是谁?*/Predicateslikes(symbol,symbol).friend(symbol,symbol).Clauseslikes(dufu,jiu).likes(yangguife,music).likes(yangguife,wudao).likes(gaolishi,tangminghuang).friend(libai,X):-likes(X,wudao),likes(X,music).?-friend(libai,X).X=yangguife1Solution/*【例2-40】Prolog程序:查询城市之间是否存在可行路径*/Predicatesnondetermroad(symbol,symbol).nondetermpath(symbol,symbol).Clausesroad(a,b).road(a,c).road(b,d).road(b,e).road(c,d).road(d,e).path(X,Y):-road(X,Y).path(X,Y):-road(X,Z),path(Z,Y).Goalpath(X,Y).?-path(a,e).yes?-path(e,a).no?-run.X=aY=b;X=aY=c;X=bY=d;X=bY=e;X=cY=d;X=dY=e;……#【例2-42】Python程序:MPI程序并行计算#-*-coding:gbk-*-frommpi4pyimportMPIprint("我的rank是:%d"%MPI.rank)D:\>mpirun–np4pythontest.py我的rank是:0我的rank是:3我的rank是:1我的rank是:2第3章#【例3-28】Python程序:文本分词处理#-*-coding:utf-8-*-importjiebaseg_list=jieba.cut("我来到北京清华大学",cut_all=True)print("全模式:","/".join(seg_list))seg_list=jieba.cut("我来到北京清华大学",cut_all=False)print("默认模式:","/".join(seg_list))seg_list=jieba.cut("已结婚的和尚未结婚的青年")print(",".join(seg_list))全模式:我/来/来到/到/北/北京/京/清/清华/清华大学/华/华大/大/大学/学默认模式:我/来到/北京/清华大学已,结婚,的,和,尚未,结婚,的,青年(注:没有分词为:已结婚的和尚,未结婚的青年)#【例3-42】Python程序:穷举法求素数#-*-coding:utf-8-*-lower=int(input("输入区间最小值:"))upper=int(input("输入区间最大值:"))fornuminrange(lower,upper+1):ifnum>1:foriinrange(2,num):if(num%i)==0:breakelse:print(num)>>>输入区间最小值:1>>>输入区间最大值:100>>>2357111317192329313741434753596167717379838997#【例3-44】Python程序:蒙特卡罗算法计算Pi值#-*-coding:utf-8-*-fromrandomimport*fromtimeimport*defMC(n):k=0;foriinrange(n):x=random()y=random()if(x*x+y*y)<=1:k=k+1returnfloat(k)/n*4defmain():n=input("请输入模拟次数,n=")n=int(n)t0=clock()print("蒙特卡罗算法模拟的Pi值为:",MC(n))t1=clock()print("程序处理时间为:%.2fs"%(t1-t0))main()>>>请输入模拟次数,n=1000000蒙特卡罗算法模拟的Pi值为:3.14352程序处理时间为:6.11s#【例3-46】Python程序:汉诺塔的盘子搬动#-*-coding:utf-8-*-defhanoi(n,a,b,c):ifn==1:print(a,'-->',c)else:hanoi(n-1,a,c,b)hanoi(1,a,b,c)hanoi(n-1,b,a,c)n=int(input('请输入汉诺塔的盘子数:'))hanoi(n,'a','b','c')>>>请输入汉诺塔的盘子数:3a-->ca-->bc-->ba-->cb-->ab-->ca-->c第4章#【例4-10】Python程序:打印乘法口诀表foriinrange(1,10):forjinrange(1,i+1):print(i,'*',j,'=',i*j)print('')>>>1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=165*1=55*2=105*3=155*4=205*5=256*1=66*2=126*3=186*4=246*5=306*6=367*1=77*2=147*3=217*4=287*5=357*6=427*7=498*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=649*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81#【例4-16】Python程序:用递归函数求阶乘#-*-coding:utf-8-*-deffac(n):ifn==0:return1returnn*fac(n-1)>>>fac(5)120#【例4-17】Python程序:用递归算法画Koch曲线fromturtleimport*defkoch(k,L):if(k==0):forward(L)else:foranglein(60,-120,60,0):koch(k-1,L/3)left(angle)koch(3,250)#【例4-18】Python程序:用迭代算法求阿米巴细菌数#-*-coding:UTF-8-*-x=2**20foriinrange(1,15):x=x/2i=i+1print('初始阿米巴细菌数量为:',x)>>>初始阿米巴细菌数量为:64.0#【例4-19】Python程序:冒泡排序#-*-coding:utf-8-*-defbubbleSort(nums):foriinrange(len(nums)-1):forjinrange(len(nums)-i-1):ifnums[j]>nums[j+1]:nums[j],nums[j+1]=nums[j+1],nums[j]print(nums)returnnumsnums=[7,2,5,3,1]print(bubbleSort(nums))>>>[2,5,3,1,7][2,3,1,5,7][2,1,3,5,7][1,2,3,5,7][1,2,3,5,7]#【例4-20】Python程序:插入排序#-*-coding:utf-8-*-#definsertSort(nums):foriinrange(len(nums)):key=iwhilekey>0:ifnums[key-1]>nums[key]:nums[key-1],nums[key]=nums[key],nums[key-1]key-=1print(nums)returnnumsnums=[7,2,5,3,1]print(insertSort(nums))>>>[7,2,5,3,1][2,7,5,3,1][2,5,7,3,1][2,3,5,7,1][1,2,3,5,7][1,2,3,5,7]#【例4-21】Python程序:快速排序#-*-coding:utf-8-*-defquickSort(num,L,R):ifL>=R:returnflag=Lforiinrange(L+1,R+1):ifnum[flag]>num[i]:tmp=num[i]delnum[i]num.insert(flag,tmp)flag+=1quickSort(num,L,flag-1)quickSort(num,flag+1,R)num=[3,6,4,2,11,10,5]quickSort(num,0,6)print(num)>>>[2,3,4,5,6,10,11]#【例4-22】Python程序:二分查找#-*-coding:UTF-8-*-defsearch_data(list,data_find):mid=int(len(list)/2)iflist[mid]>=1:iflist[mid]>data_find:print("您要找的元素比中间值[%s]小..."%list[mid])search_data(list[:mid],data_find)eliflist[mid]<data_find:print("您要找的元素比中间值[%s]大..."%list[mid])search_data(list[mid:],data_find)else:print("找到了您需要找的元素[%s]!"%list[mid])else:print("不好意思,没有找到您需要的元素。")if__name__=='__main__':list=[12,15,21,33,34,42,55,58,60,80]search_data(list,58)>>>您要找的元素比中间值[42]大...找到了您需要找的元素[58]!第5章#【例5-5】Python程序:二进制整数转换为十进制数>>>int("11010101",2)213#【例5-7】Python程序:十进制整数转换为二进制整数>>>bin(234)'0b11101010'#【例5-9】Python程序:二进制整数转换为十六进制整数>>>hex(int("11010101",2))'0xd5'#【例5-11】Python程序:十六制整数转换为二进制数整数>>>bin(int("4b",16))'0b1001011'#【例5-24】Python程序:小数运算的截断误差>>>0.1+0.1+0.10.30000000000000004>>>.1+.1+.1+.1+.1+.1+.1+.10.7999999999999999#【例5-45】Python程序:求字符的ASCII编码>>>ord('A')65>>>chr(97)'a'#【例5-67】Python程序:压缩子目录下所有文件importzipfileimportosf=zipfile.ZipFile('my.zip','w',zipfile.ZIP_DEFLATED)startdir="d:\\test\\pic"fordirpath,dirnames,filenamesinos.walk(startdir):forfilenameinfilenames:f.write(os.path.join(dirpath,filename))f.close()#【例5-74】Python程序:字符串生成CRC检验编码>>>importzlib>>>s=b'hello,word!'>>>print(zlib.crc32(s))3035098857--【例5-93】VHDL程序:用VHDL语言设计一位二进制全加器逻辑电路libraryIEEE;useIEEE.STD_LOGIC_1164.all;entityadderisport(a,b,ci:inbit;sum:outbit);endadder;architectureall_adderofadderisbeginsum<=axorbxorci;co<=((aorb)andci)or(aandb);endall_adder;第6章【无】#【例6-0】Python程序:第7章//【例7-4】HTML程序:建立一个简单的测试网页<HTML><HEAD><TITLE>测试</TITLE></HEAD><BODY><fontsize="8"><P>这是我的测试网页</P><P>这是第2行信息</P></font></BODY></HTML>//【例7-5】JavaScript程序:把JavaScript脚本代码嵌入网页中<HTML><BODY><p>假设y=5,计算x=y+2,并显示结果。</p><buttononclick="myFunction()">点击这里</button><pid="demo"></p><script>functionmyFunction(){vary=5;varx=y+2;vardemoP=document.getElementById("demo")demoP.innerHTML="x="+x;}</script></BODY></HTML>#【例7-9】Python程序:用base64做字符串的加密和解密#-*-coding:gbk-*-importbase64s='helloworld.你好,世界'print('源字符串=',s)defmain():bytesString=s.encode(encoding="utf-8")print('转换为字节码=',bytesString)encodestr=base64.b64encode(bytesString)print('加密字节码=',encodestr)print('加密后的编码=',encodestr.decode())decodestr=base64.b64decode(encodestr)print('解密后的编码=',decodestr.decode())if__name__=='__main__':main()>>>源字符串=helloworld.你好,世界转换为字节码=b'helloworld.\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c'加密字节码=b'aGVsbG8gd29ybGQu5L2g5aW977yM5LiW55WM'加密后的编码=aGVsbG8gd29ybGQu5L2g5aW977yM5LiW55WM解密后的编码=helloworld.你好,世界#【例7-11】Python程序:对字符串进行RSA加密和解密#-*-coding:utf-8-*-importrsamessage='hello'print('明文=',message)(pubkey,privkey)=rsa.newkeys(1024)print('生成密钥=',pubkey,privkey)withopen('public.pem','w+')asf:f.write(pubkey.save_pkcs1().decode())withopen('private.pem','w+')asf:f.write(privkey.save_pkcs1().decode())withopen('public.pem','r')asf:pubkey=rsa.PublicKey.load_pkcs1(f.read().encode())withopen('private.pem','r')asf:privkey=rsa.PrivateKey.load_pkcs1(f.read().encode())crypto=rsa.encrypt(message.encode(),pubkey)print('公钥加密=',crypto)message=rsa.decrypt(crypto,privkey).decode()print('私钥解密=',message)signature=rsa.sign(message.encode(),privkey,'SHA-1')print('私钥签名=',signature)rsa.verify(message.encode(),signature,pubkey)print('公钥验证=',rsa.verify(message.encode(),signature,pubkey))>>>明文=hello生成密钥=PublicKey(1429977183659451469……2801212494575691416397461)公钥加密=b'7\xd1lx\x8f\x004\x92T\x92\xf9\xbb\f2\x83\xc6Tk\x9aq\xc5'私钥解密=hello私钥签名=b'*\x15t\xf6\xa5\x0bo\xe9]\xd3\xc0……\x15\xb7,\xce\x0c\xdfh\xc1'公钥验证=True#【例7-15】Python程序:生成字符串的哈希值#-*-coding:gbk-*-importhashlibdefmd5(s):m=hashlib.md5()m.update(s.encode(encoding="utf-8"))returnm.hexdigest()print(md5('abc123456'))>>>0659c7992e268962384eb17fafe88364第8章#【例8-6】Python程序:创建一个mytest.db数据库>>>fromsqlite3importdbapi2>>>conn=dbapi2.connect("d:\\test\\mytest.db")>>>conn.close()#【例8-7】Python程序:在内存中创建一个数据库>>>fromsqlite3importdbapi2>>>conn=dbapi2.connect(":memory:")#【例8-8】Python程序:建立SQLite数据表>>>fromsqlite3importdbapi2>>>conn=dbapi2.connect("d:\\test\\mytest.db")>>>sql_create="CREATETABLEIFNOTEXISTSmytb(xmchar,cjreal,kctext)">>>conn.execute(sql_create)<sqlite3.Cursorobjectat0x0000000003200730>#【例8-9】Python程序:在SQLite中定义一个游标对象>>>fromsqlite3importdbapi2>>>conn=dbapi2.connect("d:\\test\\mytest.db")>>>cur=conn.cursor()#【例8-10】Python程序:在SQLite数据库中插入记录>>>fromsqlite3importdbapi2>>>conn=dbapi2.connect("d:\\test\\mytest.db")>>>cur=conn.cursor()>>>sql_create="CREATETABLEIFNOTEXISTSmytb(xmchar,cjreal,kctext)">>>conn.execute(sql_create)>>>sql_insert="INSERTINTOmytb(xm,cj,kc)values(?,?,?)">>>cur.execute(sql_insert)>>>cur.execute(sql_insert,('张三',85,'计算机'))>>>cur.execute(sql_insert,('李四',92,'计算机'))>>>cur.execute(sql_insert,('王五',80,'数据库'))>>>cur.rowcount>>>mit()#【例8-11】Python程序:在SQLite数据库中查询记录>>>cur.execute("SELECT*FROMmytb")>>>recs=cur.fetchall()>>>print("共",len(recs),"条记录")共3条记录>>>print(recs)[('张三',86.0,'计算机'),('李四',92.0,'计算机'),('王五',70.0,'数据库')]>>>cur.execute("SELECTname,sqlFROMsqlite_masterWHEREtype='table'")>>>recs=cur.fetchall()>>>print(recs)[('mytb','CREATETABLEmytb(xmchar,cjreal,kctext)')]#【例8-12】Python程序:在SQLite数据库中更新和删除记录>>>fromsqlite3importdbapi2>>>conn=dbapi2.connect("d:\\test\\mytest.db")>>>cur.execute('UPDATEmytbSETxm=?WHEREcj=?',('张三',0))>>>cur.execute('DELETEFROMmytbWHEREcj>90')>>>cur.execute("DELETEFROMmytb")>>>cur.execute('DROPTABLEmytb')>>>mit()>>>cur.close()>>>conn.close()#【例8-0】Python程序:SQLite数据库的建库、建表、插入数据操作#-*-coding:UTF-8-*-importsqlite3conn=sqlite3.connect('t1.db')cur=conn.cursor()cur.execute('''createtableceshi(usertext,notetext)''')cur.execute('''insertintoceshi(user,note)values('王五','领导')''')cur.execute('''insertintoceshi(user,note)values('张三','教师')''')cur.execute('''insertintoceshi(user,note)values('李四','学生')''')mit()cur.execute('''select*fromceshi''').fetchall()rec=cur.execute('''select*fromceshi''')print(cur.fetchall())conn.close()>>>[('王五','领导'),('张三','教师'),('李四','学生')]#【例8-16】Python程序:计算图8-20中细胞的数量#-*-coding:UTF-8-*-fromPILimportImagefrompylabimport*fromscipy.ndimageimportmeasurements,morphologyim=array(Image.open('D:\\test\\p.jpg').convert('L'))im=1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江苏省镇江市中考数学零模试卷
- 草原包虫病影像学筛查科普宣教课件
- 草原牧区饮水安全与人畜共患病防控课件
- 秋冬情绪低落调节方法课件
- 国际残疾人日:无障碍环境共建课件
- (2026)执业药师中医解析含答案
- 2026高考政治时政热点专题试题含解析及答案
- 2025年度残疾人服务工作总结及2026年工作计划
- 2026第四季度医保知识培训考试试卷题库及答案
- 一到降温就感冒 - 免疫力怎么补课件
- 2026年司法考试《刑法》专项训练卷(附答案)
- 2026年低压电工证考试试题及答案
- 2026年广西壮族自治区百色市辅警招聘试题及答案
- 2026年《中国脑出血急性期救治临床指南(2026版)》
- 2026年病理生理学试题题库(含答案)
- 初中团课课件
- 2026年安徽省中考物理电学基础知识巩固习题课件
- 髋关节置换手术的术后康复
- 疼痛数字评价NRS量表
- 特种设备检验员考试题库1000题(含答案和解析)
- 2026年道路危险货物运输押运人员从业资格考试题库(含答案)
评论
0/150
提交评论