《程序设计》实验讲义1教案资料Word格式文档下载.docx
- 文档编号:19953997
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:19
- 大小:38.25KB
《程序设计》实验讲义1教案资料Word格式文档下载.docx
《《程序设计》实验讲义1教案资料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《程序设计》实验讲义1教案资料Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
五、实验内容和要求
1、熟悉上机环境及常用命令;
2、编写输出”HelloWorld”的第一个程序;
3、验证两个数比较大小程序;
4、有下面的C程序,目的是想计算由键盘输入的任意两个整数的积。
/********exl.c********/
#include(stdio.h);
main()
scanf(“%x,%y”,&
x,%y)
intp
p=x+y
printf(“Theproductis:
”,p)
请调试上述程序;
下面给出6组测试用例,你认为哪几组较好?
为什么?
(1)0,
0
(2)0,
99
(3)20,50
(4)33000,20
(5)-5,-2
(6)-5,2
要测试出上述程序中所有错误,你认为应当用几组测试用例?
实验二 数据类型、运算符和表达式(必做)
数据类型、运算符和表达式
1、了解C语言中数据类型的意义。
2、理解常用运行符的意义。
3、掌握C语言表达式的运行规则。
1、完成实验内容
2、如何正确地选用数据类型?
3、分析总结运算符的优先级。
1、下面的程序试图计算由键盘输入的任意两个整数的平均值:
#include<
stdio.h>
{
intx,y,a;
scanf(“%x,%y,&
x,&
y);
a=(x+y)/2;
printf(“Theaverageis:
”a);
}
调试无语法错误后,分别使用下列测试用例对上述程序进行测试:
序号
测试用例
预计结果
实际结果
备注
1
2
6
3
-2
-6
4
-1
-3
5
7
8
32800
33000
9
-32800
分析上述哪几组测试用例较好?
通过测试,你发现程序有什么错误了吗?
若有错误,请指出错误原因。
2、操作符sizeof用以测试一个数据或类型所占用的存储空间的字节数。
请编写一个程序,测试各基本数据类型所占用的存储空间大小。
3、编写一个C语言程序,测试下列各表达式
i,j
i+1,j+1
i++,j++
++i,++j
i+++++j
++i+++++j++
要求在各表达式中i和j都分别有相同的初值。
在实验中注意下列问题:
(1)
哪些表达式是错误的?
(2)
理解+,++,++i,i++的意义和优先级别。
4、编写一个程序,测试常用的十个运算符的优先顺序。
(选作)
实验三 输入与输出(选做)
输入、输出及顺序结构程序设计
1、掌握C语言程序输入、输出的方法和格式。
2、理解程序的顺序结构
2、总结在printf函数中可以使用的各种格式指定符,并给出样例。
3、总结在printf函数中可以使用的各转义字符及其功能。
1、输入并编辑下面的程序
inta,b;
floatc,d;
longe,f;
unsignedintu,v;
charc1,c2;
scanf(“%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=%7d\n”,&
a,&
b);
printf(“c=%10.2f,d=%10.2f\n”,&
c,&
d);
printf(“e=17ld,f=%17ld\n”,&
e,&
f);
printf(“u=%o,d=%o\n”,&
u,&
v);
printf(“c1=%c,d=%c\n”,&
c1,&
c2);
这个程序有语法错误吗?
2、调试上述程序无语法错误后,用下面的测试数据,对程序进行测试:
a=123,b=456,c=17.6,d=71837.65,e=70000,f=2174506,u=62000,v=58765,c1=’a’,c2=’b’
分析运行结果。
特别注意输入c1,c2的值是什么?
什么原因?
3、将输入e和f的语句改为:
scanf(“%d,%d”,&
再用上述测试数据测试并分析结果。
4、将输入u、v的语句改为:
5、将输出e ,f 的语句改为:
printf(“e=%17d,f=%17d\n”,e,f);
6、将输出u、v的语句改为:
printf(“u=%u,v=%u\n”,u,v);
或
printf(“u=%d,v=%d\n”,u,v);
7、请读者自己修改程序和改变数据输入的形式,分析各种情况下的输入与输出。
8、在scanf(“%c,%c”,&
c2);
语句之前加一个语句:
getchar();
9、验证转义字符\n与\r的意义有何不同。
实验四 分支程序设计(选做)
选择语句的演练
课内2课时
1、了解条件与程序流程的关系
2、了解用不同的数据使程序的流程覆盖不同的语句、分支和路径。
1、完成实验内容;
2、分析讨论
(1)用哪一组数据就可使程序中的每个处理语句都执行一次?
为了找出程序中各条处理语句中的错误,应该使用什么样的数据对程序进行测试?
请上机验证自己的结论。
(2)用哪两组数据就可以使程序段中的每个分支都运行一次?
这种情形与上面的讨论有何不同?
如果为了找出程序中积压分支中的错误,应该使用什么样的数据对程序进行测试?
(3)用哪两组数据就可以把判定框中的每个条件运算都进行一次?
如果为了测试出判定条件中的错误,应使用哪些数据对程序进行测试?
(4)用哪四组数据才可以把各种条件的组合都检测一遍?
如果为了测试各种条件的组合的情形,应该使用什么样的测试数据?
(5)用哪四组数据才可以把起始到终止的各条路径都覆盖一次?
如果为了测试出程序在不同路径下的错误,应该使用什么样的测试数据?
1、有如下程序段:
{……
if(a>
1&
&
b==0)x=x/a;
if(a==2||x>
1)x=x+1;
为了更容易明白程序的逻辑结构,我们用下图所示流程图来加以描述。
y
n
y
要求增加一些输入语句和输出语句,以便使上述程序能在不同的a,b和x值下运行,并且能观察程序流程经过(覆盖)了哪些语句、哪些分支及哪些路径。
2、记下分别使用下列各组数据运行时的操作流程。
a=1,b=1,x=1;
a=1,b=1,x=2;
(3)
a=3,b=0,x=1;
(4)
a=2,b=1,x=4;
(5)
a=2,b=1,x=1;
(6)
a=1,b=0,x=2;
(7)
(8)
a=3,b=0,x=2。
选做题目
1、从键盘上输入三个数,让它们代表三条线段的长度,请写一个判断这三条线段所组成的三角形属于什么类型(不等边,等腰,等边或不构成三角形)的C程序。
2、请设计测试数据对自己的程序进行测试:
实验五 循环结构程序设计(必做)
循环结构程序设计
1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。
2、了解条件型循环结构的基本测试方法。
掌握如何正确地控制计数型循环结构的次数
了解对计数型循环结构进行测试的基本方法
5、
了解在嵌套循环结构中,提高程序效率的方法
1、完成试验内容
2、总结测试条件循环结构的一般方法
3、如何测试计数型循环结构的控制表达式中的错误?
4、从实验中你得到了哪些提高嵌套循环程序效率的启示?
1、下面是一个计算e的近似值(使误差小于给定的δ)的程序。
doublee=1.0,x=1.0,y,detax;
inti=1;
printf(“\npleaseinputenteraerror:
”);
scanf(“%lf”,&
detax);
y=1/x;
while(y>
=detax)
{
x=x*i;
e=e+y;
++i;
printf(“%12.10lf”,e);
(1)、阅读上面的程序,写出程序所依据的计算公式。
(2)、当输入的detax各是什么值时,能分别使程序按下面的要求运行:
.不进入循环;
.只循环一次;
.只循环两次;
.进入死循环(程序将永远循环下去)。
为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?
(3)、原程序中while语句中的y>
=detax,分别换成y>
detax,y=detax,y<
detax,y<
=detax,观察程序运行将会有什么变化。
假如不知道机器内的程序中的各语句实际上是什么,分别输入什么样的detax来测试出while语句的循环条件写错了。
(4)、把原程序中while语句之前的y=1/x语句去掉,观察程序的运行将会发生什么样的变化。
假如不知道机器内的程序实际上是怎么写的,输入什么样的detax就能测试出少了上述这条语句。
(5)、若把原程序中的++i换成i++,观察程序的运行发生了什么变化?
假如不知道这条语句到底是怎么写的,输入什么样的detax就能测试出这条语句写错了.
(6)、把原程序中的while结构改写成do—while结构,再分别按上述的
(2)、(3)两步进行实验。
选作:
2、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
设计程序实现并调试。
3、用100元兑换成20、5、2、1元的零钞,共有多少种兑换方法,要求每种至少有1种,要求输出计算的次数。
选作题目:
猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
实验六 文件(必做)
文件
1、文件和文件指针的概念以及文件的定义方法。
2、了解文件打开和关闭的概念及方法。
3、掌握有关文件的函数。
完成试验内容
1、编写程序,要求从键盘输入一个字符串,然后将其以文件形式存到磁盘上。
磁盘文件名为file1.dat。
2、从磁盘文件file1.dat读入一行字符,将其中所有小写字母改为大写字母,然后输出到磁盘文件file2.dat中。
3、已有两个文本文件,今要求编程序从这两个文件中读出各行字符,逐个比较这两个文件中相应的行和列上的字符,如果遇到互不相同的字符,输出它是第几行第几列的字符。
实验七 数组(必做)
数组
1、掌握数组定义的规则。
2、掌握C语言数组的基本用法。
2、通过实验,分析定义与引用数组的区别。
1、编写程序,测试下列数组的定义方式是否正确
(1)
main()
intn;
scanf(“%d”,&
n);
inta[n];
……
(2)
constintn=10;
(3)
#include<
#defineM10
inta[M];
(4)
inta[2+2*4];
(5)
#defineM2
#defineN8
inta[M+N];
通过这一实验,可以说明什么问题?
2、运行下面的C程序,根据运行结果,可以说明什么?
main()
{intnum[5]={1,2,3,4,5};
intii;
for(i=0;
i<
=5;
i++)
printf(“%d”,num[i]);
}
3.从键盘输入一字符串,然后按逆序存放并输出。
4、操作符&
用以求一个变量的地址,这在函数scanf中已经使用过了。
现在要你设计一个程序,返回一个3*5的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存储的。
选做:
1、为一个起泡排序程序设计测试用例,并测试之。
2、写一个程序,使用一维数组计算并输出杨辉三角形前面的n行。
实验八 函数及递归程序设计(必做)
函数及递归程序设计
掌握C语言函数定义及调用的规则。
理解参数传递的过程。
针对以上实验内容写出相应的参数传递过程并分析结果。
讨论参数的传递的几种形式。
上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
int,y;
printf(“%d\n”,sum(x+y));
intsum(a,b)
{
return(a+b);
2、编写并调试一个求n!
(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
3、使用递归和递推公式分别计算Fabonacci数列,分别两种方式求10,20,30,40,50……递增测试直到计算时间超过3分钟,比较两种方法的运算时间并分析原因。
实验九 指针(选做)
指针
1.
熟悉指针的正确用法。
1、完成试验内容;
2、讨论数组与指针的联系。
1、指出下面程序错误的原因。
intx=10,y=5,*px,*py;
px=py;
px=&
x;
py=&
y;
printf(“*px=%d,*py=%d,*px,*py);
2、下面的程序试图有如下运行结果:
whichstyleyouwantto:
Capital(c)oruncapital(a):
c↙
COMPUTER
Whichsytleyouwantto:
Capital(c)oruncapital(a):
u↙
computer
请调试下面的程序,使其有如上执行结果。
main()
chars*;
(二)创业优势分析charc;
printf(“whichstyleyouwantto:
ln”);
1996年“碧芝自制饰品店”在迪美购物中心开张,这里地理位置十分优越,交通四通八达,由于位于市中心,汇集了来自各地的游客和时尚人群,不用担心客流量的问题。
迪美有300多家商铺,不包括柜台,现在这个商铺的位置还是比较合适的,位于中心地带,左边出口的自动扶梯直接通向地面,从正对着的旋转式楼梯阶而上就是人民广场中央,周边4、5条地下通道都交汇于此,从自家店铺门口经过的90%的顾客会因为好奇而进去看一下。
printf(“capital(c)oruncapital(a):
”);
c=getchar();
众上所述,我们认为:
我们的创意小屋计划或许虽然会有很多的挑战和困难,但我们会吸取和借鉴“漂亮女生”和“碧芝”的成功经验,在产品的质量和创意上多下工夫,使自己的产品能领导潮流,领导时尚。
在它们还没有打入学校这个市场时,我们要巩固我们的学生市场,制作一些吸引学生,又有使学生能接受的价格,勇敢的面对它们的挑战,使自己立于不败之地。
if(c=’c’)strcpy(s,”COMPUTER”);
elsestrcpy(s,”computer”);
§
8-2购物环境与消费行为2004年3月20日put(s);
一、消费者分析}
分析出错原因。
调研要解决的问题:
3.下面的程序能获得上述运行结果吗?
精明的商家不失时机地打出“自己的饰品自己做”、“DIY(DoItYourself)饰品、真我个性”的广告,推出“自制饰品”服务,吸引了不少喜欢标新立异、走在潮流前端的年轻女孩,成为上海的时尚消费市场。
其市场现状特点具体表现为:
char*S=”COMPUTER”;
1、DIY手工艺市场状况分析charc;
printf(“whichstyleyouwantto\n”);
printf(“capital(c)oruncapital(u);
c=getchar();
图1-1大学生月生活费分布if(c=’c’)
put(s);
else
尽管售价不菲,但仍没挡住喜欢它的人来来往往。
这里有营业员们向顾客们示范着制作各种风格迥异的饰品,许多顾客也是学得不亦乐乎。
在现场,有上班族在里面精挑细选成品,有细心的小女孩在仔细盘算着用料和价钱,准备自己制作的原料。
可以想见,用本来稀奇的原料,加上别具匠心的制作,每一款成品都必是独一无二的。
而这也许正是自己制造所能带来最大的快乐吧。
s=”computer”;
puts(s);
4.设计一个C程序,用以测试下列各表达式的运算。
(1)
y=*px++
(2)
y=*++py
y=(*py)++
(4)
y=--*ppx++
实验十 结构及共用体(选做)
结构及共用体
1、掌握结构体类型方法以及结构体变量的定义和引用。
2、掌握指向结构体变量的指针变量的应用,特别是链表的应用。
3、掌握运算符”.”和”->
”的应用。
4、共用体的概念和应用。
1、编写程序:
有4名学生,每个学生的数据包括学号、姓名、成绩,要求找出成绩最高者的姓名和成绩,上机运行程序。
2、编写程序,将一个整数的高字节和低字节分别输出(用位运算方法)。
上机运行。
实验十一 综合设计:
程序设计的综合应用(必做)
程序设计的综合应用
1、掌握用C语言进行简单的数据库管理。
2、了解C程序菜单设计的一般方法。
3、理解链表的概念及应用。
完成试验内容
建立一个链表,每个结点包括学号、姓名、及三科成绩、平均成绩。
除平均成绩
外,各项均由键盘输入。
要求:
(A).计算平均成绩。
(B).要实现插入功能。
(C).要有排序功能。
(D).要有存取功能。
参考菜单:
voidMenu()
{puts("
*********************************************"
);
puts("
*StudentSystemCommandHelp*"
*L=Listallrecords*"
*D=Deletearecordselectedbynumber*"
*A=Appendrecords*"
*I=Insertrecords*"
*S=Sortrecords*"
*H=Showthishelpmessage*"
*V=Saverecordstoafile*"
*O=Loadrecordsfromafile*"
*C=Clearscreen*"
puts
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 实验 讲义 教案 资料