1、1实验一 熟悉 C 程序的运行环境时间:2010/10/25一、实验目的1. 熟悉 ANSI C 程序的运行环境;2. 了解计算机系统对高级语言的基本操作方法;3. 熟悉和了解 WinTC 系统软件的使用和操作;4. 能进行简单的 C 语言程序录入、调试、编译和运行;5. 了解语言中数据类型的意义。二、实验内容参照实验教学大纲安装和运行 C 编译程序,练习编辑、编译和运行几个简单 C 程序。1. C 语言上机步骤:(A)启动后请选择 WinTC 编译平台。(B)常用命令:编译(F9 ) ,运行(CTRL+F9)2. 编制简单程序,实现程序输出“Hello world!” 。3. 编制 C 程序
2、,实现计算键盘输入的两整数的积及平均值 ,并在屏幕显示过程。include main()int Var1,Var2,Multi,Avg;scanf(“% Var1,% Var2,avg = (var1+var2)/2;multi = Var1*Var2;printf(“The average is :”avg);printf(“The multi is :”multi);三、调试步骤及运行结果1. 调试步骤:1静态地检查所编制程序,改正程序中的错误。2编译并运行所编制程序,若有,则记下出错信息。3按照事先静态检查后所改正的情况,进行纠错。4编译执行纠错后的程序。如还有错误,再编辑改正,直到不出
3、现语法错误为止。5下面给出组测试用例,你认为哪几组较好?为什么?()0,0()0,99()20,50()33000,20()-5,-2()-5,2要进行较全面的程序试运行并获得尽可能多的测试结果,你认为应当用几组测试用例?22. 调试无语法错误后,分别使用下列测试用例对上述程序进行测试:()2,6()1,3()-2,-6()-1,-3()-2,6()-1,3()1,0()1,6()32800,33000()-32800,330001分析上述哪几组测试用例较好?通过测试,你发现程序有什么错误了吗?若有错误,请指出错误原因。操作符 sizeof 用以测试一个数据或类型所占用的存储空间的字节数。请编
4、写一个程序,测试各基本数据类型所占用的存储空间大小。四、分析与讨论1. 记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论对策成功或失败的原因。2. 总结程序的结构和书写规则。 (简要)3. 如何正确地选用数据类型?(提示:给合前面所做的实验及书本内容进行讨论总结)五、实验报告要求1. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,对出现错误的情况做简要分析。3. 结合调试步骤中提出的问题和分析讨论中的思考题写出自己的解决方法或调试心得。3实验二 顺序程序结构程序设计时间:2010/11/1一、实验目的1. 理解常用运行符的意义,掌握语言表达式的运行规则;2
5、. 掌握语言程序输入、输出的方法和格式;3. 能够根据具体任务要求,编写顺序结构程序。二、实验内容1. 编写一个语言程序,测试下列各表达式i , ji + 1,j + 1i + + ,j + + + i, + + ji + + + + + j+ + i + + + + + j + +要求在各表达式中 i 和 j 都分别有相同的初值。在实验中注意下列问题:(1) 哪些表达式是错误的?为什么?(2) 理解+,+,+i,i+ 的意义和优先级别。2. 输入并编辑下面的程序main()int a,b;float c,d;long e,f;unsigned int u,v;char c1,c2;scanf
6、(“%d,%d”,a,b);scanf(“%f,%f”,c,d);scanf(“%ld,%ld”,e,f);scanf(“%o,%o”,u,v);scanf(“%c,%c”,c1,c2);printf(“n”);printf(“a=%7d,b=%7dn”,printf(“c=%10.2f,d=%10.2fn”,printf(“e=17ld,f=%17ldn”,printf(“u=%o,d=%on”,printf(“c1=%c,d=%cn”,这个程序有语法错误吗?为什么?3. 调试上述程序无语法错误后,用下面的测试数据,对程序进行测试:a=123,b=456,c=17.6,d=71837.65,
7、e=70000,f=2174506,u=62000,v=58765,c1=a,c2=b分析运行结果。特别注意输入 c1,c2 的值是什么?什么原因?4. 将输入 e 和 f 的语句改为:4scanf(“%d,%d”,再用上述测试数据测试并分析结果。5. 将输入 u、v 的语句改为:scanf(“%d,%d”,再用上述测试数据测试并分析结果。6. 将输出 e,f 的语句改为:printf(“e=%17d,f=%17dn”,e,f);再用上述测试数据测试并分析结果。7. 将输出 u、v 的语句改为:printf(“u=%u,v=%un”,u,v);或printf(“u=%d,v=%dn”,u,v)
8、;再用上述测试数据测试并分析结果。8. 在 scanf(“%c,%c”,9. 验证转义字符n 与 r 的意义有何不同。10. 从键盘输入三角形的三边长(合理设置) ,能够求出其面积。给出程序,并在屏幕显示计算结果。11. 从键盘输入一个华氏温度,要求按照公式 Fahr = (9.0*celsius) / 5.0 + 32.0,输出摄氏温度。修改程序,要求以逆转换输出华氏温度值。三、调试步骤及运行结果按照实验内容要求,完成各项任务,程序改错需标明错误位置及错误原因。运行结果,应如实记录。自行编制的程序,需注意程序编写的规范。四、分析与讨论1. 分析总结运算符的优先级。2. 总结在 printf
9、函数中可以使用的各种格式指定符。3. 总结在 printf 函数中可以使用的各转义字符及其功能。五、实验报告要求1. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,分别对实验内容中提出的问题进行回答和分析。3. 结合调试步骤中提出的问题和分析讨论中的思考题写出自己的解决方法或调试心得。5实验三 分支控制语句实验时间:2010/11/8一、实验目的1. 了解条件与程序流程的关系。2. 了解用不同的数据使程序的流程覆盖不同的语句、分支和路径。3. 了解 if 及 switch 的嵌套结构。二、实验内容1. 设计企业发放的奖金根据利润提成问题1利润低于或等于 10 万元的,奖金
10、可提 10%;(利润及奖金为实数型)2利润高于 10 万元,低于 20 万元(1000001000000 时,超过 100 万元的部分按 1%提成。要求:从键盘输入 A、B 、C、 D 四员工当月所创利润 PA、P B、P C、P D,对应输出各人应发奖金及企业应发奖金总数。要求:(1) 用 ifelse 或 nested if 编写;(2) 用 switch 或 nested switch 编写; (3) 以表格形式输出。Input:*Enterprise Interest Count*A B C D Output:*Enterprise Employee Bonus*A bonus is:
11、B bonus is:C bonus is:D bonus is:THE TOTAL BONUS ARE: 2. 利用 if 或 switch 实现 4 个数字比较大小,要求: (1) 通过键盘输入比较对象;(2) 分别对整数、字符、实数等数据类型进行比较实验;(3) 采用 ? : 操作符实现;(4) 若为 10 个或更多任意数进行大小比较呢,可使用任何方法。输入/输出结果应有统一格式:Input:*The Operation Digit*A B C D Output:6*The Result Sequence*SEQ ASCEND: (按照升序排列)SEQ DESCEND:(按照降序排列)三
12、、调试步骤及运行结果按照实验内容要求,完成各项任务。使用流程图描述程序的逻辑结构,要求增加一些输入语句和输出语句,以便使上述程序能在不同输入值情况下运行,并且能观察程序流程经过(覆盖)了哪些语句、哪些分支及哪些路径。对照相应格式输出,如实记录运行结果。自行编制的程序,需注意程序编写的规范。四、分析与讨论1. 设定不同的数据类型对分支控制流进行全面(覆盖)检验。2. 对不同程序结构(if/switch/?:)的特点进行分析。3. 分析所编制程序中使用的变量、常量个数及使用结构嵌套层数。五、实验报告要求1. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,分别对实验内容中提出的
13、问题进行回答和分析。3. 结合调试步骤中提出的问题和分析讨论中的思考题写出自己的解决方法或调试心得。7实验四 循环语句实验时间:2010/11/15一、实验目的1. 掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。2. 了解条件型循环结构的基本测试方法。3. 掌握如何正确地控制计数型循环结构的次数4. 了解对计数型循环结构进行测试的基本方法5. 了解在嵌套循环结构中,提高程序效率的方法二、实验内容及步骤1. 打印出所有的“水仙花”数字。所谓“水仙花数“是指一个三位数,其各位数字的立方和等于该数本身。例如:153 是一个水仙花数,因为 153=13+53+33。分
14、析:运用循环语句和条件判断语句,根据”水仙花数”的特点,可以用 FOR/while 计数循环来控制 100999 的执行次数,然后对每个数分解出百位、十位和个位,最后再判断是否满足要求。如果满足,则打印,反之进行下一个数的判断。2. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。要求:使用 ctype.h 中的 character test function 对键盘输入的一行字符串(80 char)进行类型判断,并在输入结束后打印统计结果。3. 打印出指定的“钻石”图案。*要求:按照图形所示,使用循环结构完成图形的输出。4. 下面是一个计算 e 的近似值(使误差小于给定的
15、)的程序。main()double e=1.0,x=1.0,y,detax;int i=1;printf(“n please input enter a error:“);scanf(“%lf“,y=1/x;while(y=detax) x=x*i;y=1/x;e=e+y;+i;printf(“%12.10lf“,e);getch();8实验步骤:1阅读上面的程序,写出程序所依据的计算公式;2当输入的 detax 各是什么值时,能分别使程序按下面的要求运行: 不进入循环; 只循环一次; 只循环两次; 进入死循环(程序将永远循环下去 )。为了能知道程序循环了多少次,应该在程序中增加一条什么样的语
16、句?3原程序中 while 语句中的 y=detax,分别换成 ydetax,y=detax,y#define M 10main()int aM;4main()int a2+2*4;5 #include #define M 2#define N 8 main() int aM+N;通过这一实验,可以说明什么问题?2. 输出一列二维数组,使之按行列式的格式,main( )int num43=1,2,3,4,5,6,117,8,9,10,11,12;int i,j;for(i=0;i1)。程序中需要设定一个递归函数,如果 n0,n=0 或 n=1 时都将结束函数的执行,否则就递归调用子函数自身。每
17、次递归调用的实参为 n-1,即把 n-1 的值赋予形参 n,最后当 n-1 的值为 1 时再作递归调用,形参 n 的值也为 1,将使递归终止,然后可逐层退回。进行递归函数编写时,重要一点是确定递归终止的条件,不再继续递归调用而开始逐层返回主函数。三、分析与讨论1. 针对以上实验内容写出相应的参数传递过程并分析结果。2. 讨论参数的传递的几种形式。3. 分析并记录递归函数调用的控制流并记录之。五、实验报告要求1. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,分别对实验内容中提出的问题进行回答和分析。3. 结合调试步骤中提出的问题和分析讨论中的思考题写出自己的解决方法或调试
18、心得。15实验七 学生成绩管理系统时间:2010/12/6一、实验目的1. 掌握 C 语言进行数据管理的一般流程。2. 掌握字符串操作的一般技巧。3. 综合所学 C 语言内容,熟悉各种程序结构和功能。4. 选作,不要求实验报告。二、实验内容及步骤实现一个简单的学生成绩管理系统。包括:学生信息输入,信息内容显示,信息统计,信息查询等功能。1. 输入模块及密码设置1具有进入系统操作前密码保护功能,输入 6 位字符, “*”显示且 3 次内有效;2进入系统后,显示欢迎界面,列出系统主要功能及操作指令字符,如:“输入”为 I(i);“信息统计”为 C(c);“查询”为 A(a)等;3使用多维数组存储输
19、入信息,一般为二维数组;4采用 clrscr()的清屏函数,且使用 gotoxy()函数在指定位置显示提示信息;2. 信息统计及排序模块1具有统计所输入成绩中,全班各科平均分、个人平均分的功能(绩点功能可选) ;2对全班同学按学号、各科成绩、平均成绩(绩点成绩)进行排序,输出排序后的所有信息,并统计全班各科补考情况;3. 查询及显示模块1对输入信息按姓名查询,并显示出被查询同学的所有信息,使用 strcmp()函数;2对全班同学按性别(sex)查询,分别列出男/ 女同学的所有信息;3按照成绩查询,对某科目或平均分(绩点成绩)的分数段进行查询,要求输入查询分数段 from scar1 to scar2,显示此分数段内的同学信息;4统计并显示需要补考的同学信息。三、分析与讨论1. 使用多维数组进行数据存贮的操作及效率问题。2. 各操作间的逻辑关系及程序设计框架如何优化。3. 对整体程序框架作出控制流程图,并在此基础上修改优化程序。五、实验报告要求1. 写出实验目的。2. 列出实验内容,记录实验程序代码,并保存实验结果,分别对实验内容中提出的问题进行回答和分析。3. 结合调试步骤中提出的问题和分析讨论中的思考题写出自己的解决方法或调试心得。