程序设计基础实验内容.docx

上传人:罗晋 文档编号:6112714 上传时间:2020-09-11 格式:DOCX 页数:15 大小:45.25KB
返回 下载 相关 举报
程序设计基础实验内容.docx_第1页
第1页 / 共15页
程序设计基础实验内容.docx_第2页
第2页 / 共15页
程序设计基础实验内容.docx_第3页
第3页 / 共15页
程序设计基础实验内容.docx_第4页
第4页 / 共15页
程序设计基础实验内容.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《程序设计基础实验内容.docx》由会员分享,可在线阅读,更多相关《程序设计基础实验内容.docx(15页珍藏版)》请在三一文库上搜索。

1、.实验指导实验一 Visual C+6.0开发环境使用1实验目的(1)熟悉 Visual C+6.0集成开发环境。(2)掌握 C 语言程序的书写格式和语言程序的结构。(3)掌握 C 语言上机步骤,了解 C 程序的运行方法。(4)能够熟练地掌握 C 语言程序的调试方法和步骤2. 实验内容输入如下程序,实现两个数的乘积。#include (stdio.h);int main()x=10 , y=20p=prodct(x,t)printf(The product is : ,p)int prodct(int a ,int b )int cc=a*breturn c( 1 )在编辑状态下照原样键入上述

2、程序。( 2 )编译并运行上述程序,记下所给出的出错信息。( 3 )再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。3分析与讨论( 1 )记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论成功或失败的原因。( 2 )总结程序的结构和书写规则。实验二数据类型、运算符和表达式1实验目的( 1 )理解常用运行符的功能、优先级和结合性。( 2 )熟练掌握算术表达式的求值规则。( 3 )熟练使用赋值表达式。( 4 )理解自加、自减运算符和逗号运算符( 5 )掌握关系表达式和逻辑表达式的求值2实验内容.(1 )整数相除#includeint main()int a=5

3、,b=7,c=100,d,e,f;d=a/b*c;e=a*c/b;f=c/b*a;printf(d=%d , e=%d ,f=%dn,d,e,f);return 0;(2 )自加、自减运算#includeint main()int a=5,b=8;printf(a+=%dn,a+);printf(a=%dn,a);printf(+b=%dn,+b);printf(b=%dn,b);return 0;(3 )关系运算和逻辑运算#includeint main()int a=5,b=8,c=8;printf(%d,%d,%d,%dn,a=b&a=c,a!=b&a!=c,a=b&a=c,a=b&a=

4、c);printf(%d,%dn,a=c,a=b|b=c);printf(%d,%d,%d,%dn,!(a=b),!(a=b),!(a=c),!(a=b);return 0;( 1 )在编辑状态下输入上述程序。( 2 )编译并运行上述程序。3分析与讨论( 1 )整数相除有什么危险?应如何避免这种危险?( 2 )分析 a+ 和 +a 的区别。( 3 )条件表达式和逻辑表达式的意义是什么,它们取值如何?( 4 )如何比较两个浮点数相等?为什么?实验三格式化输入输出函数的使用1实验目的.( 1 )掌握格式字符使用的方法。( 2 )掌握 printf()进行格式化输出的方法。( 3 )掌握 scanf

5、() 进行格式化输入的方法。2实验内容(1 )输入如下程序,观察运行结果#includeint main()int x=1234;float f=123.456;double m=123.456;char ch=a;char a=Hello,world!;int y=3,z=4;printf(%d %dn,y,z);printf(y=%d , z=%dn,y,z);printf(%8d,%2dn,x,x);printf(%f,%8f,%8.1f,%.2f,%.2en,f,f,f,f,f);printf(%lfn,m);printf(%3cn,ch);printf(%sn%15sn%10.5sn

6、%2.5sn%.3sn,a,a,a,a,a);return 0;(2 )输入下面程序,观察调试信息#includeint main()double x,y;char c1,c2,c3;int a1,a2,a3;scanf(%d%d%d,a1,a2,a3);printf(%d,%d,%dn,a1,a2,a3);scanf(%c%c%c,&c1,&c2,&c3);printf(%c%c%cn,c1,c2,c3);scanf(%f,%lf,&x,&y);printf(%f,%lfn,x,y);return 0;( 1 )在 VC+6.0 集成开发环境中输入上述程序,观察调试结果。( 2 )如果有错误

7、,请修改程序中的错误。3分析与讨论(1 )分析程序错误及运行结果错误的原因。.( 2 )总结 printf()中可使用的各种格式字符。( 3 )总结转移字符的使用和功能。实验四分支结构程序设计1实验目的( 1 )了解条件与程序流程的关系( 2 )了解用不同的数据使程序的流程覆盖不同的语句、分支和路径。(3)掌握 if 语句和 if else语句的用法(4)掌握 switch语句的用法2实验内容1 从键盘上输入三个数,让它们代表三条线段的长度,请写一个判断这三条线段所组成的三角形属于什么类型(不等边,等腰,等边或不构成三角形)的C 程序。 请分别设计下列数据对自己的程序进行测试:(1 )找出各条

8、语句中的错误。(2)找出各分支中的错误。(3) 找出各条件中的错误。(4) 找出各种条件组合中的错误。(5) 找出各条路径中的错误。2. 用 scanf函数输入一个百分制成绩( 整型量 ) ,要求输出成绩等级A, B,C, D,E。其中 90-100分为 A,80-89分为 B, 70-79分为 C, 60-69分为 D, 60 分以下为 E。具体要求如下 :( 1)用 if 语句实现分支或 switch 分支。( 2)在输入百分制成绩前要有提示。( 3)在输入百分制成绩后,要判断该成绩的合理性,对于不合理的成绩( 即大于 100分或小于 0 分 ) 应输出出错信息。( 4)在输出结果中应包括

9、百分制成绩与成绩等级,并要有文字说明。( 5)分别输入百分制成绩: -90 , 100 , 90 , 85 , 70 , 60 , 45 , 101 ,运行该程序。3. 编程找出 5 个整数中的最大数和最小数,并输出找到的最大数和最小数。3分析与讨论( 1 )总结分支程序设计的方法。( 2 )复合语句的使用。( 3 ) switch 语句的注意事项。实验五循环结构程序设计1实验目的(1 )掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。( 2 )了解条件型循环结构的基本测试方法。( 3 )掌握如何正确地控制计数型循环结构的次数。( 4 )了解对计数型循环结构进行

10、测试的基本方法。( 5 )了解在嵌套循环结构中,提高程序效率的方法。2实验内容.(1)输入一个正整数,并将其颠倒过来。如12345 对应为 54321 。(2)将一个长整型数 s 的每一位数位上的偶数依次取出来,构成一个新的数t 中,高位仍在高位,低位仍在低位,例如: s=87653142时, t 中的数为: 8642 。( 3 )判断 101200 之间有多少个素数。( 4 )编写程序,输出杨辉三角。3分析与讨论( 1 )总结条件循环结构的一般方法。( 2 )如何测试计数型循环结构的控制表达式中的错误?( 3 )从实验中你得到了哪些提高嵌套循环程序效率的启示?实验六函数1实验目的( 1 )掌

11、握 C 语言函数定义及调用的规则。( 2 )理解参数传递的过程。( 3 )掌握函数返回值的大小和类型确定的方法。( 4 )理解变量的作用范围2实验内容(1 )上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。#includeint main()int x,y;printf(%dn,sum(x+y);int sum(a,b)int a,b;return(a+b);return 0;(2 )编写一个程序,输入系数a 、b、 c,求一元二次方程ax2bxc0 的根,包括主函数和如下函数。判断 a 是否为零。计算判别式 b24ac计算根。输出根。(3 )输入下面程序,分析运行结果#inclu

12、deint func (int ,int );int main ( ) int k=4,m=1,p1,p2; p1=func(k,m) ;.p2=func(k,m) ;printf(%d,%dn,p1,p2) ;return 0;int func (int a,int b) static int m=0,i=2;i+=m+1;m=i+a+b;return (m);3分析与讨论( 1 )针对以上实验内容写出相应的参数传递过程并分析结果。( 2 )函数在定义时要注意什么?( 3 )讨论静态局部变量的继承性?实验七数组及其应用1实验目的( 1 )掌握数组定义的规则。( 2 )掌握 C 语言数组的基本

13、用法。( 3 )掌握数组名作为函数参数传递的方法2实验内容(1 )运行下面的C 程序,根据运行结果,可以说明什么?#include int main( )int num5=1,2,3,4,5;inti i;for(i=0;i=5;i+)printf(%d ,numi);return 0;(2 )为一个冒泡排序程序设计测试用例,并测试之。(3 )操作符 &用以求一个变量的地址,这在函数 scanf 中已经使用过了。现在要你设计一个程序,返回一个 3 5 的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存储的。3分析与讨论( 1 )通过实验,分析定义与引用数组的区别。( 2 )数组的

14、作用是什么?( 3 )数组名作为参数有什么特点?.实验八指针及其应用1实验目的( 1)掌握变量的指针及其基本用法。( 2)掌握一维数组的指针及其基本用法。( 3)掌握指针变量作为函数的参数时, 参数的传递过程及其用法。2 实验内容( 1)对以下程序进行运行 , 并从中了解变量的指针和指针变量的概念。# include int main()int a=5,b=5,*p;p=&a;printf(%d ,%udn,a,p);*p=8;printf(%d ,%udn,a,p);p=&b;printf(%d ,%udn,a,p);b=10;printf(%d ,%udn,a,p);return 0;(

15、2)运行以下程序,观察&a0, &ai)和 p 的变化,然后回答以下问题:1 )序的功能是什么?2 )在开始进入循环体之前,p 指向谁 ?3 )循环每增加一次,p 的值 ( 地址 ) 增加多少 ? 它指向谁 ?4 )退出循环后,p 指向谁 ?5 )你是否初步掌握了通过指针变搔引用数组元素的方法?# include int main()int i,*p,s=0,a5=5,6,7,8,9;p=a;for(i=0;i5;i+,p+)s+=*p;printf(s=%dn,s);return 0;( 3)先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。#incl

16、ude int main( ).int i,s1=0, s2=0, s3=0, s4=0,*p,a5=1,2,3,4,5;p=a;for(i=0;i5;i+)s1+=pi;for(i=0;i5;i+)s2+=*(p+i);for(p=a;pa+5;p+)s3+=*p;p=a;for(i=0;i5;i+)s4+=*p+;printf(n s1=%d, s2=%d, s3=%d, s4=%d,s1,s2,s3,s4);return 0;( 4)编写函数,将n 个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成:1) 输入 10 个数;2) 调用此函数进行重排;3) 输出重排后的结果。

17、3 分析与讨论( 1 )指针的定义方法,指针和变量的关系。( 2 )数组和指针的关系。实验九结构体及其应用1实验目的( 1)掌握结构体类型变量与结构体数组的定义和使用。( 2)学会使用结构体指针变量和结构体指针数组。( 3)掌握链表的概念,初步学会对链表进行操作。2实验内容( 1)输入出10 个学生的学号、姓名和成绩,求出其中的高分者和低分者。#include struct studentint num;char name20;int score;int main( )int i;struct student st,stmax,stmin;.stmax.score=0; stmin.score

18、=100;printf(n input data);for(i=0;istmax.score)stmax=st;if(st.scorestmin.score)stmin=st;printf(n hight:%5d%15s%5d,stmax.num,stmax.name,stmax.score); printf(n low:%5d%15s%5d,stmin.num,stmin.name,stmin.score);return 0;1) 分析程序,上机运行程序。2) 程序中,哪些是对结构体变量的成员引用,哪些是整体引用?3) 对于此例来说,用结构体变量作为数据结构有何优越性?( 2 )有一学生情况

19、如下表所示。编制一个C 程序,用冒泡法对该学生情况表按成绩(grade)从低到高进行排序。学号姓名性别年龄成绩101ZhangM1995.6102wangF1892.2103zhaoM1985.7104liM2096.3105GaoM1990.2106LinM1891.2107MaF1898.7108ZhenM2188.7109XuM1990.1110MaoF2294.7具体要求如下:1) 结构体类型为 struct studentint num;char name8;char sex;int age;double grade;2) 在程序中用一个结构体指针数组,其中每一个指针元素指向结构体类

20、型的各元素。3) 在程序中,首先输出排序前的学生情况,然后输出排序后的结果,其格式如上表所示。( 3 )链表基本操作,具体要求如下 :1) 初始时链表为空,即链表的头指针为空。.2) 对于上表所示的学生情况表,依次将每个学生的情况作为一个结点插入到单链表的链头 ( 即当前插入的结点将成为第一个结点) 。3) 所有学生情况都插入到链表中后, 从链头开始, 依次输出链表中的各结点值 ( 即每个学生的情况 ) 。输出格式如同上表。3分析与讨论( 1 )结构体的作用,如何进行初始化?( 2 )如何访问结构体中的成员。( 3 )链表有什么优点?实验十文件1实验目的( 1)掌握文件与文件指针的概念。( 2

21、)学会使用文件打开、文件关闭、读与写文件等基本的文件操作函数。( 3)运用文件操作函数进行程序设计。2 实验内容( 1)以文本方式建立初始数据文件,请输入10 个学生的学号、姓名及考试成绩,形式如下:1001LiLi 801002HuWei 901003LiMing 75读入 file1.dat中的数据,找出最高分和最低度分的学生。#include struct studentint num;char name20;int score;int main()int i;struct student st,stmax,stmin;FILE *fp;stmax.score=0; stmin.scor

22、e=100;fp=fopen(file1.dat,r);if(!fp) return 1;for(i=0;istmax.score)stmax=st;if(st.scorestmin.score)stmin=st;fclose(fp);printf(hight:%5d%15s%5d,stmax.num,stmax.name,stmax.score);printf(nlow:%5d%15s%5d,stmin.num,stmin.name,stmin.score);return 0;1) 分析程序,上机运行程序并分析运行结果。2) 如果事先不知道学生个数,则程序应该如何修改?请将以上程序中的循环语

23、句for(i=0;i10;i+)改为( while(!feof(fp)再运行程序,看结果是否正确?( 2)读入 file2.dat中的数据,然后按成绩从高到低度的顺序进行排序,并将排序结果分别以文本方式存入到文件file3.dat中,以二进制形式存入文件file4.dat中。#include struct studentint num;char name20;int score;void sort(struct student *,int);int main()int i,n=10;struct student st10;FILE *fp,*fp1,*fp2;fp=fopen(file2.da

24、t,r);if(!fp) return 1;for(i=0;i10;i+)fscanf(fp,%4d%10s%3d,&sti.num,sti.name,&sti.score);fclose(fp);sort(st,n);fp1=fopen(file3.dat,w);for(i=0;in;i+)fprintf(fp1,” %4d%10s%3d,sti.num,sti.name,sti.score);fclose(fp1);fp2=fopen(file4.dat,wb);.fwrite(st,sizeof(struct student),n,fp2);fclose(fp2);return 0;vo

25、id sort(struct student *st,int n)struct student *i,*j,t;for(i=st;ist+n-1;i+)for(j=i+1;jscorescore)t=*i;*i=*j;*j=t;请分析程序, 上机运行程序, 运行结果在哪里?与上一例相比, 此例中对读取文件的格式有何不同?( 3)某班的学生145 人,每人的信息包括:学号、姓名、性别、和成绩。编制一个C程序,完成以下操作:1) 定义一个结构体类型数组。2)打开可读写的新文件student.dat。3)使用函数 fwrite()将结构体数组内容写入文件student.dat中。4)关闭文件 student.dat。5)打开可读写文件 student.dat。6) 从文件中依次读出各学生情况并按学生成绩进行排序,输出排好序后的数据。7) 关闭文件student.dat。3分析与讨论( 1 )文件有哪些优点?( 2 )文件常用的读写操作函数有什么不同?( 3 )调试有关文件的程序要注意什么?.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1