C程序设计实验指导书.docx

上传人:b****7 文档编号:10766803 上传时间:2023-02-22 格式:DOCX 页数:54 大小:66.92KB
下载 相关 举报
C程序设计实验指导书.docx_第1页
第1页 / 共54页
C程序设计实验指导书.docx_第2页
第2页 / 共54页
C程序设计实验指导书.docx_第3页
第3页 / 共54页
C程序设计实验指导书.docx_第4页
第4页 / 共54页
C程序设计实验指导书.docx_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

C程序设计实验指导书.docx

《C程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《C程序设计实验指导书.docx(54页珍藏版)》请在冰豆网上搜索。

C程序设计实验指导书.docx

C程序设计实验指导书

 

C语言程序设计

实验指导书

 

班级:

学号:

姓名:

 

实验一TurboC的使用

一、目的和要求

1、 熟悉所用计算机系统的基本操作方法。

2、 掌握C语言程序的书写格式和C语言程序的结构。

3、学习TurboC2.0的使用方法,掌握程序编辑、编译、连接、运行及查看运行结果的方法。

4、要求同学必须在上机前将程序编好(写在草纸上,调试后写在下面)

二、实验内容

1、熟悉使用的计算机系统的基本操作,创建自己的工作目录,掌握TurboC2.0的启动方法

1)单击开始——运行——输入COMMAND——按ENTER键

2)进入TURBOC所在目录

3)输入TC后回车,进入TC环境

2、熟悉TurboC2.0的系统菜单组成及功能。

学习使用功能键和快捷键调用菜单项的方法。

掌握文件建立、编辑、修改和保存的方法。

落实文件的存储位置是否是你的工作目录,如果不是,回第二步重新设置。

了解编译、连接和运行命令在屏幕菜单项的位置和调用方法。

按F10进入菜单选择

  File处理文件(包括装入、存盘、选择、建立、换名写盘),目录操作(包括列表、改变工作目录),退出系统及调用DOS。

Edit建立、编辑源文件。

Run控制运行程序。

如果程序已经编译连接好,且Debug/SourceDebugging以及Option/Compiler/Codegeneration/OBJDebugInformation开关置为On,则可以用此菜单初始化调试阶段。

Compile编译并生成目标程序与可执行文件。

Options可以选择集成环境任选项(如存储模式、编译时的任选项、诊断及连接任选项)及定义宏;也可以记录IncludeOutput及Library文件目录,保存编译任选项和从配置文件加载任选。

Break/Watch增加、删除、编辑监视表达式,及设置、清除、执行至断点。

特别要指出的是,除了Edit项外,每一个菜单又有对应的子菜单。

而选择Edit项目后,只是进入编辑器。

为了从主菜单中选择所需要的功能,可以用以下两种方式之一:

    

(1)按F10键后,可以看到屏幕上部主菜单中有反白显示,此时,利用左、右光标移动键(←与→)选择需要的菜单,然后按回车(Enter)键。

(2)直接按Alt+主菜单条目中的首字母(分别为F,E,R,C,P,O,D,B),此时就会出现相应的子菜单。

例如,按Alt+F表示选择文件子菜单(File)。

当出现子菜单时,其中某个条目是高亮度的,此时可以利用上、下光标移动键(↑与↓)来移动该高亮度线,从而选择所需要的功能。

在菜单调用时,按Esc键后将直接返回到活动窗口。

3、输入并运行下面最简单的C程序

使用File菜单的New命令创建一个新文件。

在编辑区输入下面程序:

#include

mian()

{

printf("HelloWorld!

\n")

}

按功能键F9进行编译和连接,观察屏幕显示的编译信息。

如果出现出错信息,信息窗口中将显示错误内容及定位错误时的语句行号,修改错误,再进行编译。

如果编译无错,按Ctrl+F9运行程序,按Alt+F5切换到用户屏,观察运行结果。

改变源程序中双引号内的字符串内容,重新编译和连接,并查看运行结果。

保存文件,查看你的工作目录下是否有该文件。

编译连接的中间文件应该在Output设置的目录中。

如果没有设置Output目录,中间文件应该在当前工作目录中。

4、输入并运行下面一个需要在运行时输入数据的程序,程序要求从键盘输入三个浮点数,输出它们的和。

#include

mian()

{floata,b,c,sum;

printf("inputa,b,c:

")

scanf("%f%f%f",&a,&b,&c);

sum=a+b+c;

printf("\nsum=%f\n",sum);

}

输入该程序,然后进行编译和连接,如果出错,仔细检查并修改错误,再进行编译连接,直到没有错误为止。

按Ctrl+F9运行程序,按照屏幕提示输入a、b、c三个变量的值,变量值之间用空格分隔,输入完毕按回车键【Enter】。

查看运行结果,判断结果正确与否。

保存文件,查看你的工作目录下是否有该文件。

5、指出下列程序中的错误,并编译,查看给的出错信息,并改正错误,运行程序给出结果。

1)#include“stdio.h”

main();/*mainfunction*/

floatr,s;/*/*risradius*/,/*sisareaofcircular*/*/

r=5.0;

s=3.1419*r*r;

printf(“%f\n”,s)

2)#include“stdio.h”

main/*mainfunction*/

{floata,b,c,v;/*a,b,caresides,visvolumeofcube*/

a=2.0;b=3.0;c=4.0;

v=a*b*c;

printf(“%f\n”,v)

}

三、分析与讨论

1.记下在调试过程中所发现的错误、系统给出的出错信息和对策。

分析讨论对策成功或失败的原因。

2.总结C程序的结构和书写规则。

3.实验中遇到的问题与解决的办法

 

实验二 表达式与输出函数

一、目的和要求

1.掌握C语言基本数据类型的概念,理解数据类型与运算的关系。

2.熟悉简单变量的定义和赋值方法,掌握不同类型数据之间赋值的规律。

3.学习C语言运算符优先级和结合性的概念,掌握算术表达式的计算方法及表达式计算中的类型转换方法。

4.掌握数学表达式的程序表示方法。

5.掌握printf()函数的使用

6.进一步熟悉C程序的编辑、编译、连接和运行的过程。

二、实验内容

1.输入下面程序并运行

#include

main()

{inta,b,c;

a=getchar();

b=getchar();

c=getchar();

printf("a=%db=%dc=%d\n",a,b,c);

printf("a=%cb=%cc=%c\n",a,b,c);

}

输入:

1【Enter】

ab【Enter】

分析本题程序的输出结果,解释scanf函数的工作过程,试用其他输入数据验证你的分析结果。

 

2.下面表达式计算中,哪些地方会发生类型转换?

各个转换从什么类型转换到什么类型?

表达式计算的结果是什么?

试编程进行验证。

(1)2.5+2*7%2/4

(2)4*(2L+6.5)-12

(3)10/(5*3)(4)2*10.0/(5*3)

3.设:

x=2.7,a=8,y=4.5,编程计算下面表达式的值:

y+a%5*(int)(x+y)/2%4

 

4.输入并运行下面程序,对照程序分析运行结果:

(1)将一个大于32767的长整型数赋给整型变量,会得到什么结果。

(2)将一个负整数赋给一个无符号的变量,会得到什么结果。

(3)将一个字符型变量赋给一个整型变量,会得到什么结果。

程序如下:

#include

main()

{inta,b;

longd,e;

unsignedf,g;

a=100;

b=-100;

d=50000;

e=32767;

printf("%d,%d\n",a,b);

printf("%ld,%ld\n",d,e);

f=a;

g=b;

printf("%u,%u\n",f,g);

a=’c’;

printf("%d\n",a);

a=d;

b=e;

printf("%d,%d\n",a,b);

}

5.分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。

main()

{

inti,j,m,n;

i=8;j=10;

m=++i;n=j++;

printf(“%d,%d,%d,%d”,i,j,m,n);

}

分别作以下改动之后,先分析再运行:

1)将第四行改为:

m=i++;n=++j;

2)程序改为:

main()

{

inti,j;

i=8;j=10;

printf(“%d,%d”,i++,j++);

}

3)在2)的基础上,将printf语句改为:

printf(“%d,%d”,++i,++j);

4)再将printf语句改为:

printf(“%d,%d,%d,%d”,i,j,i++,j++);

5)程序改为:

main()

{

inti,j,m=0,n=0;

i=8;j=10;

m+=i++;n-=--j;

printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);

}

6.求下面算术表达式的值。

(1)x+a%3*(int)(x+y)%2/4

设x=2.5,a=7,y=4.7

(2)(float)(a+b)/2+(int)x%(int)y

设a=2,b=3,x=3.5,y=2.5

先自己分析,再试着用程序求解,看得到的结果是否一致。

7.写出下面表达式运算后a的值,设原来a=10。

设a和n已定义成整型变量。

(1)a+=a

(2)a-=2

(3)a*=2+3(4)a/=a+a

(5)a%=(n%=2),n的值等于5(6)a+=a-=a*=a

先自己分析,再试着用程序求解,看得到的结果是否一致。

 

8.输入x,y,编写程序求z=x+|y|的值。

实验步骤与要求:

(1)程序中用scanf函数输入x和y的值,请分析以下两个语句

scanf(“%f%f”,x,y);

scanf(“%f%f”,&x,&y);

哪一个是正确的,分别运行之,分析程序运行结果。

如果scanf函数改为scanf(“%f,%f”,&x,&y);应该怎样输入数据。

9.编写程序,使用格式输入函数,从键盘按顺序输入下列数据,再将其用合适的格式分类输出到屏幕上。

注意scanf函数的格式要求。

‘a’、15、‘c’、100、20.6、60000、3500、32768、450.34、126.3455568

 

10.输入并编辑下面的程序

main()

{

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);

这个程序有语法错误吗?

为什么?

(1)调试上述程序无语法错误后,用下面的测试数据,对程序进行测试:

a=123,b=456,c=17.6,d=71837.65,e=70000,f=2174506,u=62000,v=58765,c1=’a’,c2=’b’

分析运行结果。

特别注意输入c1,c2的值是什么?

什么原因?

 

(2)将输入e和f的语句改为:

scanf(“%d,%d”,&e,&f);

再用上述测试数据测试并分析结果。

 

(3)将输入u、v的语句改为:

scanf(“%d,%d”,&u,&v);

再用上述测试数据测试并分析结果。

 

(4)将输出e ,f 的语句改为:

printf(“e=%17d,f=%17d\n”,e,f);

再用上述测试数据测试并分析结果。

 

(5)将输出u、v的语句改为:

printf(“u=%u,v=%u\n”,u,v);

printf(“u=%d,v=%d\n”,u,v);

再用上述测试数据测试并分析结果。

(6)请读者自己修改程序和改变数据输入的形式,分析各种情况下的输入与输出。

在scanf(“%c,%c”,&c1,&c2);语句之前加一个语句:

getchar();

(7)验证转义字符\n与\r的意义有何不同。

 

三、分析与讨论

1.数学表达式与C语言表达式的区别是什么?

在进行转换时应注意什么问题?

2.学过的运算符的优先级别是什么顺序?

3.自加(自减)运算符的前缀表达式与后缀表达式有什么区别?

4.浮点型数据与整型数据在进行除法运算时,有什么区别?

(例如5.0/3和5/3有什么区别)

5.printf()函数的有哪些格式符?

怎样使用?

6.scanf()函数的输入格式符中的字符与printf()函数中的格式符有何不同?

在输入数据时,需要注意哪些问题?

(例如scanf(“%d,%f:

%d”&a,&b,&c)在输入数据时应该怎样输入?

7.总结在printf函数中格式符%C的使用,并给出样例。

8.总结在printf函数中可以使用的各转义字符及其功能。

9.用putchar()和getchar()函数有哪些注意事项?

10.在scanf()函数中,特别是数值型数据与字符型的混合输入时,应注意哪些问题?

举例说明。

11.实验中遇到的问题与解决的办法。

实验三顺序结构

一、实验目的与要求

1.熟练掌握格式输入与格式输出函数的使用,理解scanf函数的工作过程。

2.熟练掌握赋值语句的使用方法。

3.进一步体会C程序的结构组成,体会主函数main的作用。

4.熟悉顺序结构的程序设计方法

二、实验内容

1.编写输入三角形的三边长a、b、c,求三角形面积area的程序。

实验步骤与要求:

(1)输入前要加提示语句。

(2)输出结果前要有必要的文字说明。

(3)输入一组数据3,4,5,观察运算结果。

(4)输入另外一组数据3,4,8,观察运算结果,分析这个运算结果是否有效。

4.编写程序,输入两个整数:

1500和350,求出它们的商数和余数并进行输出。

5.编写程序,读入三个整数a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a。

6.编程计算半径r=2.5的圆面积、圆周长、球体积及球表面积。

如果高h=4.5,计算圆柱体的表面积和体积。

显示结果保留两位小数。

7.编写程序,输入一行字符(用回车结束),输出每个字符以及与之对应的ASCII码,每行输出3对。

 

8.编写程序,输入一行输字字符(用回车结束),每个数字字符的前后都有空格,编程实现把这一行数字转换成一个整数。

例如:

2468(CR)

输出:

2468

 

三、分析与讨论

1.以下C程序的功能是:

从键盘依次输入4个整数,计算并输出这4个数的平均值。

#include

main()

{inta,b,c,d,av;

printf("Inputa,b,c,d:

");

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

av=(a+b+c+d)/4;

printf("av=%f\n",av);

}

观察运行结果,想一想为什么,将最后一句中的“%f”改为“%d”,观察结果有什么变化,如果想使计算结果为实数,如何修改程序?

如果想计算4个实数的平均数,如何修改程序?

2.在实验过程中遇到的问题及解决的办法。

 实验四 选择结构

一、实验目的

1.理解C语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。

2.掌握利用if结构实现选择结构的方法。

3.掌握利用switch结构实现多分支选择结构。

4.掌握若干简单算法。

5.学习选择结构程序的调试。

二、实验内容和步骤

1.用scanf函数输入一个年份year,计算这一年2月份的天数days,然后用输出函数printf输出days。

实验步骤与要求:

(1)有变量定义为整型。

(2)输入前要加提示语句。

(3)输出结果前要有必要的文字说明。

说明:

(1)闰年的条件是:

year能被4整除但不能被100整除,或者year能被400整除。

(2)如果year是闰年,则2月份的天数为29天,不是闰年则为28天。

 

2.编写程序计算下面分段函数的值:

2x+5(x<0)

f(x)=x2-x+3(0≤x<10)

x3-7x(x≥10)

具体要求如下:

(1)用if语句实现分支,自变量和函数值均用双精度类型。

(2)自变量用scanf函数输入,给一些输入提示。

(3)分别输入三种区间中x的值,检查输出函数值是否正确。

 

3.已知三个数a,b,c,找出最大值放于max中。

4.scanf函数输入一个百分制成绩,输出成绩等级A、B、C、D、E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下分为E。

要求百分制成绩用整数输入,在输入前要有提示,输入后要判断成绩的合理性,对不合理的成绩,应输出出错信息。

输出结果中应包括百分制和等级成绩,并要有文字说明。

使用if语句和switch语句分别实现。

4.

三、分析讨论

1.      c语言如何表示“真”与“假”?

系统如何判断一个量的“真”与“假”?

2.写出下面各逻辑表达式的值。

设a=3,b=4,c=5

(1)   a+b>c&&b==c

(2)   a||b+c&&b-c

(3)   !

(a>b)&&!

c||1

(4)   !

(x=a)&&(y=b)&&0

(5)!

(a+b)+c-1&&b+c/2

3.对于多分支选择结构何时使用if语句的嵌套,何时使用switch语句?

4.在实验过程中遇到的问题及解决的办法。

 

 实验五循环结构

(一)

一、目的和要求

1.练习并掌握利用while语句、do_while语句实现循环结构的方法。

2.掌握循环结构的程序设计方法。

3.调试和修改循环结构的程序。

二、实验内容

1.求5!

 

2.编写程序,分别用while循环和do_while循环计算12+22+...+n2的值。

比较三个程序在循环控制上的特点。

 

3.计算两个数的最大公约数与最小公倍数。

(先求出最大公约数,再求最小公倍数。

根据最大公约数的定义求:

能同时被这两个数整除的最大数)

 

4.判断m是否是素数。

(根据素数的定义来判断:

除了1和它本身以外,不能被其他的数整除)

 

5.编写程序,求1-3+5-7+……-99+101的值。

 

四、分析与讨论

1.如何正确地设定循环条件,以及如何控制循环的次数。

2.While循环和do-while循环的区别

3.在实验中遇到的问题及解决的办法。

四、思考题

1.如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。

例如6的因子是1,2,3,且6=1+2+3,因此6是完数。

编写程序找出1000之内的所有完数及这些完数的和。

实验步骤与要求:

(1)要求使用for循环

(2)输出形式为:

完数1+完数2...=和值

算法说明:

(1)sum=0,m=2

(2)当m<=1000时,反复执行(2.1)(2.2)(2.3)(2.4),否则转(3)

(2.1)k=m/2,n=0,j=1

(2.2)当j<=k时,反复执行(2.2.1)(2.2.2),否则转(2.3)

(2.2.1)ifj是m的因子则执行n=n+j

(2.2.2)j++

(2.3)ifm=n则输出完数m,sum=sum+m

(2.4)m++

(3)输出m值

2. 给一个不多于5位的正整数,要求:

a.      求出它是几位数;

b.      分别打出每一位数字;

c.      按逆序打出各位数字,例如原数为321,应输出123。

 

实验六循环结构

(二)

一、实验目的

1.练习并掌握三种循环语句的应用。

2.练习多重循环的设计方法

3.练习控制语句break、continue、goto语句的使用方法。

4.练习调试与修改程序

二、实验内容

1.输入并运行下面的程序,观察程序的运行结果。

#include"stdio.h"

main()

{intn;

while

(1)

{printf("Enteranumber:

");

scanf("%d",&n);

if(n%2==1)

{printf("Isaid");

continue;}

break;

}

printf("Thanks.Ineededthat!

");

}

2.观察下面的C程序。

main()

{

inti,j;

longsum=0;

for(i=1,i<=20,i++)

for(j=1;j<=3;j++)

sum=sum+(i+1)*(i+1)*(j+2)

printf(“sumis:

%d\n”,sum);

}

(1)      将上述程序中的和分别做什么样修改,能使程序按如下要求运行:

.不循环;

.外循环1次,不进入内循环;

.外循环,内循环各1次;

.外循环1次,内循环2次;

.外循环2次,内循环1次;

.外循环19次,内循环3次;

.外循环20次,内循环2次;

.外循环21次,内循环3次。

(2)      试修改程序,以便能知道控制表达式

i=1;j<=20;i++

j=1;j<3;j+=

各执行了多少次?

(3)内循环与外循环的控制表达式进行对换,观察程序的执行结果有无变化,并且观

察对换后的外循环与内循环控制表达式执行的总次数有无变化?

(4)将(3)中程序写为

main()

{

inti,j,k;

longsum=0;

for(j=1.j<=3.j++)

{

k=j+2;

for(i=1;i<=20;i++)

sum=sum+(i+1)*(i+1)**k;

}

printf(“sumis:

%d\n”,sum);

}

观察程序的执行结果有无变化?

(5)将(3)中程序改写为

main()

{

intI,j,m,n;

longsum=0;

for(j=1;j<=3;j++)

{

m=j+2;

for(I=1;j<=20;I++)

{

n=I+1;

sum=sum+m*m*k;

}

}

printf(“sumis:

%d\n”,sum);

}

观察程序的执行结果有无变化?

(6)在(5)的程序中,若将外循环控制表达式分别做如下修改:

.j=1;j<3;j++

.j=1;j=3;j++

.j=1;j>=3;j++

.j=1;j>3;j++

.j=1;j<=3;j--

.j=1;j>3;j--

.j=1;j<3;j++

.j=0;j<=3;j+=

.j=0;j<3

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

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1