C语言程序设计上机指导书及答案.doc
姓 名_学 号_专 业_日 期_指导原则促进学生针对实际问题,用所学 C 语言知识编写符合规范的源程序代码,在某一集成开发环境下尽一切调试技能调试程序,并对运行结果进行分析处理,得出正确结论,解决好实际问题。更快更好地掌握所学知识,技能和软件的一向开发方法目的1, 通过上机实验,加深对教材内容的理解,特别是一些语法规定,熟练掌握各种语法规则。2, 通过上机实验,熟悉某个 C 语言集成开发环境。掌握集成开发环境下程序的编辑、编译与连接、运行的完整过程3, 通过上机实验,要学会调试程序。能根据系统给出的“出错信息” ,判断错误所在,并修改错误,使程序正确运行。要求1, 复习与本次实验相关的教学内容2, 了解集成开发环境的操作步骤3, 准备好实验内容。对于编程题,一定要自己动手,书写工整,并人工检查无误后才能上机实验,以提高上机效率。4, 要准备好调试和运行程序时所需的数据。5, 对运行中可能出现的问题事先作出估计,并对程序中有疑问的地方作上标记,以便在运行时给予注意。并在程序调试时,把系统给出的出错原因,解决方法等记载在源程序之后;程序运行结束后,把运行结果也记录下来。6,每个实验应独立完成,对实际问题所编写的源程序需写出完整实验的报告。第一次上机作业 熟悉 C 语言集成开发环境实验目的1, 熟悉 C 语言集成开发环境2, 掌握集成开发环境下文件的编写与调用,源程序的编译与调试,程序运行结果的观察与分析。3, 掌握 C 语言程序的基本结构实验要求1, 程序编写完后,要对输入的每一个符号和词进行检查核对,不能有错。2,编写源程序时,不要在中文输入法下进行,也不要有首字符大写,否则调试时,会有错误。实验内容 1, 在 D 盘新建文件夹DC 语言程序 (所在班级如 0709401)(自己学号或姓名如 01) ,作为以后所做程序的存放位置。注每次换机器须重复此操作。2, 编辑,编译,运行下面程序并存盘,文件名为 ex1_1.c/* 输出信息的 C 源程序,文件名为 ex1_1.c */include”stdio.h”void main printf“Hello, Everyone n Study hardn”; 输出结果为 Hello, Everyone Study hard3, 调入文件 ex1_1.c,把程序修改成下面形式,运行,存盘 ,文件名为 ex1_2.c/* 输出信息的 C 源程序,文件名为 ex1_2.c */include”stdio.h”void main printf“Hello, Everyone n ”; printf“ Study hardn”;输出结果为 Hello, Everyone Study hard _, ”n”的作用是 换行4, 编辑,编译,运行下面程序并存盘,文件名为 ex1_3.c/* 计算圆面积的程序,文件名为 ex1_3.c */include”stdio.h”void main float r,area;printf“r”;scanf“f”,area3.1415926*r*r;printf“arearfn”,area;第一次运行时输入 1,运行结果为 area3.141593再次运行时输入 10,运行结果为 area314.159260把语句 printf“arearfn”,area;修改为printf“arear0.1ffn“,r,area; 后,运行时输入 10,这时程序的运行结果为_area(10.0)314.159260操作步骤一, TurboC 2.0 集成开发环境(1) 熟悉 C 语言集成开发环境进入集成开发环境(菜单模式)执行文件 TC.文件菜单(file)FILE 中有NEW(新建文件) ,LOAD(或 OPEN 打开或调入文件) ,SAVE(保存文件) ,SAVE AS,QUIT(退出C 语言集成开发环境)编译菜单compile COMPILE TO OBJ (路径名 文件名)运行菜单run RUN , USER SCREEN选项(option) DIRECTORY (注明 TC。 的当前目录路径,路径不符合,编译程序找不到库函数所在头文件,编译会出错)从菜单进入编辑区的按键Enter从编辑区进入菜单的按键F10 注运行出错时,按 F10 也可回到菜单区,按 EDIT 进入编辑区(2) 掌握 C 语言源程序的编写( new FILE) ,编译compile to obj COMPILE,运行run RUN ,观察结果 user screen RUN四个步骤。编译出错时,按 ENTER 键,然后在光标所在行或上一行查找出错位置。同时在顶行红字部分(英文提示)找出错原因。(3) 掌握一定的调试方法。方法在已编译好的程序中人为制造错误(如删除标点符号,改错保留字(int, printf, scanf) ,确定出错位置(光标所在行) ,猜测出错原因(根据顶行英文提示) 。二,Visual C6.0 集成开发环境1,启动 Visual C 6.0 环境方法单击 “开始”-“程序”-“Microsoft Visual studio 6.0”-“Microsoft Visual C 6.0”命令,启动 Visual C, VC6 主窗口如下菜单栏项目工作区标题栏输出区工具栏状态栏文件编辑区2. 编辑源程序文件(1)建立新工程项目单击“文件”“ 新建”,弹出“新建”对话框。单击“工程”选项卡;单击“Win32 Console Application”选项;“工程文件” 框中输入项目名(如 gc1) ;“ 位置” 框输入文件保存文件夹或单击 “”打开文件夹浏览窗口,选择新项目文件所需保存的位置,单击“确定”按钮。 弹出“Win32 Console Application Step 1of 1”对话框,在对话框中单击 “An empt project”按钮和“完成”按钮。系统显示“新建工程信息”对话框。单击“确定”按钮。 (2) 建立新项目中的文件单击“文件”-“新建” ,弹出“新建”对话框。 选择“文件”选项卡。单击“C Source File”选项,在“文件”文件框中输入文件名,单击“确定”按钮。系统自动返回 VC6 主窗口。显示文件编辑区窗口,在文件编辑区窗口输入源程序文件。3, 编译和连接方法一选择主窗口菜单栏中“编译”菜单项;系统弹出下拉菜单,选择“构件”菜单命令。方法二单击主窗口编译工具栏上的 “Build”按钮进行编译和连接。注(1)系统对程序文件进行编译和连接,生成以项目名称命名的可执行目标代码文件.。(2)编译连接过程中,系统如发现程序有语法错误,则在输出区窗口中显示错误信息,给出错误的性质、出现位置和错误的原因等。如果双击某条错误,编辑区窗口右侧出现一个箭头,指示再现错误的程序行。用户据此对源程序进行相应的修改,并重新编译和连接,直到通过为止。 4. 执行方法一单击“编译”菜单中“执行”命令。方法二单击主窗口编译工具栏上的 “Build cute”按钮来执行编译连接后的程序运行成功,屏幕上输出执行结果,并提示信息“Press any key to continue”。此时按任意键系统都将返回 VC6 主窗口。注在执行程序过程中出现运行错误。用户要修改源程序文件并且重新编译、连接和执行。第二次上机作业 掌握基本数据类型在程序中的正确应用实验目的1 熟悉 C 语言集成开发环境及程序编写、编译、运行,观察运行结果2 掌握基本的调试技巧(缺少标点符号,函数名错误或不一致)3 熟悉 C 语言基本数据类型( int,long ,unsigned int,float,double,char )的输入,输出格式(d,ld , f,lf ,c,o ,x,u)实验内容1, 输入半径,求圆的面积(要求圆周率用符号常量表示) (查错改错 1 圆周率的定义名与使用名不一致; 查错改错 2 面积的输出格式用d) 。作业 1 程序如下,调试改正两处错误 ,正确运行后将文件保存为 ex2_1.cdefine pi 3.1415927include“stdio.h“main float area,banjing;printf“please enter a datan“;scanf“f“,areap*banjing*banjing; /* 圆周率的定义名 pi 与使用名 p 不一致*/printf“n the area of yuan is dn“,area; /* 面积的输出格式d 改为f */A调试,语法错误如下出错信息为 Dvcfileex1ex.cpp7 error C2065 p undeclared identifier中文意思为符号p没有定义。错误原因及更正圆周率的定义名 pi 与使用名 p 不一致, p改为pi运行B观察及分析运行结果,逻辑错误分析半径为 3 时,圆的面积应为pi 3328.2743343,不能为负数。查错先查面积变量 area 的输出格式,再往上逆推查其运算方法,最后查其定义错误原因及更正面积的输出格式d(整数)改为f (实数或单精度浮点数)2,调入 ex2_1.c 另存为 ex2_2.c,并做如下修改后,保存调试运行程序,观察系统出出错信息(英文) ,并翻译成中文。注每改一次,就调试一次。1)将语句float area,banjing ;改为floatarea,banjing;则出错信息为FC 语言作业 1.cpp4 error C2065 floatarea undeclared identifierFC 语言作业 1.cpp4 error C2065 banjing undeclared identifierFC 语言作业 1.cpp7 error C2065 area undeclared identifier中文意思为文件的第四行有错,符号floatarea 没有定义错误原因及更正floatarea中 float 与 area 之间少了空格,加上空格2 将语句printf(”please enter a datan”); 改为 printf(”please enter a datan”)则出错信息为FC 语言作业 1.cpp6 error C2146 syntax error missing before identifier scanf中文意思为文件的第六行有错错误原因及更正少了“;” ,在第六行后加上“;”3) 将语句scanf“f”, 改为scan“f”,则出错信息为FC 语言作业1.cpp6 error C2065 scan undeclared identifier中文意思为文件第六行scan没有定义错误原因及更正scan后少了 f,加上 f4 将语句 float area,banjing;中英文标点符号“;”或“, ”,改为中文输入法全角字符后,再输入同样标点则出错信息为FC 语言作业1.cpp4 error C2018 unknown character 0 xa3FC 语言作业 1.cpp4 error C2018 unknown character 0 xacFC 语言作业 1.cpp5 error C2146 syntax error missing before identifier printf中文意思为系统不能识别字符“, ”错误原因及更正将“, ”改为英文输入法输出的“, ”第三次上机作业 运算符与表达式的使用实验目的1, 熟悉 C 语言集成开发环境和熟悉 C 语言程序结构2, 掌握一定的调试技巧。3, 熟悉运算符与表达式的正确使用。作业内容要求1, 程序填空,以下程序输入 3 个整数值 给 a,b,c,程序把 b 中的值给 a,把 c 中的值给b,把 a 中的值给 c,交换后输出 a,b,c 的值,例如输入 1 2 3,输出 a2,b3,c1include“stdio.h“void main int a,b,c, t;printf“enter a,b,c“;scanf“ddd“, /*输入 a,b,c 的值*/ta; ab; /*把 b 中的值给 a,*/bc;ct; /* 把 a 的原来值给 c*/printf“ad bd cdn“,a,b,c; */1,填空后,运行程序,结果如下enter a, b,c1 2 3a2, b3, c1 2,在程序输出语句前插入语句clrscr; 根据运行结果,说明其作用TC 下清屏命令在程序输出语句后插入语句getchar;根据运行结果,说明其作用等待键盘输入字符2, 调试以下程序(划横线处有错) ,写出运行结果并简要回答为什么(即了解程序的运行过程)include”stdio.h”main intx,y,z; x6;y100;zx/y;printf“xd,yd,zdn”,x,y,z; zxy*x printf“xd,yd,zdn”,x,y,z; 运行结果x7,y99,z0 x8,y98,z742第四次上机作业 掌握顺序结构程序设计实验目的4, 熟悉 C 语言集成开发环境和熟悉 C 语言程序结构5, 掌握一定的调试技巧。6, 熟悉运算符与表达式的正确使用。7, 掌握语句的正确书写,学会编写顺序结构的程序。作业内容要求1, 编写程序求解已知半径 r3 厘米(cm).求球的体积 v;源程序代码 上机调试后,源程序中需修改的对应部分include“stdio.h“define pi 3.1415926void mainfloat a,b,r3;double v;a4.0;b3.0;va/b*pi*r*r*r;printf“vfn“,v; 程序运行结果v113.0973342, 以下叁个程序,选一个做。1) 输入两个整数,求其和,差,积,商和余数2) 输入一个三位数,依次输出其个位数字,十位数字,百位数字。3) 用公式 求三角形的面积(其中 ,a,b,c 为csbascbas21三角形的三边长)要求1, 确定所需的输入变量,输出变量,中间变量的个数及命名,并为其选取正确的数据类型。2, 根据正确的逻辑顺序书写程序。 (变量先说明再赋值后使用;先输入再处理后输出;3, 每次输出必须有提示信息。如printf“n xyf”,xy; 其中xy 是提示信息。题号第 3 题源程序代码include include void main float a,b,c; double area; scanf“fff“, ifabc bac caba 源程序中需修改的对应部分include include include main int a,b,c;float s,are; double s,area; a3,b4,c5;printf“enter three datasn”;scanf“ddd”,a,b,c; scanf“ddd“, s1/2*abc; s1.0/2*abc; areasqrts-a*s-b*s-c*s; areasqrts-a*s-b*s-c*s; printf“ad,bd,cdnaread”,a,b,c,area; areaf2, 编程求三角形面积 , (C 的单位为度数,库函数中自变量单位为absin21弧度数) (已知a5, b3, C30o)注意1,表达式的正确书写格式,2,程序的设计方法,3,检查、核实程序的顺序的正确性代码define pi 3.1415927include include void main int a,b;double c,s;a5,b3;c1.0/180*pi*30;s1.0/2*a*b*sinc;printf“slfn“,s;运行结果s3.750000第六次上机作业 分支结构程序实验目的1, 熟悉输入输出格式的使用2, 掌握逻辑运算符的特殊运算规则3, 了解简单的分支结构程序设计4, 学会阅读程序的基本技巧(参考第七讲分析程序运行过程)上机内容1, 阅读下面程序,计算运行结果,然后上机验证。include void main int c,d,e;double a,b,t;a3.6,b-3.2;ifabta; ab;bt; /* 思考该复合语句 的功能 */printf“n5.2f,5.2f”,a,bc1,d1;ec /* 注意运算符的优先级和运算规则 */printf“ncd,dd,ed”,c,d,e;edc;pirntf“ncd,dd,ed”,c,d,e;运行结果-3.20,3.60c0,d 1,e0c0,d2,e02, 程序填空,输入 x 值,计算下面的函数值 ,并输出结果13xy0程序如下 include“stdio.h“void main double x,y;scanf“lf“, x 类型与输入格式ifx0,b0,c0n“;scanf“ddd“,ifabcareasqrts*s-a*s-b*s-c;printf“area6.2fn“,area; 输出面积elseprintf“nthree data a,b,c cant a trianglen“;运行结果enter three positive numbers a b ca0,b0,c03 4 5 area 6.002, 编程求一元二次方程 的根2xc0根据不同的系数 a,b,c 有以下的几种情况1, 时,方程有两不等实根 x1,x22a0,b-4c2, 时,方程有两相等实根 x1x23, 时,方程有两共轭虚根 x1,x22a,-cinclude void mainfloat a ,b,c,disc,x1,x2,y1,y2;printf“please entera,b,cn“;scanf“f,f,f“,discb*b-4*a*c;ifa0 if b0if c0 printf“the quadratic equation has many rootsn“;else printf“the quadratic equation has no rootn“;else x1x2-c/b;printf“x1x2.2fn“,x1;else ifdisc0x1-bsqrtdisc/2*a;x2-b-sqrtdisc/2*a;printf“the roots of the quadratic equationx1.2f,x2.2fn“,x1,x2;elsex1x2-b/2*a;y1y2sqrtabsdisc/2*a;printf“the roots of the quadratic equationx1.2f.2fi,x2.2f-.2fin“,x1,y1,x2,y2;动态测试数据准备,根据前面分析,应准备 6 组数据第一组数据a1,b2,c-3 运行结果 the roots of the quadratic equationx11.00,x2-3.00第二组数据a1,b2,c1运行结果the roots of the quadratic equationx1-1.00,x2-1.00第三组数据a1,b2,c2 运行结果the roots of the quadratic equationx1-1.001.00i,x2-1.00-1.00i第四组数据a0,b2,c3运行结果the roots of the quadratic equationx1x2-1.5第五组数据a0,b0,c1 运行结果the quadratic equation has no any root 第六组数据abc0运行结果the quadratic equation has many roots第八次上机作业 循环结构程序设计(一)实验目的1,掌握程序的基本设计方法(能分析具体问题的算法,输入输出,流程)2,掌握 while 循环的语义、语法和它的使用。 (能根据流程写程序,根据程序写流程)3,能正确阅读程序,根据问题说明把程序补充完整上机内容1, 填空,使程序完整问题说明 输出所有水仙花数。 (水仙花数是三位自然数,其各位数字的立方和等于该数,例 153 )3351程序include“stdio.h“mainint I,x,y,z; 变量或函数说明I100;whileIincludevoid mainfloat h1,h2;h150.0;int n;n1;whilenvoid main int n1,n2,n3;double s10,s20,s31;forn11;n1void main int I,j,sum0;forI101;IIsumI; 素数条件jvoid mainint a,n,i1,sn0,tn0;printf“a,n“;scanf“d,d“,while idefine N 20void main int I,aN,bN; 定义两个数组float s;a02; 数组元素初始化b01;forI1;Idefine N 8void main int i,aN1,2,3,4,5,6,7,8; int k,temp;fori0;ivoid main int a823,145,65,73,12,74,91,5;int i,j,temp,k;for i0;iaitempai;aiaj;ajtemp; fork0;kbxb;xxcxc;return x;第十五次上机作业 函数(二)实验目的1,能正确理解和阅读带自定义函数的程序。2,进一步熟练掌握自定义函数的定义、说明和调用。3,能熟练使用定义函数编程上机内容1, 程序填空说明求一个数组中各元素的最大元并输出。程序include”stdio.h”define N 6main int aN,I,max;int maxvalueint a,int m;forI0;Imax maxak;return max;程序运行结果输入 3 2 8 7 6 9max of the aN is 92, 用自定义函数编程输入三角形的三边的边长,求其面积。面积计算公式 sqrtpp-ap-bp-c, p 为周长的一半。主函数应包含输入无效数据的情况(即 a,b,c 不能构成三角形的三边或它们有一个负数) 。源程序代码 include“stdio.h“include“math.h“float areafloat a,float b,float cfloat pabc/2;float area;areafloatsqrtp*p-a*p-b*p-c;return area;void mainfloat a,b,c;printf“type in a,b,cn“;scanf“f,f,f“,ifabcelse printf“errorn“;运行结果type in a,b,c3,4,5area6.00第十六次上机作业 函数(三)和预处理实验目的1, 能熟练使用定义函数编程,理解函数的参数传递过程。2,能正确阅读带宏定义的程序,掌握宏定义的正确替换。 3, 掌握宏定义和带参数宏定义的简单使用。上机内容1,阅读程序,写出程序运行结果并分析原因程序 1include”stdio.h”define POW1x x*xdefine POW2x x*xmain int x7,y8;printf“pow1dn”,POW1xy;printf“pow2dn”,POW2xy;运行结果pow171pow22252,程序填空问题说明利用下列公式求圆周率的近似值,借助宏定义修改 N 值,试计算的若干近似2221.316n值。如 N10 或 N50 或 N100)程序include“stdio.h“include 数学库函数define N 100main long k;double pi0.0;fork1;kvoid mainint n;int naturalint;printf“type in nn“;scanf“d“,printf“sumdn“,naturaln;int naturalint nint sum0,i;fori1;i*yxy; 返回函数值指针程序说明判断输入的数据是正数还是负数main void positive,negative;int j;void *pfint; /* 定义指向函数的指针 */printf“enter a data”n”;scanf“d”,pfj 对应位置修改include“stdio.h“bool funchar *c void funchar *c if*cA