《C语言程序设计实验电子稿oft.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验电子稿oft.docx(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.3 实验验一 熟熟悉C语语言的VVC+6.00编程环环境一、实验验目的与与要求1. 学学会使用用Vissuall C+集成成开发环环境。2掌握握简单CC程序的的编写、编编辑、编编译、连连接和运运行。3初步步学会Viisuaal CC+环环境下简简单调试试C程序序的方法法。二、实验验内容1.程序序运行题题(1)打打开VCC+66.0环环境。(2)在在VC+6.0环境境的编辑辑窗口中中,输入入如下程序序保存为为myeexp11_1.cppp。(3)选选择【组建】【编译 mmyexxp1_1.ccpp】(可可按快捷捷键CTTRL+F7)命令对对程序进进行编译译。(4) 选择【组建】【组建】(按快
2、捷键F7)命令对程序进行连接。(5) 单击【!】按钮钮或选择择【组建】【执行】菜单项项(按快快捷键FF5),运行程程序。(6) 判断结结果正确确与否。#inccludde voidd maain()intt a,b,suum;a=1223; b=4556;sum=a+bb;prinntf(“a+b= %dn”,summ);填写运行行结果:关闭上面面的程序序,按上上面的步步骤再次次输入如如下的程程序,进进行编译译、连接接和运行行,写出出运行结结果。#inccludde voidd maain() innt mm=7,n=44;floaat aa=388.4,b=66.4,x; x=m/22+n*
3、a/bb+1/2; prrinttf(“%fn”,x);填写运行行结果:思考: 把前面面的语句句x=mm/2+n*aa/b+1/22;改为为x=mm/2.0+nn*a/b+11.0/2;运行结果果将会是是什么?2.程序序改错题题程序改错错1:输入如如下错误误的程序序,然后后进行编编译和连连接,仔仔细检查查并修改改错误,再再进行编编译连接接,直到到没有错错误为止止。运行程程序, #inccludde voidd miian( ) pprinntf(“We aree sttudyyingg C lannguaage!n) 程序改错错2输入并运运行下面面一个需需要在运运行时输输入数据据的程序序,程序
4、序要求从从键盘输输入三个个实数,输输出它们们的和。#inccludde miann()flooat a,bb,c,summ;prinntf( IInpuut aa,b,c: )scannf(%f %f %f,&aa,&bb, cc);sum=a+bb+c;prinntf(nn suum=%fnn,ssum);输入该该程序,然然后进行行编译和和连接,如如果出错错,仔细细检查并并修改错错误,再再进行编编译连接接,直到到没有错错误为止止。运行程程序,按按照输入入输出示示例提示示输入aa、b、cc三个变变量的值值,变量量值之间间用空格格分隔,输输入完毕毕按回车车键【EEnteer】。查看运运行结果果,
5、判断断结果正正确与否否。输入输出出示例:Inpuut aa,b,c:33 5 6sum=14.0再次运行行程序并并按如下下的格式式输入数数据,观观察结果果是否正正确?为为什么?Inpuut aa,b,c: 3,55,6 summ=?思考: 改正程程序的错错误后,把prrinttf语句句中的%f改成成%d,再运行行程序,有什么么结果?Input a,b,c: 3.5,5.5,6.5结果:3.程序序完整题题完整题11二整数整整除程序序模板如如下:#include void main( ) int a,b, div; printf( Input a,b: ); /*提示输入二个数*/scanf(%d
6、%d,&a,&b); /*从键盘输入二个数存储在变量a,b中*/ /*除法运算,相除的结果放在变量div中*/ /*用%d输出结果*/输入输出出示例:Input a,b:3 5div=0Input a,b:5 3div=1思考:把上述iint a,bb,diiv;改改成flloatt a,b,ddiv;scannf(%d%d,&a,&b);中的%dd改成%ff,同时时把输出出语句中中的%dd改成%ff,运行行程序后后,再用用前面的的数据输输入,结结果会发发生如何何变化?为什么么有这样样的变化化?Input a,b:3,5div=Input a,b:5,3div=完整题22仿照教材材中例11-2
7、程程序,在在横线地地方填写写语句,输入圆圆柱体的的半径和和高,计计算并输输出圆柱柱体的体体积和表表面积。 #inccludde voidd maain() ; /* 定义义变量*/ pprinntf(请输输入圆的的半径和和高:n); /*在屏幕幕上显示示提示信信息*/ scaanf(%ff%f, &r,&h); /* 从键盘盘输入半半径和高高给变量量r*/ ; /* 计算体体积*/;/* 计算表表面积*/ priintff(vv=%ff,s=%fn, v,s) ; /* 输输出体积积和表面面积*/ 输入与输输出:请输入圆的半径和高:5.0 8.0输出结果?试一试:如果把上上述程序序中所有有的%
8、ff改成%d,再再次运行行程序,仍仍然输入入“5.00 8.0”,输出出结果会会是什么么?分析析结果。把上述程程序中的的第一个个n去去掉,再再编译运行行程序,有什么么变化?试说出n的作作用。2.5 实验二编写几几个简单单的C程程序一、实验验目的与与要求1. 掌握C语语言基本本数据类类型的概概念,理理解数据据类型与与运算的的关系。2. 掌握简单单变量的的定义,算算术表达达式和赋赋值表达达式的使使用。3. 掌握基本本输出语语句的使使用。4. 进一步熟熟悉C程程序的编编辑、编编译、连连接和运运行的过过程。5. 掌握简单单C程序序查错方方法,编编写几个个简单程程序。6. 实验4学学时二、实验验内容1.
9、程序序验证或或填空 (1)编译和运行下面程序,查看执行的结果:#inccluddeint maiin(vvoidd)int si=-1;floaat ff=5;douublee dff=3;priintff(ssi = %dd, ff = %f, f = %lfn, sii,f,df);retuurn 0; 若若把输出出语句中中的格式式控制中中的格式式说明符符的顺序序改变一一下,会会有什么么结果? 再再把%llf修改改为%ff,运行行会有什什么结果果?(2)分分析程序序,并上上机运行行验证运运行结果果 #iinclludee “stddio.h” voiid maiin( ) pprinntf
10、(“t*n”);prinntf(“tbb* * *nn”); prrinttf(“tbbb * * * * *n”); (3) 运行行程序,并并分析结结果。 #inncluude “stddio.h” vooid maain( ) innt aa=100,x=5,yy=6; a+=a*=6; x=yy+; y=+x; a=xx+y; priintff(“%d,%d,%dn”,a,x,yy);(4)不不用第33个变量量,实现现将二个个数进行行对调,请请填空。#inccludde “stddio.h”voidd mmainn( ) iint a,bb; scaanf(“%d%d”,&aa,&bb)
11、; priintff(“a=%d bb=%ddn”,a,b); a=; b=;a=;prinntf(“a=%d bb=%ddn”,a,b);2.程序序改错改正下面面程序中中的多处处错误。计计算某个个数x的的平方yy,并分分别以“y = x*x”和“x*xx = y”的形式式输出xx和y的的值。xx的值由由键盘输输入。输出示例例(假设设x的值值为3):9 = 3*333*3 = 99源程序(有有错误的的程序)#inccluddeint maiin(vvoidd)intt y;y = x*x;priintff(%d = %dd * %d,x); /* 输输出prinntf(d*%d = %d,y)
12、;3.一般般编程题题编程题11 编写程序序,输入入二个整整数,计计算它们们的和、差差、积、商商和余数数,并按按5+111=116这样样的输出出格式输输出结果果。编程题22 编写程序序,输入入二个实实数,计计算它们们的和、差差、积、商商,并按按32.24=12.2+220.004这样样的输出出格式输输出结果果。实数数分别定定义为单单精度实实数或双双精度实实数。编程题33 编写程序序,从键键盘输入入一个大大写字母母,改用用小写字字母输出出。编程题44 求华氏温温度1550对应的的摄氏温温度。计计算公式式如下,其其中:cc表示摄摄氏温度度,f表表示华氏氏温度。要求输出出结果为为: fahhr = 1
13、550,ccelssiuss = 66思考:如如果使用用公式计计算华氏氏温度1150所对应应的摄氏氏温度,计计算结果果是否一一样?为为什么?编程题55 编写写程序,从从键盘输输入学生生的三门门课成绩绩,求其其平均成成绩(保保留小数数点后11位)。4.较难难编程题题编程题11 当n为三三位十进进制整数数时,分分别求出出n的个个位数字字(diigitt1)、十十位数字字(diigitt2)和和百位数数字(ddigiit3)的的值。这里增加了一个题目输出示例例:n为整数数1522时,它它的个位位数字是是2,十十位数字字是5,百百位数字字是1提示:nn的个位位数字ddigiit1的的值是nn%100,
14、十位位数字ddigiit2的的值是(nn/100)%110,百百位数字字diggit33的值是是n/1100。编程题22 将从键键盘输入入的实型型十进制制数分离离为整数数部分和和小数部部分后输输出。如如输入2233.55,输输出为:2333.555=2333+00.555。编程题33计算定期期存款的的本金与与利息之之和。设设银行定定期存款款的年利利率raate为为2.225%,存存款期为为n年,存存款本金金为mooneyy元,具具体的数数字由键键盘输入入,编程程计算nn年后的的本金与与利息之之和(提提示,利用ppow函函数)。3.5 实验三 选择择结构程程序设计计一、实验验目的与与要求1. 理
15、解C语语言表示示逻辑量量的方法法,学会会正确使使用逻辑辑运算符符和逻辑辑表达式式。2. 掌握利用用if结结构实现现选择结结构的方方法。3. 掌握利用用swiitchh结构实实现多分分支选择择结构。4 结结合程序序掌握一一些简单单的算法法,学习习调试程程序5 实实验4学学时二、实验验内容1程序序改错题题改正下面面程序中中的错误误。输入入实数xx,计算算并输出出下列分分段函数数f(xx)的值值(保留留1位小小数)。 输入输出出示例11(改正后后程序的的运行结结果)Enteer xx:100f(1000.000)= 0.1输入输出出示例22(改正后后程序的的运行结结果)Enteer xx:23f(2
16、33.000)= 23.0源程序(有错误误的程序序)#inccludde#inccluddevoidd maain(voiid)douublee x;prinntf(Ennterr xx: n);scaanf(=%f, xx);if(xx = 1000) y = 11/sqqrt(x)elsse (x != 1000) y = x;priintff(ff(%.2f) = %.11fnn,xx,y);2一般般编程题题编程题11 输入任意意三个整整数a,b,cc,求33个数中中的最大大值和最最小值。编程题22输入x,计计算并输输出下面面分段函函数f(x)的的值(保保留2位位小数)。请请调用ssqr
17、tt函数求求平方根根,调用用poww函数求求幂。输入输出出示例(共共运行33次)Enteer xx:100f(100.000) = 33.166Enteer xx:00.5f(00.500) = 2.775Enteer xx:0f(0.00) = 0.00成本 编程题33有一函数数:x (-55x0) y= x-11 (x=0) x+11 (0x110)编写程序序,要求求用sccanff函数输输入x的的值,输输出y的的值。具体要求求如下:(1)用用if语语句实现现分支,自自变量和和函数值值均用实实数类型型。(2)自自变量用用scaanf函函数输入入,给一一些输入入提示。(3)运运行程序序,输入
18、入x的值值(分别别为-55x0,xx=0,00x10)三三种情况况,检查查输出的的y值是是否正确确。编程题44某服装店店经营成套套服装的的买卖,同时也允允许单件件销售。若若一次购购买不少少于700套,则则每套990元;若不足足70套套,则每每套1110元;只买上上衣每件件70元元;只买买裤子每每条600元。请请编写程程序假设设用户买买入x件件上衣和和y条裤裤子,请请编写程程序计算算相应的的应付款款是多少少?编程题55编写程序序实现:输入一一个整数数,判断断它能否否被3 、5 、7整整除,同同时输出出如下信信息。(1) 能同时被被3 、55 、77整除;(2) 能同时被被其中的的哪二个个数整除除
19、;(3) 能被其中中的哪一一个数整整除;(4) 不能被33 、55 、77任一个个数整除除。3较难难编程题题编程题11请用swwitcch语句句编程计计算员工工每月的的薪水。(expph3_1.ccpp)已知某公公司员工工的保底底薪水为为5000,某月月所接工工程的利利润prrofiit(整整数)与与提成的的关系如如下(计计量单位位:元): proofitt10000没有提提成;10000proofitt20000提成100%;20000proofitt50000提成155%;50000proofitt100000提成200%;100000proofitt提成255%。分析:为为使用sswit
20、tch语语句,必必须将利利润prrofiit与提提成的关关系,转转换成某某些整数数与提成成的关系系。分析析本题可可知,提提成的变变化点都都是10000的整整数倍(1000、2000、5000、),如果将利润profit整除1000,则相邻两个区间的重叠。为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可: proofitt10000对应0 10000proofitt20000对应1 20000proofitt50000对应2、3、4 50000proofitt100000对应5、6、7、8、9100000proofitt对应100、11、
21、12、编程题22编写程序序实现如如下功能能:输入入二个运运算数(eexp11,exxp2)和和一个运运算符(op),计算算表达式式expp1 oop eexp22的值,其其中OPP可以为为+、-、*、/、%五五个符号号中的任任一种(提提示:用用swiitchh语句实实现)。4.5 实验四 循循环结构构程序设设计一、实验验目的与与要求1 熟练掌握握用whhilee语句,ddo-wwhille语句句实现循循环的方方法。2 熟练掌握握用foor语句句实现循循环的方方法。3 对循环语语句的三三种形式式进行分分析、比比较,以以掌握各各种形式式的共同同之处与与其特点点。4 掌握循环环结构的的嵌套,掌掌握b
22、rreakk语句和和conntinnue语语句在循循环体中中的作用用。5 实验4学学时二、实验验内容1. 程程序验证证题与改改错题(1)程程序验证证从键盘输输入一个个整数,在在屏幕上上将其逆逆序数输输入,例例如输入入81993,输输出39918。#inccluddevoidd maain() innt xx,nuumbeer; prrinttf(请输入入一个整整数:); sccanff(%d,&x); doox=nuumbeer%110;numbber=nummberr/100;prinntf(%dd, x);whiile(nummberr!=00); prrinttf(n);如果输入入的是一
23、一个负整整数,程程序应该该如何改改?(2)程程序改错错计算表达达式1+2!+3!+10!的值,改改正下面面程序中中的多处处错误。源程序(有有错误的的程序)#inccluddevoidd maain(voiid)intt suum1,summ2, i,j; ffor(i=11;i10;i+) foor(jj=1,jbb) swaap(aa, bb); priintff(“%dt %d”, aa,b);思考:为为什么aa,b的的值没有有交换? 调用用函数ffun计计算:mm=1+2+33+4+99+100,并输出出结果。请请验证下下面的程程序是否否符合题题目要求求。#inccludde”sstdi
24、io.hh”int funn(innt n) int m, i;for (i=1; i=n; i+) m+=i;retuurn m;voidd maain() prinntf(m=%dn, fuun(110);在上面程程序的基基础上,修改程程序.计算m=1-2+33-4+9-10。(2)程程序改错错题 下列程程序的功功能是利利用自定定义函数数计算一一无符号号的整数数各位数数字的乘乘积。#inccluddeunsiigneed ff(unnsiggnedd nuum) unssignned k=00; do kk*=nnum/10;num/=100; whhilee(k); reeturrn k
25、k; voidd maain() intt x; priintff(“iinpuut xx=:n”); scaanf(“%dd”, x); priintff(“%d”, f(x);2一般般编程题题编程题11 编编写一函函数,把把输入的的4个数数字字符符转换成成一个iint数数据存放放,如输输入41123这这字符转转换为441233这个整整数,并并通过主主函数验验证结果果。编程题22编写程程序求:1*11*1+2*22*2+3*33*3+4*44*4+5*55*5提示:主主函数用用来现实实结果,ff1( )函数数用来求求一个数数的立方方,f22( )函数用用来求和和。#inccludde int
26、 f1(intt n)int f2(intt m)voidd maain()编程题33 定义义两个带带参数的的宏,将将两个参参数的值值相加和和相减,并并写出程程序,输输入两个个数作为为使用宏宏时的实实参。输输出相加加和相减减后的和和与差。编程题44编程输出出2到1100000之间间的所有有完数。所所谓完数数是指因因子之和和与它本本身相等等的数。如如6=11+2+3,66是一个个完数。要求:定定义函数数 faactoor(mm) 判判断m是是否为完完数;由由主函数数调用它它,来对对所有22到1000000之间的的所有数数进行判判断。#inccludde #inccludde int faccto
27、rr(innt mm) intt i,s=00; voidd maain() int i,m,ssum; 3较难难编程题题编程题11 用函函数调用用实现求求两个数数的最大大公因子子和最小小公倍数数编程题22 用递递归方法法求1+2+33+并将其中中素数去去除后之之和。#inccludde #inccludde int ispprimme (intt nuumbeer) longg faact(intt n) voidd maain() int m,ssum; 6.4实实验六 数组一、 实实验目的的与要求求1. 掌掌握一维维数组的的定义、赋赋值和输输入输出出的方法法。2. 理理解一维维数组的的存
28、储方方法及下下标的表表示方法法。3. 掌掌握与数数组有关关的算法法(特别是是排序算算法)。4. 掌掌握二维维数组的的定义、赋赋值和输输入输出出的方法法。5. 理理解二维维数组的的存储方方法及下下标的表表示方法法。6. 实实验4学学时。这里有改动二、实验验内容1程序序验证题题与改错错题(1)程程序验证证题 给定定一个整整型数组组a,要要求求出出其中小小于0的的元素的的个数。请请验证下下面的程程序是否否符合题题目要求求。#deffinee N 10voidd maain() int aNN=11,2,44,-11,5,-3,-666,0,10,-5;int i; /*变变量i用于foor循环环*/
29、 intt coountt=0; /*变量量couunt用用于技术术,初始始化为00*/for (i=0;iiN;i+) if(aai0)counnt+; /*如如果元素素aii00,couunt计计数+11*/ priintff(%dnn,ccounnt); 给定定一个整整型二维维数组aa(3,3),要要求求出出对角线线元素的的和。请请验证下下面的程程序是否否符合题题目要求求。#inccludde #deffinee N 3voidd maain() int aNNNN=1,2,33,4,55,6,77,8,9;int i,jj; /*变量量i,jj用于foor循环环*/ intt suum
30、=00; /*变量量summ用于求求和,初初始化为为0*/for (i=0;iiN;i+)for(j=00;jN;jj+) if (i=j)summ+=aaij; /*如如果是对对角线元元素,ssum+aiijj*/prinntf(%ddn,suum); retuurn 0;注1:在在程序验验证题的基础础上,修修改程序序,求出出数组aa中大于于a00的元元素之和和。注2:对对上述程程序进行优优化,消消除内循循环,实实现同样样的效果果。在 的基基础上,修修改程序序,求出出数组aa中反对对角线元元素之和和。提示示:内循循环用逆逆序;ii+j=N-1。(2)程程序改错错题2一般般编程题题编程题11:
31、从键键盘输入入10个个整型数数据,放放入数组组a 中中,求其其最大值值、最小小值及其其所在元元素的下下标位置置,并输输出。程序提示示:定义义10个个元素的的数组,用用forr循环语语句逐一一输入数数据;定定义最大大值变量量和最小小值变量量,用ffor循循环语句句遍历所所有数组组元素,逐逐一比较较查找最最大值和和最小值值。编程题22:给定定一个字字符数组组a,要求求将数组组的内容容倒置。如如:执行前数数组的内内容为1,22,3,4,55,6,7,88执行后数数组的内内容为8,77,6,5,44,3,2,11提示:用用i表示示数组的的第一个个元素的的下标;用j表表示数组组最后一一个元素素的下标标。
32、 交换aai和aj,当当i=j时交交换完毕毕。 交换一一个元素素后,ii+1,jj-1。编程题33:给定一个个二维数数组a,要要求将数数组的内内容逆置置。如:执行前数数组的内内容为1,2,33,4,55,6,77,8,9,执行后数数组的内内容为1,4,77,2,55,8,33,6,9提示:用用i表示示数组的的行下标标;用jj表示数数组的列列下标。以以对角线线元素为为界,交交换aij和和ajjii。编程题44:一个学习习小组有有5个人人,每个个人有三三门课的的考试成成绩。求求全组分分科的平平均成绩绩和各科科总平均均成绩。张王李赵周Mathh8061598576C7565638777Engllis
33、hh9271709085提示:可可设一个个二维数数组a53存存放五个个人三门门课的成成绩。再再设一个个一维数数组v3存存放所求求得各分分科平均均成绩,设设变量aaverragee 为全全组各科科总平均均成绩。3.较难难编程题题编程题11:给定定一个整整型数组组a,要要求将数数组a中中的元素素进行从从小到大大的排序序(用冒冒泡法排排序)【算法描描述】从第一个个数开始始依次对对相邻两两数进行行比较,如如次序对对则不做做任何操操作;如如次序不不对则使使这两个个数交换换位置。第第一遍的的(N-1)次次比较后后,最大大的数已已放在最最后;第第二遍只只需考虑虑(N-1)个个数,即即不用考考虑最后后一个数数;以此此类推每每次少考考虑一个个数,直直到第(NN-1)遍遍比较后后就可以以完成排排序。编程题22:有15个整整数(已已排序)存存放在一一个数组组中,输输入一个个数,要要求用折折半查找找法找出出该数在在数组中中的下标标值,如如果该数数不在数数组中,则则输出“无此数数”。这155个数用用赋初值值的方法法在程序序中给出出。要找找的数用用scaanf函函数输入入。提示:折折半查找找法:在在一个已已从小到到大排序序的数组组a中,用用b(bbegiin)表表示数组组首元素素的下标标,用ee(ennd)表表示数组组末元素素的下标标,需查查找的数数x首先先和处于于数组最最中间的的下标为为m=(bb+e
限制150内