c实验指导书概要_第1页
c实验指导书概要_第2页
c实验指导书概要_第3页
c实验指导书概要_第4页
c实验指导书概要_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一部分绪论本指导书是根据高级语言程序设计 A / B课程实验教学大纲编写的,适 用于计算机科学与技术、信息管理与信息系统、数学与应用数学、信息与计算科 学、电子科学与技术、电子信息工程、物理学、教育技术学、电子商务等本科专 业。一、本课程实验的作用与任务高级语言程序设计A / B»是计算机科学与技术、信息管理与信息系统、 数学与应用数学、信息与计算科学、电子科学与技术、电子信息工程、物理学、 教育技术学、电子商务等本科专业的专业必修 /选修课程,要求学生掌握程序设 计的基本思想、C语言的基本语法及编程方法,培养学生编写程序及调试程序的 能力,在一定层面上培养学生的创新精神和创新设计

2、的能力。上机实验是该课程 教学的一个重要环节,要求学生进行一定数量的上机实验。本指导书可增强学生 上机的针对性。二、本课程实验的基础知识本课程实验的基础知识有:C程序的运行环境及调试、运行C程序;C语言 的基础知识;三种程序设计结构;数组;函数;指针;结构体;文件和链表。三、本课程实验教学项目及其教学要求序号实验项目名称教学目标、要求学时1C语百环境C语言的运行环境与简单程序设计4必做2结构化程序设计顺序、选择与循环结构程序设计6必做3数组数组的定义与引用4必做4函数函数的定义与调用4必做5指针指针的A与运算4必做6结构体结构体的定义与引用4选做7文件文件操作4选做8WB1链表的使用4选做9简

3、单计算器的设计简单计算器的设计与实现6必做第二部分基本实验指导实验一 C 语言环境一、实验目的掌握如何编辑、 编译、 连接和运行一个C 程序, 通过运行简单的 C 程序,初步了解 C 源程序的特点,掌握C 语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法,掌握不同的类型数据之间赋值的规律,学会使用 C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+) 和自减(-) 运算符的使用。二、实验原理了解 C 程序的运行环境和运行C 程序, 掌握 C 语言的一些基本知识 (数据类型、运算符和表达式等) 。三、主要仪器及耗材计算机与 Windows 2000/XP

4、 系统; Turbo C/Win-TC 等软件。四、实验内容与步骤内容:1. 进入所用的 C 语言集成环境;2. 熟悉集成环境的界面和有关菜单的使用方法;3. 输入并运行一些C 程序。步骤:1. 输入下面的程序:#include <stdio.h>void main( )printf( “ This is a n” );a. 对源程序进行编译,观察屏幕上显示的编译信息。如果出现“错误信息 ” ,则应找出原因并改正之,再进行编译,如果无错,则进行连接;b. 如果编译连接无错误,使程序运行,观察分析运行结果。2. 输入以下程序(故意漏打或打错几个字符) 。#include <st

5、dio.h>void main( )int a, b, sum;a=123; b=456;sum=a+b;printf( “ sum isn%”, dsum);a. 进行编译,仔细分析编译信息窗口,可能显示有多个错误,逐个修改,直到不出现错误;b. 使程序运行,分析运行结果。3. 输入下面的程序:#include <stdio.h>void main( )int max(int x, int y);int a, b, c;printf( “ input a a:n” d b);scanf(“ %d,%d&”, a, &b);c=max(a, b);printf

6、(“ max=n%”, dc);int max(int x, int y)int z;if(x>y) z=x;else z=y;return(z);a. 编译并运行,在运行时从键盘输入整数2 和 5,然后按回车键,观察运行结果;b. 将程序中的第 3行改为 int a; b; c;, 再进行编译, 观察运行结果。c. 将 max 函数中的第3, 4 两行合并写为一行,即 if(x>y) z=x;else z=y;,进行编译和运行,分析结果。4. 输入并运行下面的程序:#include <stdio.h>void main( )char c1, c2;c1= a;c2=

7、b;printf(“ %cn%”, cc1, c2);a. 在 printf 语句下再增加一个printf 语句: printf( “%d n” ,c1,c2);,再运行,并分析结果;b.将第3行改为int c1, c2;,再使之运行,并观察结果;c.再将第4, 5行改为c1=a; c2=b;,再使之运行,分析其运行结果;d.再将第4, 5行改为c1=" a"c2=" b';再使之运行,分析其运行结果;e.再将第4, 5行改为c1=300; c2=400;,再使之运行,分析其运行结果。5. 输入并运行以下程序。在上机前先用人工分析程序,写出应得结果,上机后

8、将二者对照。#include <stdio.h>void main( )char c1= ca2, = b,c3= c ,c4= 101, c5= 116;printf( “a%cb%cn”, c1, c2, c3);printf( “n”, c4, c5);6. 输入并运行下面的程序:#include <stdio.h>void main( )int a, b;unsigned c, d;long e, f;a=100;b=-100;e=50000;f=32767;c=a;d=b;printf(“%d,n%”, da, b);printf(“%u,n%”, ua, b

9、);printf(“%u,n%”, uc, d);c=a=e;d=b=f;printf( “ %d,n%”, da, b);printf( “ %u, %n”,u c, d); 对照程序和运行结果分析:a. 将一个负数赋给一个无符号的变量,会得到什么结果;b. 将一个大于32767的长整数赋给整型变量 (假定所用的 C 系统分配给整型变量 2 个字节) ,会得到什么结果;c. 将一个长整数赋给无符号变量,会得到什么结果(分别考虑该长整数的值大于或等于 65535和小于 65535 的情况) 。7. 输入以下程序:#include <stdio.h>void main( )int i

10、, j, m, n;i=8;j=10;m=+i;n=j+;printf( “ %d,%d,%d,n%” d,i,j,m,n);a. 运行程序,注意i 、 j 、 m、 n 各变量的值。分别做以下改动并运行:b. 将第 6, 7行改为: m=i+;n=+j; ,再运行;c. 程序改为: #include <stdio.h>void main( )int i,j;i=8;j=10;printf(“ %d, n%” d,i+,j+);d.在c.的基础上,将printf语句改为printf( "d,%d,+i,+j)e. 再将 printf 语句改为 printf( “ %d,

11、%d,%d,n%” d, i, j,i+,j+;)f. 程序改为: #include <stdio.h>void main( ) int i,j,m=0,n=0; i=8;j=10;m+=i+;n-=-j;printf( “ i=%d,j= %d,m=%d,n=%n” d ,i,j,m,n);五、实验注意事项1. 确立 C 编译系统的工作环境,对其菜单进行一些基本操作;2. 对 C 程序的编译、连接和运行,并分析运行结果。六、思考题1 .运行一个自己编写的程序。如:输入 a, b, c三个数的值,输出其中的 最大者;2 .编写一个程序。如:将“Chin舒成密码,密码规律是用原来的字

12、母后面第四个字母代替原来的字母。比如字母" AB面第四个字母是“ E”用“ E” 代替“A”因此“Chin姮译为“Glmre请编一程序,用赋初值的方法使c1, c2, c3, c4, c5这五个变量的值分别为C' h''n'' a经过运算,使c1, c2, c3, c4, C5分别变为G'l "m' 'r"群输出。实验二 结构化程序设计一、实验目的掌握 C 语言赋值语句的使用, 各种数据类型的输入输出, 逻辑运算符和逻辑表达式, if 语句和 switch 语句, while 语句, do-while

13、 语句和 for 语句, 掌握在程序设计中用循环的方法实现一些常用算法 (如穷举、 迭代、 递推等) , 学习调试程序。、实验原理对顺序、 选择和循环三种程序设计结构的应用, 掌握 C 语言中的主要语句。三、主要仪器及耗材计算机与 Windows 2000/XP 系统; Turbo C/Win-TC 等软件。四、实验内容与步骤内容:1. 通过下面的程序掌握各种格式转换符的正确使用方法:a, 输入以下程序:#include <stdio.h>void main( )int a, b;float d, e;char c1, c2;double f, g;long m, n;unsign

14、ed int p, q;a=61; b=62;c1= a;c2= b;d=3.56; e=-6.87;f=3157.890121; g=0.123456789;m=50000; n=-60000;p=32768; q=40000;printf( “ a=%d,n”, a,b, c1, c2, d, e);printf( “f=%15.g6=f,%15.12fnm=%ld, n=%ldnp=%u,n”,f, g, m, n, p, q);b. 运行此程序并分析结果;c. 在此基础上,将程序第 914 行改为:a=61; b=62;c1=a; c2=b;f=3157.890121; g=0.123

15、456789;d=f; e=g;p=a=m=50000; q=b=n=-60000;运行程序,分析结果。d. 改用 scanf 函数输入数据而不用赋值语句, scanf 函数如下:scanf( “ %d,d, %c, %c, %f, %f, %lf, %lf, %ld, %ld, %u, %u”, &a, &b, &c1, &c2, &d, &e, &f, &g, &m, &n, &p, &q); ,分析 运行结果;e. 在 d 的基础上将printf 语句改为:printf( “a=%d,b=%d

16、nc1=%c,c2=%cnd=%15.6f,n”, a, b, c1, c2, d, e);printf( “ f=%f,n”, f, g, m, n,p, q);运行程序。f.将p,q改用o格式符输出。g.将scanf函数中的%lf和%的改为%£和,运行程序并分析结果。2. 编写一程序,并上机运行。如:设圆半径r=1.5 ,圆柱高h=3,求圆周长、 圆面积、 圆球表面积、 圆球体积、 圆柱体积。 用 scanf输入数据,输出计算结果。输出时要有文字说明,取小数点后两位数字;3. 编程序,如:用getchar函数读入两个字符给c1, c2,然后分别用 putchar 函数和 prin

17、tf 函数输出这两个字符。上机运行程序,比较用putchar 函数和printf 函数输出字符的特点;4. 有一函数:y=x(x<1),用scanf函数输入x的值,求y的值。2x 1 (1 x 100)3x 11 (x 10)运行程序,输入x的值(分别为x<1、110、x> 1这3种情况),检查输出 y 的值是否正确。5. 给出一个百分制成绩,要求输出成绩等级A, B, C, D, E 。 90分A, 8189分为 B, 7079分为 C, 6069分为 D, 60分E。a. 事先编好程序, 要求分别用 if 语句和 switch 语句来实现。 运行程序,并检查结果是否正确。

18、b. 再运行一次程序,输入分数为负值(如-70) ,这显然是输入时出错,不应给出等级,修改程序,使之能正确处理任何数据,当输入数据大于 100 和小于 0 时,通知用户“输入数据错误” ,程序结束。6. 给出一个不多于 5 位的正整数,要求:求出它是几位数,并分别输出每一位数字。a. 应准备以下测试数据:要处理的数为 1 位正整数;要处理的数为 2 位正整数;要处理的数为 3 位正整数;要处理的数为4 位正整数;要处理的数为 5 位正整数。b. 除此之外, 程序还应当对不合法的输入做必要的处理, 比如:输入负数;输入的数超过5 位(如123456) 。7. 输入两个正整数m和n,求它们的最大公

19、约数和最小公倍数。 在运行时,输入的值m > n,观察结果是否正确。再输入时,使 m < n,观察结果是否正确。修改程序,不论 m和n为何值(包 括负整数) ,都能得到正确结果。8. 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。9. 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上想再吃,见只剩一个桃子了。求第一天共摘了多少桃子。在得到正确结果后,

20、修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。请修改程序并运行,检查结果是否正确。步骤:略五、实验注意事项1. 掌握三种结构的主要语句,会一些常用算法。2. 对 C 程序的调试,分析运行结果。六、思考题1. 输入 4 个整数, 要求按由小到大顺序输出。 在得到正确结果后, 修改程序使之按由大到小顺序输出。2. 用牛顿迭代法求方程2x3-4x2+3x-6=0 在 1.5 附近的根。在得到正确结果后,请修改程序使所设的x初始值由1.5改变为100, 1000, 1000Q再运行,观察结果,分析不同的 x 初值对结果有没有影响,为什么?修改程序,使之能输出迭代的次数和每次迭代的结果,分析不

21、同的 x 初值对迭代的次数有无影响。实验三 数 组一、实验目的掌握一维数组和二维数组的定义、赋值和输入输出的方法,字符数组和字符串函数的使用,与数组有关的算法(特别是排序算法) 。二、实验原理对数组相关知识的应用。三、主要仪器及耗材计算机与 Windows 2000/XP 系统; Turbo C/Win-TC 等软件。四、实验内容与步骤内容:1. 用选择法对10 个整数排序, 10 个整数用scanf 函数输入;2. 有 15 个数存放在一个数组中, 输入一个数, 要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,则输出 “无此数 ”, 15 个数用赋初值的方法在程序中给出,

22、 要找的数用scanf 函数输入;3. 将两个字符串连接起来,不要用 strcat 函数。步骤:略五、实验注意事项1. 注意对数组的定义、初始化及使用;2. 知道一些与数组相关的算法。六、思考题找出一个二维数组的“鞍点” ,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。应当至少准备两组测试数据:1. 二维数组有鞍点,例如:980205 4090-60961210-3101892. 二维数组没有鞍点,例如:9802054090-601961210-31018945541567用 scanf 函数从键盘输入数组各元素的值,检查结果是否正确。实验四 函 数一、实验目的掌握定义函数的方法

23、, 函数实参与形参的对应关系, 以及值传递的方式,函数的嵌套调用和递归调用的方法,全局变量和局部变量、动态变量、静态 变量的概念和使用方法,学习对多文件的程序的编译和运行。二、实验原理对函数相关知识的应用,包括函数的参数、函数的调用以及各种变量的使用等。三、主要仪器及耗材计算机与 Windows 2000/XP 系统; Turbo C/Win-TC 等软件。四、实验内容与步骤内容:1. 写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息,本程序应当准备以下测试数据: 17, 34, 2, 1, 0。分别运行并检查结果是否正确;2. 用递归法将一个整数n 转换成字符串。比如输入483

24、,应输出字符串 “ 483。 ”n 的位数不确定,可以是任意的整数;3. 求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一函数根据求出的最大公约数球最小公倍数:a. 不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数, 然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,返回到主函数输出最大公约数和最小公倍数;b. 用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值不由函数带回。将最大公约数和最小公倍数都设为全局变量,在主函数中输出它们的值;4. 写一函数,输入一个十六进制数,输出相应

25、的十进制数。步骤:五、实验注意事项1. 注意函数的形参和实参间的关系,怎样调用函数;2. 注意变量的作用范围对变量的值的影响;3. 注意多文件的程序如何进行编译和运行。六、思考题用一个函数来实现将一行字符串中最长的单词输出。 此行字符串从主函数传递给该函数。把两个函数放在同一个程序文件中,作为一个文件进行编译和运行。把两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。实验五 指 针一、实验目的通过实验掌握指针的概念,定义和使用,能正确使用数组的指针和指向数组的指针变量,能正确使用字符串的指针和指向字符串的指针变量,了解指向指针的指针的概念及其使用方法。二、实验原理对指针有关知识

26、的运用,包括指针变量的使用,数组、字符串与指针变量的关系及应用等。三、主要仪器及耗材计算机与 Windows 2000/XP 系统; Turbo C/Win-TC 等软件。四、实验内容与步骤内容:1 . 输入 3 个整数,按由小到大的顺序输出,然后将程序改为:输入 3 个字符串,按由小到大顺序输出;2 .将一个3刈的矩阵转置,用一函数实现之。在主函数中用scanf函数输入以下矩阵元素:135791113 15 19将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵;3. 用一个函数实现两个字符串的比较, 即自己写一个strcmp 函数,函数原型为 i

27、nt strcmp(char *p1, char *p2);, 设 p1 指向字符串 s1, p2指向字符串s2,要求当s1=s2时,函数返回值是0;如果slws2 返回它们二者第一个不同字符的ASCII码差值(如“ BOYW“BAtJ,第二个字母不相同,"Of ”心差为75-65=14);如果s1>s2,则输出正值;如果s1<s2,则输出负值。两个字符串s1, s2 由 main 函数输入, strcmp 函数的返回值也由 main 函数输 出。步骤:略五、实验注意事项1. 注意指针变量的定义和使用;2. 注意数组、字符串与指针变量的关系以及相关应用。六、思考题1. 有

28、 n 个人围成一圈, 顺序排号。 从第 1 个人开始报数 (从 1 到 3报数) , 凡报到 3 的人退出圈子,问最后留下的是原来第几号的人。2. 用指向指针的指针的方法对n 个整数排序并输出。 要求将排序单独写 成一个函数。 n 和各证书在主函数中输入。最后在主函数中输出。实验六 结构体一、实验目的掌握结构体类型变量的定义和使用,掌握结构体类型数组的概念和应用,掌握共用体的概念与使用。二、实验原理对结构体和共用体的使用。三、主要仪器及耗材计算机与 Windows 2000/XP 系统; Turbo C/Win-TC 等软件。四、实验内容与步骤内容:1. 有 5个学生,每个学生的数据包括学号、

29、姓名、 3 门课的成绩,从键盘输入 5 个学生数据,要求输出 3 门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、 3 门课的成绩、平均分数) 。要求用一个print 函数输入 5个学生数据; 用一个 average函数求总平均分;用 max 函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。2. 输入和运行以下程序:#include <stdio.h>union dataint i2;float a;long b;char c4;void main( )scanf(“%dd,”, &u.i0, &u.i1);printf(“i0=%di

30、,1=%d, a=%f, b=%ld, c0=%c, c1=%c,c2=%c, c3=%c ”, u.i0, u.i1, u.a, u.b, u.c0, u.c1, u.c2, u.c3);输入两个整数10000, 20000赋给u.i和u.i1。分析运行结果然后将 scanf语句改为:scanf( " %ld ",,&Ub); 60000赋给 b 分析运行结果。步骤:略五、实验注意事项结构体变量、结构体数组的定义和使用。六、思考题定义一个结构体变量(包括年、月、日) ,计算该日在本年中是第几天(注意闰年问题)。编写一个函数days,实现以上计算。由主函数将年、月、

31、日传递给 days 函数,计算后将日数传回主函数输出。实验七 文 件一、实验目的掌握文件以及缓冲文件系统、文件指针的概念,学会使用文件打开、关闭、读、写等文件操作函数和用缓冲文件系统对文件进行简单的操作。二、实验原理对文件相关知识的应用,包括文件操作函数的使用等。三、主要仪器及耗材计算机与 Windows 2000/XP 系统; Turbo C/Win-TC 等软件。四、实验内容与步骤内容:1. 有 5 个学生,每个学生有3 门课的成绩,从键盘输入以上数据(包括学生号、姓名、 3 门课成绩) ,计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。设5名学生的学号、姓名和 3 门课成绩如下:99101 Wang99103 Li99106 Fang99110 Lin99113 Yuan89, 98, 67.560, 80, 9075.5, 91.5, 99100, 50, 62.558, 68, 71在向文件 stud 写入数据后,应检查验证stud 文件中的内容是否正确。2. 将上题 stud 文件中的学生数据按平均分进行排序处理,将已排序的学生数据存入一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论