《C语言程序设计Ⅰ》实验指导书.doc

上传人:飞****2 文档编号:78790162 上传时间:2023-03-19 格式:DOC 页数:32 大小:285.50KB
返回 下载 相关 举报
《C语言程序设计Ⅰ》实验指导书.doc_第1页
第1页 / 共32页
《C语言程序设计Ⅰ》实验指导书.doc_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《《C语言程序设计Ⅰ》实验指导书.doc》由会员分享,可在线阅读,更多相关《《C语言程序设计Ⅰ》实验指导书.doc(32页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C语言程序设计实验指导书(20112012学年第一学期)班 级: 学 号: 姓 名: 教 师: 李金洋 医药信息工程学院计算中心2011年10月目 录实验1、C语言编程环境和运行C程序的方法1实验2、简单的顺序结构程序设计3实验3、数据类型和表达式5实验4、选择结构程序设计8实验5、循环结构程序设计(1)12实验6、循环结构程序设计(2)15实验6、循环结构程序设计(2)16实验7、数组(1)20实验8、数组(2)22实验8、数组(2)23实验9、函数(1)25实验10、函数(2)28实验11、函数(3)30实验1、C语言编程环境和运行C程序的方法一、实验目的1、熟悉Visual C6.0集成

2、开发环境的使用方法;2、熟悉C语言程序从编辑、编译、连接到最后运行得到结果的过程及各过程的作用; 3、了解C语言程序的结构特征与书写规则,能够编写简单的C程序; 4、初步理解程序调试的思想,能找出并改正C程序中的语法错误。二、实验内容1、熟悉上机环境参照教材附录A(P370376)的内容,熟悉VC+6.0集成环境,重点是其中常用菜单、工具按钮的功能;在D盘建立一个自己的工作文件夹,文件夹以班名+学号后两位+姓名来命名(如:应用1105张三);分别创建、编辑并运行教材第1章中的3个例题,初步熟悉C源程序的结构特点和运行方式。2、编程参照教材例题1.1编写一个程序实现分两行输出自己的姓名及联系电话

3、。 遇到的主要问题及分析: 调试通过3、程序改错调试以下给定程序的功能是在屏幕上显示“Welcome to You!”,其中存在3处错误,请指出错误所在,并调试程序使其能运行得到正确结果。出错行号及更正后的代码:/1/2#includemian() /1 printf(Welcome to You!n)/2调试通过4、选做题自学教材P47内容以及附录B中的字符与ASCII码对照表,编程输出以下图形: JJJ 调试通过编程输出如下通讯录功能菜单界面调试通过三、实验要求1、将每次实验所编辑的C源程序调试通过后分别保存在D盘上自己的文件夹中(备查!)及自己的U盘中;2、对调试过程中出现的问题和解决方

4、法进行必要的记录,并予以简要分析四、实验小结结合本次实验简述C程序从编写到最终运行的一般过程,并简要说明其中每个步骤的作用及其生成的文件类型。实验2、简单的顺序结构程序设计一、实验目的1、熟练掌握格式化输入函数scanf()、格式化输出函数printf()的使用;2、掌握简单的顺序结构程序的编写以实现简单的数据处理;3、进一步熟悉VC+环境下C程序的编辑、编译、连接和运行的过程。二、实验内容1、编程:由键盘输入两个整型变量a和b的值。编程计算并输出a与b的和、差、积、商、a除以b的余数、ab的值。输入输出参考示例如下:提示:用到C语言的运算符(参见P52)+、-、*、/、%、函数pow()(参

5、见附录C P385)请输入a,b的值:a=3,b=2a+b=5a-b=1a*b=6a/b=1a%b=1ab=9调试通过2、编程:求一元二次方程ax2+bx+c=0的实根x1,x2,。a,b,c的值由键盘输入,设b2-4ac0。输入输出示例如下:请输入三个系数a,b,c的值: (提示:用到C语言的库函数sqrt()(参见附录C P385)a=1,b=3,c=2x1=-1.00x2=-2.00调试通过3、程序改错与调试:修改以下程序中的错误,并将调试的相关信息填入下表中。(特别提示:当程序在编译时发现很多错误,此时应从上到下改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。)1#inc

6、lude2Main()34int x=1;y;调试通过56y=x+;7printf(y=%d ,y)8int z;9z=+x;10print(z=%dn ,z);11程序中存在的错误及其相关信息一览表行号错误类型错误提示信息错误的原因及修改方案4、(选做)编写一个程序,要求从键盘输入一个3位整数,然后将它们逆序输出。(比如:输入123,输出321。提示:关键是想办法分别提取百位、十位和个位上的数字!)调试通过三、实验小结简单总结语言程序的结构和书写规则;你在上机过程中主要遇到哪些问题?如何解决的?实验3、数据类型和表达式一、实验目的1、理解C语言中基本数据类型,掌握整型、实型和字符型变量的定义

7、、赋值及使用方法;2、掌握C语言常用算术运算符的功能,掌握C表达式的书写方法、求值规则以及表达式计算中的类型转换;3、掌握C语言中各种数据的输入/输出方法,能正确使用各种格式符;4、初步熟悉C程序的调试方法(单步执行方式)。二、实验内容1、分别在VC+6.0和Win-TC中运行以下程序,观察输出结果是否相同?并简要说明原因。说明:运算符sizeof()用于求解C语言中不同类型数据所占内存字节数(参见附录D)运行结果:/1 ,/6 /2 ,/7 /3 ,/8 /4 ,/9 /5 ,/10 简要说明:#include main()int a=1;printf(char型占%d个字节;n,sizeo

8、f(char); /1printf(int型占%d个字节;n,sizeof(int); /2printf(long int型占%d个字节;n,sizeof(long);/3printf(float型占%d个字节;n,sizeof(float); /4printf(double型占%d个字节;n,sizeof(double); /5 printf(-n); printf(变量a的值的类型占%d个字节;n , sizeof(a); /6printf(表达式(float)a的值的类型占%d个字节;n, sizeof(float)a);/7printf(表达式2.0*a的值的类型占%d个字节;n, s

9、izeof(2.0*a);/8printf(表达式a+ a -2.0的值的类型占%d个字节;n, sizeof(a+ a -2.0);/9printf(字符串Hello! 占%d个字节;n , sizeof(Hello!); /102、程序改错并调试:下列程序的功能为: 输入一个华氏温度,要求输出摄氏温度。公式为:C= ,输出取2位小数。程序中有5处错误,请修改并调试程序,使其实现所要求的功能。(编译连接无误后单步执行)出错行号及其正确代码:程序修改正确后运行,若输入的华氏温度为120,对应的摄氏温度为: #include main() float c,f; /1printf(请输入一个华氏温

10、度:n);/2scanf(%f,f); /3c=(5/9)*(f-32); /4printf(摄氏温度为:%5.2fnc); /5调试通过3、编写程序计算出下列表达式的值(输出格式符根据表达式值的可能类型自行给出) 5 ln(103.5+2) sin(45)+e3 y+z%5*(int)(x+y)/2%4 (其中x=2.7,y=4.5,z=8) Z -A +a -A 表达式为 表达式的值为: 表达式为 表达式的值为: 表达式为 表达式的值为: 表达式为 表达式的值为: 表达式为 表达式的值为: 表达式为 表达式的值为: 运行程序后如果输入: 1【Enter】ab【Enter】则程序的输出结果为

11、:简要说明原因:如果要得到输出结果为a=1 b=a c=b,则正确的输入方法是: 4、编辑并运行下面程序:#include main()int a,b,c; a=getchar(); b=getchar(); c=getchar(); printf(a=%d b=%d c=%dn,a,b,c); printf(a=%c b=%c c=%cn,a,b,c);5、编程由键盘输入一个圆柱体的底面半径r和高度h的值,编程计算并输出该圆柱体的体积。(注意:体积=底面积*高,要求将圆周率定义为符号常量PI)调试通过编写一个程序,从键盘输入一个大写字母,输出该字母及其对应的ASCII码值,同时输出其小写字母

12、及其对应的ASCII码的值。调试通过(选做题)编写程序,从键盘输入两个数字字符并分别存放在字符型变量a和b中,要求通过程序将与这两个字符对应的数字相加后输出,例如,输入字符型数字7和5,输出的则是整型数12。(提示:通过“数字字符-0得到对应数字”)。调试通过三、实验小结简要小结一下自己C语言学习的情况,主要存在哪些问题,什么原因?是否按老师的要求做了课前预习和课后复习?对老师的教学有什么建议?实验4、选择结构程序设计一、实验目的1、熟悉关系表达式、逻辑表达式的书写和求值;2、掌握if语句的三种基本形、switch语句的结构及其应用;3、能综合运用if语句与switch语句实现多分支选择;4、

13、熟悉并掌握程序的“单步执行”、“断点设置及跟踪”等调试方法。二、实验内容上机的结果: 分析的结果: 1、逻辑表达式验算:设已有定义int a=3,b=4,c=5;先自行计算下面各逻辑表达式的值,然后编写程序上机验证你分析的结果是否正确。a+bc&b=c !(ab)&!c|1 !(x=a)&(y=b)&0!(a+b)+c-1&b+c/2 (a=b+c,bc-1)&(b+=c)|(b*2=a+c) (c-a)/2+bc!=b-a; 2、程序填空:以下程序的功能为:从键盘输入依次输入操作数、运算符、操作数,如果运算符是+、-、*、/之一,则进行相应的四则运算,否则输出运算符有误。在程序的空白处填入正

14、确的语句,使得程序能正常执行并完成规定的功能。main() int a,b,c;【1】 【2】 【3】 char op; printf(Please input a expression:); scanf(%d%c%d, 【1】 ); switch(op) case +:c=a+b; printf(%d+%d=%dn,a,b,c); break; case -:c=a-b; printf(%d-%d=%dn,a,b,c); break; case *:c=a*b; printf(%d*%d=%dn,a,b,c); break;调试通过 case /:if( 【2】 ) printf(Divis

15、or is zeron); else printf(%d/%d=%fn,a,b,( 【3】 )a/b); /*强制类型转换*/ break; default:printf(输入的运算符有误!n); 3、程序改错调试(请纠正程序中存在错误,使程序实现其功能)下列程序的功能为:输入1个字母后,输出该字母的前序字母、该字母、该字母的后序字母,例如:输入d,则输出cde;输入a,则输出zab;输入P,则输出OPQ;输入Z,则输出YZA。调试后正确的代码为:#include main() char ch,c1,c2; printf(Enter a character:); ch=getchar(); i

16、f(ch=a)|(ch=z) ch-=32; c1=ch-1; c2=ch+1; if(ch=A) c1=ch+25; else if(ch=Z) c2=ch-25; putchar(c1); putchar(ch); putchar(c2); putchar(n);调试通过下列程序的功能为:输入1-4月份号,输出该月份对应的英语表示法。例如,输入“3”,则输出“March”。#include stdio.hmain() char m; printf(“input the month number:n”);调试后正确的代码为: scanf (“%c”,&m); switch (m) case

17、1:printf (Jan); case 2:printf (Feb); case 3:printf (Mar); case 4:printf (Apr); 调试通过4、编程:根据上网时间t计算并输出上网费用cost,计算公式:同时为了鼓励多上网,每月收费最多不超过300元。调试通过判断用户从键盘输入的任意一个字符是数字字符、字母字符还是其他字符,要求有必要的输入提示和输出信息;如果输入的是英文字母,再利用switch语句判断该字母是否是元音字母,并以“yes”或“no”字样输出判断结果。调试通过编程实现:任意输入一个百分制成绩,输出成绩等级A、B、C、D。当输入的分数小于0分或大于100分时

18、,显示出错信息;在85100分时为A,7084分为B,5569分为C,55分以下为D。(要求:综合应用if和switch结构实现,参考教材P102例题4.6)调试通过(选做)编程实现:对任意输入的一个日期(年year、月month、日day),计算并输出该年该月该日是这一年的第几天。(提示:本题要综合应用到if、switch结构)调试通过三、实验小结对选择结构掌握的情况如何?主要存在什么问题?实验5、循环结构程序设计(1)一、实验目的1、熟悉for、while、dowhile三种循环语句的结构和执行流程,体会三种循环语句的异同,能够根据实际问题选用适合的循环语句。2、掌握用循环的方法实现常见实

19、际问题。3、进一步熟悉调试程序的方法(单步执行、运行到光标位置、断点设置及跟踪)。二、实验内容1、程序调试改错:(请纠正程序中存在的错误,使程序实现其功能)下面程序的功能是:输入10名学生某门课程的成绩,计算平均分,并求出其中的最高分和最低分。出错行号及正确代码: #includemain() /1int i; /2float score,max,min,sum,ave; /3printf(Please enter score of student:n); /4scanf(%f,&score); /5max=min=sum=0; /6for(i=1;iscore) /10max=score;

20、/11调试通过else if(minscore) /12min=score; /13ave=sum/10; /14printf(Average=%6.2fnMax=%6.2fnMin=%6.2fn,ave,max,min); /15出错行号及正确代码:下面程序的功能为:逆序输出26个大写英文字母。#include main() /1char x; /2 x=Z; /3 while(x=a) /4 printf(%3d,x); /5调试通过 x+; /6 2、程序填空(在程序的空白处填入正确的语句,使得程序能正常执行并完成规定的功能)下列程序的功能为:用辗转相除法求两个正整数的最大公约数。“辗转

21、相除法” 求两个正整数的最大公约数的算法提示如下: 将两数中大的那个数放在m中,小的放在n中。 求出m被n除后的余数r。 若余数为0则执行步骤;否则执行步骤。 把除数作为新的被除数;把余数作为新的除数。 求出新的余数r。【1】 【2】 【3】 【4】 【5】 重复步骤到。 输出n,n即为最大公约数。 #include main () int r, m, n, 【1】 ; scanf (%d%d,&m,&n); if (mn) 【2】 r = m%n; while (r)m=n;n=r;r= 【3】 ;调试通过 printf (%dn,n);下列程序的功能为:计算1020个西瓜几天后能卖完(第一

22、天卖了一半多两个,以后每天卖剩的一半多两个)。#include 用for循环实现(编程题)main() int day,x1,x2; day=0; x1=1020; while( 【4】 ) x2= 【5】 ; x1=x2;day+; printf(day=%dn,day); 3、编程:输入一个实数x和一个正整数n,输出xn。要求分别用for、while、dowhile语句来实现。用dowhile循环实现用while循环实现用while循环实现 编程求1到n中能被3或7整除的数之和,n的值由键盘输入。请分别用for循环语句和while循环语句完成用for循环 用while循环任意输入一串字符(

23、敲回车键结束输入)。分别统计出其中英文字母、数字字符、其它字符的个数。(选做)编写程序:从键盘输入x,利用幂级数展开计算sinx的近似值,要求误差小于10-6。(选做)编写程序:任意输入一串字符(敲回车键结束输入),将其中所有的大写字母均转换为小写,然后将所有字母均用其前面的第3个字母替换,其他字符不变,输出转换后的字符串。例如:如果输入Asia Game 2010,输出xpfx dxjb 2010.三、实验小结简单谈谈本次实验完成的情况。对三种循环语句掌握的情况如何,目前主要存在哪些问题?实验6、循环结构程序设计(2)一、实验目的1、掌握break、continue语句的作用、区别及使用方法

24、;2、掌握循环结构的嵌套(至少两层);3、掌握用循环的方法实现一些常用算法;4、进一步熟悉调试程序的方法(单步执行、运行到光标位置、断点设置及跟踪)。二、实验内容1、程序改错调试:以下程序的功能是用人机对话的形式进行加、减、乘、除运算。用户每输入一次运算数和运算符,系统输出相应的计算结果,例如,当用户输入3+5后,系统输出3+5=8.00,进行除法运算时要判断分母是否为0;只有当输入的运算符为“#”时才结束整个程序的运行。程序中两行存在错误,调试以实现要求的功能。#include #include main() /1 int i=1,flag=0; /2 /i代表题号,flag作为标志变量进行

25、分类 float a,b,result; /3 /a、b分别为参加运算的两个数,result为运算结果 char sym; /4 / sym为运算符 printf(请输入操作数1 运算符 操作数2:n); /5 while(sym!=#) /6 flag=0; /7出错行号及正确代码: printf(第(%d)题:,i); /8 scanf(%f%c%f,&a,&sym,&b); /9 switch(sym) /10 case +:result=a+b;break; /11 case -:result=a-b;break; /12 case *:result=a*b;break; /13 ca

26、se /: /14 if (b=0) /15 flag=1; /16 else /17 result=a/b; /18 continue;/19调试通过 case #:flag=3;break; /20 default: flag=2; /21 if (flag=0) /22 printf(%0.1f%c%0.1f=%0.2fnn,a,sym,b,result); /23 i+; /24 if (flag=1) printf(除数为零!请重新输入!nn); /25 if(flag=2) printf(运算符错误!请重新输入!nn); /26 if(flag=3) printf(结束!nn);

27、/27 2、程序填空(在程序的空白处填入正确的语句,使得程序能正常执行并完成规定的功能)下列程序的功能为:对任意输入的一个整数,输出它的位数以及各位数字之和,例如,若输入123,则输出“123的位数为3,各位数字之和为6”。#includemain() int a,n,len=0,sum=0,num; /*n代表整数a的每一位数字,len代表a的位数*/printf(请输入一个整数a=);scanf(%d,&a); 【1】 ;【1】 【2】 【3】 while(a0)n= 【2】 ; /*求整数的个位、百位、.位的数字*/sum+=n; 【3】 ;len+;printf(整数%d共有%d位,n

28、um,len);printf(其各位数字之和为%dnn,sum);以下程序的功能是:给出年、月、日,计算出该日是该年的第几天。请填空完善程序。【4】 【5】 【6】 【7】 main() int year,month,day,days,i,d;printf(请输入年,月,日:);scanf(%d,%d,%d,&year,&month,&day);days=0;for(i=1;imonth;i+)switch( 【4】 )case 1:case 3:case 5:case 7:case 8:case 10:case 12:d=31; 【5】 ;case 4:case 6:case 9:case

29、11:d=30; 【6】 ;case 2:if(year%4=0&year%100!=0|year%400=0) d=29;else d=28;days+=d;printf(%d年%d月%d日是该年的第%d天。n,year,month,day, 【7】 ); 3、编程:编程输出如下图所示的下三角形乘法九九表。中国古代数学家张丘建提出的“百鸡问题”:一只大公鸡值五个钱,一只母鸡值三个钱,三个小鸡值一个钱。现在有100个钱,要买100只鸡,是否可以?若可以,给出一个解,要求三种鸡都有。请写出求解该问题的程序。编程输出如下图形(要求以第30列为对称轴)。 统计100之内素数的个数(2是最小的素数),

30、并将这些素数按每行10个输出。4、选做题程序改错调试:下列程序的功能为:找出1000以内的所有完数(一个数等于它的所有因子之和,这个数就称为“完数”,例如28的因子1+2+4+7+14=28,则28即为一个“完数”)。程序中有2行存在错误,请调试修改,以实现程序所要求的功能。#include stdio.h /1出错行号及正确代码:main() /2int a,k,s=0; /3for(k=2;k1000;k+) /4 s=s; /5for(a=1;a=k/2;a+) /6if(k/a=0) /7s+=a; /8if(s=k) /9printf(%d is OK!n,k); /10 编程验证哥

31、德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和。如,6 = 3 + 3,8 = 3 + 5,10 = 3 + 7,10 = 5 + 5,.20 = 3 + 17,20 = 13 + 7等。编程将6100之间的偶数都表示为2个素数之和。三、实验小结谈谈本次实验完成的情况。到目前为止你掌握的情况如何,主要问题是什么?实验7、数组(1)一、实验目的1、掌握一维数组的定义、初始化及其使用方法;2、熟悉二维数组的定义、初始化及其使用方法;3、熟练掌握利用数组实现常用算法;4、进一步熟悉调试程序的方法(单步执行、运行到光标位置、断点设置及跟踪)。二、实验内容1、程序改错调试: 程序的功能是:输入10个数,求出这些数中的最大值、最小值以及平均值,并按照每行5个数的格式输出。出错行号及正确代码:#include /1#define N 10; /2main() /3int i,sum=0,aN,max,min; /4for(i=0;iN;i+) /5scanf(%d,ai); /6 sum=max=min=a0; /7for(i=0;imax) /10max=ai; /11else

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

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

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com