c语言实验指导书.docx

上传人:b****3 文档编号:11086955 上传时间:2023-05-29 格式:DOCX 页数:43 大小:69.22KB
下载 相关 举报
c语言实验指导书.docx_第1页
第1页 / 共43页
c语言实验指导书.docx_第2页
第2页 / 共43页
c语言实验指导书.docx_第3页
第3页 / 共43页
c语言实验指导书.docx_第4页
第4页 / 共43页
c语言实验指导书.docx_第5页
第5页 / 共43页
c语言实验指导书.docx_第6页
第6页 / 共43页
c语言实验指导书.docx_第7页
第7页 / 共43页
c语言实验指导书.docx_第8页
第8页 / 共43页
c语言实验指导书.docx_第9页
第9页 / 共43页
c语言实验指导书.docx_第10页
第10页 / 共43页
c语言实验指导书.docx_第11页
第11页 / 共43页
c语言实验指导书.docx_第12页
第12页 / 共43页
c语言实验指导书.docx_第13页
第13页 / 共43页
c语言实验指导书.docx_第14页
第14页 / 共43页
c语言实验指导书.docx_第15页
第15页 / 共43页
c语言实验指导书.docx_第16页
第16页 / 共43页
c语言实验指导书.docx_第17页
第17页 / 共43页
c语言实验指导书.docx_第18页
第18页 / 共43页
c语言实验指导书.docx_第19页
第19页 / 共43页
c语言实验指导书.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言实验指导书.docx

《c语言实验指导书.docx》由会员分享,可在线阅读,更多相关《c语言实验指导书.docx(43页珍藏版)》请在冰点文库上搜索。

c语言实验指导书.docx

c语言实验指导书

实验一C语言程序的编辑和运行

一、实验目的

1.熟悉C语言的系统环境,学习编辑运行C语言程序的基本方法。

2.进一步认识程序的两种错误类型对程序结果的影响,加深对程序测试重要性的认识。

3.认识C语言程序的结构特点,学习程序的基本编写方法

 

二、实验内容

1. TurboC2.0集成环境的使用。

使用TurboC2.0集成环境,编辑运行实现乘法运算的程序。

乘法运算的源程序如下:

#include"stdio.h"

main()

{

inta,b;

a=251;  /*使a具有值251*/

b=8;  /*使b具有值8*/

printf("%d\n",a*b);/*计算并输出表达式a*b*/

}

2.标识符和程序的逻辑错误。

修改上面的程序,观察运行结果。

⑴将程序中的表达式“a*b”的“a”改为“A”,然后运行程序。

⑵将程序中的表达式“a*b”修改为“a-b”,然后运行程序。

3.编辑并运行能够对任意两个整数进行乘法运算的程序。

下面是源程序清单:

#include"stdio.h"

main()

{

inta,b;

printf("Inputa,b:

");/*在屏幕显示提示信息Inputa,b:

*/

scanf("%d,%d",&a,&b);/*该语句的作用是实现数据的键盘输入*/

printf("a*b=%d\n",a*b);/*输出乘法运算的结果*/

}

三、实验指导

1.TurboC2.0集成环境的使用。

在主教材的第1单元,我们介绍了使用TC2.0上机实现一个C语言程序的一般步骤。

按照所述步骤,操作如下:

⑴启动TC2.0。

⑵使用“File→New”命令或直接使用“Edit”命令,使TC2.0进入编辑状态,录入编辑上面的源程序。

⑶源程序录入完毕后,使用“Comple→CompiletoOBJ”对源程序进行编译,如果源程序存在语法错误,这时编译系统会把程序中的错误指示出来。

发现错误后,需要立即修改源程序,然后重新编译。

⑷编译无误后,使用“Comple→LinkEXEfile”连接目标代码,生成可执行文件,这个文件将由运行命令“Run”运行。

上面的⑶、⑷两个步骤,也可以使用“Comple→Buildall”或“F9”功能键一步完成。

⑸连接完成后,使用“Run”命令,或者使用“Ctrl+F9”组合键运行程序。

程序运行过程瞬间结束,要察看程序运行结果,需要切换到运行屏幕,用组合健“Alt+F5”实现。

按Alt+F5后,将看到屏幕显示如下结果:

2008

按任意键,屏幕返回程序状态。

对一个未经编译和连接的源程序,TC2.0也可以直接运行它,因此,运行一个C语言程序时,编译和连接的操作步骤可以省略,即编辑好一个源程序后,直接使用Run命令运行它。

此时,并非编译、连接过程不存在了,而是“Run”命令运行程序时,因找不到当前程序的可执行文件,而自动启动编译命令和连接命令。

只有当编译、连接正常进行后,程序才会被运行。

因此,上面的过程可以简化为两个操作步骤:

⑴启动TC2.0,录入编辑源程序。

⑵按“Ctrl+F9”组合键运行程序。

特别提示:

⑴保存源程序是一个重要的操作环节。

在编辑源程序的过程中或源程序编辑完成后,及时保存源程序是十分必要的,但初学者往往忽视这一环节。

操作步骤如下:

①按“F2”功能键,出现图1-1所示屏幕。

白色背景窗口显示了系统为当前程序设定的默认存储位置(D:

\TC,该存储位置因系统而异,可以改变)和默认文件名NONAME.C。

图1-1修改文件名窗口

②输入新的文件名。

为了操作方便,可以使用默认存储位置,指定文件名为mult.c。

操作时只需将NONAME.C改写为mult.c后回车确认即可。

⑵使用Windows的记事本程序提高源程序编辑效率。

尤其是编辑较大的程序时,这种方法更有效。

下面是Windows的记事本程序和TC2.0相结合,编辑运行以上乘法程序的步骤。

①启动Windows的记事本程序,录入编辑乘法源程序。

②保存程序,如图1-2所示。

选择合适的存储位置,如上面使用的TC2.0的默认程序目录D:

\TC;输入指定的文件名,如mult.c;选择保存类型为“所有文件”。

图1-2记事本程序文件存盘窗口

③激活TC2.0,按“F3”功能键,屏幕窗口如图1-3所示。

在“LoadFileName”框中键入步骤②使用的文件名mult.c,回车确认后将源程序调入TC2.0系统,然后按组合键“Ctrl+F9”运行程序。

图1-3文件装载窗口

2.标识符和程序的逻辑错误。

第一项内容用于验证C语言中标识符的特性,当用“A”取代“a”后,程序将不能运行,说明作为标识符“A”和“a”是不等价的。

请读者自己进行类似的替换,然后察看程序的运行结果。

如,将程序中的“printf”改为“PRINTF”,然后运行程序看结果。

第二项实验内容说明了程序的逻辑错误情况。

若把“a*b”误写为“a-b”,程序会顺利编译运行,但显然不是乘法运算的结果。

3.编辑并运行能够对任意两个整数进行乘法运算的程序。

编辑该程序前,首先使用“File→New”命令使TC2.0进入新程序编辑状态,然后编辑运行该程序。

程序运行后,屏幕将显示下面的提示信息:

Inputa,b:

此时,应从键盘输入两个整数数据,然后回车确认。

下面是一个输入实例:

20,35

下面是程序的输出结果:

a*b=700

特别提示:

程序的输入数据往往有格式规定,只有按照正确的格式输入数据,一个正确的程序才会得到正确的结果。

运行上面的程序时,输入的两个数据必须以“,”分隔,否则将得不到正确的结果。

这是程序要求的数据输入格式。

请读者再次运行程序,对输入的两个数据以空格分隔,察看执行结果。

例如:

Inputa,b:

2035

再次运行程序,然后输入两个很大的整数,察看运行结果。

例如:

Inputa,b:

20000,35000

显然,上面两次运行的结果都是不正确的。

这说明,既没有语法错误,也没有逻辑错误的程序,运行后也会得不到正确的结果。

第一种情况出错,是因为输入数据时数据之间的分隔形式不符合程序的要求。

第二种情况,输入数据的格式没有问题,但输入的数据超出了程序能够允许的整数范围。

这项实验内容提醒读者,在上机实现一个C语言程序时,各种错误的情况都可能出现。

即便是一个看上去很好的程序,仍然会有许多需要改进之处。

从算法的角度理解,就是任何算法,都可能存在进一步完善的空间。

四、思考题

1.选择一种较熟悉的C语言环境,编辑运行主教材1.3节的自然数累加程序。

2.进一步熟悉TC2.0集成环境的功能。

 

实验二顺序结构程序设计

一、实验目的

1.掌握printf()、scanf()、putchar()、getchar()等基本输出、输

入函数的格式及其主要用法。

2.熟练掌握顺序结构的程序设计。

二、实验内容

1.基本输入输出函数的用法。

编辑运行下面的程序,并根据执行结

果分析程序中各个语句的作用。

#include

main()

{

inta,b;

floatd,e;

charc1,c2;

doublef,g;

longm,n;

unsignedintp,q;

a=61;b=62;

c1='a';c2='b';

d=5.67;e=-6.78;

f=1234.56789;g=0.123456789;

m=50000;n=-60000;

p=32768;q=40000;

printf("a=%d,b=%d\nc1=%c,c2=%c\n",a,b,c1,c2);

printf("d=%6.2f,e=%6.2f\n",d,e);

printf("f=%15.6f,g=%15.10f\n",f,g);

printf("m=%ld,n=%ld\np=%u,q=%u\n",m,n,p,q);

}

2.顺序结构程序设计。

⑴已知圆柱体横截面圆半径r,圆柱高h。

编写程序,计算圆周长

l、圆面积s和圆柱体体积v,并输出计算结果。

⑵编写一个程序,根据本金a、存款年数n和年利率p计算到

期利息。

计算公式如下:

到期利息公式为a*(1+p)n–a

ab的计算公式为exp(b*ln(a))

三、实验指导

1.基本输入输出函数的用法。

⑴运行所给出的源程序,对照结果分析各语句的作用。

⑵将程序中的第二、第三个printf语句修改为如下形式,然后运

行程序,察看结果。

printf("d=%-6.2f,e=%-6.2f\n",d,e);

printf("f=%-15.6f,g=%-15.10f\n",f,g);

⑶将上述两个printf语句进一步修改为如下形式,然后运行程序,

察看结果。

printf("d=%-6.2f\te=%-6.2f\n",d,e);

printf("f=%-15.6f\tg=%-15.10f\n",f,g);

⑷将程序的第10-15行修改为如下语句:

a=61;b=62;

c1='a';c2='b';

f=1234.56789;g=0.123456789;

d=f;e=g;

p=a=m=50000;q=b=n=-60000;

运行程序,并分析结果。

⑸修改⑴中的程序,不使用赋值语句,而用下面的scanf语句为a、

b、c1、c2、d、e输入数据:

scanf("%d%d%c%c%f%f",&a,&b,&c1,&c2,&d,&e);

①请按照程序原来中的数据,选用正确的数据输入格式,为上述

变量提供数据。

②使用如下数据输入格式,为什么得不到正确的结果?

输入数据:

6162ab5.67-6.78

⑹进一步修改⑸中使用的程序,使f和g的值用scanf()函数输入。

⑺进一步修改上面的程序,使其他所有变量的值都改用scanf()

函数输入。

①参考程序

#include

voidmain()

{

inta,b;

floatd,e;

charc1,c2;

doublef,g;

longm,n;

unsignedintp,q;

printf("Input(a,b,c1,c2,d):

");

scanf("%d%d%c%c%f%f",&a,&b,&c1,&c2,&d,&e);

printf("Input(f,g):

");

scanf("%lf%lf",&f,&g);

printf("Input(m,n,p,q):

");

scanf("%ld%ld%u%u",&m,&n,&p,&q);

printf("a=%d,b=%d\nc1=%c,c2=%c\n",a,b,c1,c2);

printf("d=%-6.2f,e=%-6.2f\n",d,e);

printf("f=%-15.6f,g=%-15.10f\n",f,g);

printf("m=%ld,n=%ld\np=%u,q=%u\n",m,n,p,q);

}

②数据输入格式

Input(a,b,c1,c2,d):

6162ab5.67-6.78

Input(f,g):

1234.5678900.1234567890

Input(m,n,p,q):

50000-600003267840000

⑻修改⑺中的程序,使c1、c2的数据用getchar()函数输入,用

putchar()函数输出。

①可按照如下方法修改程序:

将程序中的“scanf("%d%d%c%c%f%f",&a,&b,&c1,&c2,&d,&e);”语

句用以下四个语句替换:

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

c1=getchar();

c2=getchar();

scanf("%f%f",&d,&e);

②使用与⑺相同的数据输入格式输入数据。

③请分析:

使用如下格式为a、b、c1、c2输入数据时会出现什么

结果?

运行程序验证

所分析的结论。

输入数据格式:

6162

a

b

2.顺序结构程序设计。

⑴参考程序

/*计算圆周长、面积及圆柱体体积的程序*/

#include

#definePI3.14159

main()

{

floatr,h,l,s,v;

printf("r,h=");

scanf("%f,%f",&r,&h);

l=2*PI*r;

s=PI*r*r;

v=s*h;

printf("L=%f\tS=%f\tV=%f\n",l,s,v);

}

程序调试时要注意如下几点:

①输入数据的格式要与程序中要求的格式一致。

如上述程序要用

“,”分隔数据。

②根据程序运行情况,调整输入、输出数据的格式,使数据的输

入输出格式更符合使用习惯。

③运行程序,输入负数数据,察看程序的执行结果。

⑵参考程序

/*计算存款利息的程序*/

#include

#include

main()

{

intn;

floata,p,acc;

printf("a,n,p=");

scanf("%f,%d,%f",&a,&n,&p);

acc=a*exp(n*log(1.0+p))-a;

printf("Accrual=%-10.2f\n",acc);

}

四、思考题:

1.在“基本输入输出函数的用法”内容⑶中,e和g都是用“\t”

进行格式控制,但为什么没有显示在同一列的位置上?

2.改进实验内容2的参考程序,使得输入负数时不进行计算,并

且显示相应的提示信息。

实验三、选择结构程序设计

一、实验目的

1.学会使用逻辑表达式表示条件的方法。

2.掌握if语句三种形式的用法。

3.掌握switch语句的用法。

4.学会设计有实际价值的分支结构程序。

二、实验内容

1.简单if语句的用法。

编写调试程序:

从键盘输入一个任意大小的实

数x,如果x满足如下条件,则输出x及其绝对值。

输出x的条件:

-29.5≤x≤29.5

2.if-else语句的用法。

修改上面的程序,使得x满足-29.5≤x≤29.5

时输出x及其

绝对值,否则只输出x。

3.if-elseif语句的用法。

编写一个能够进行加减法运算的程序,要

求:

从键盘任意输入两个实数,然后输入一个运算符,当运算符为“+”

时对两个数进行加法运算,为“-”时对两个数进行减法运算,其他符

号时,只显示输入的符号不进行运算。

4.switch语句的应用。

编写计算器程序。

要求从键盘任意输入两个数

值,然后输入一个四则运算符,自动完成运算后输出结果。

三、实验指导

1.简单if语句的用法。

⑴编程分析

正确表示条件,将数学不等式-29.5≤x≤29.5表示为如下逻辑表达式:

x>=-29.5&&x<=29.5或(x>=-29.5)&&(x<=29.5)

也可以使用x的绝对值形式表示,如下:

fabs(x)<=29.5

⑵参考程序

#include"math.h"

voidmain()

{

floatx;

printf("x=");

scanf("%f",&x);

if(x>=-29.5&&x<=29.5)

printf("x=%f\t|x|=%f\n",x,fabs(x));

}

⑶程序调试

输入数据时,至少应考虑的几种情况

①输入满足输出条件的数,包括正数、负数、零。

②输入不满足输出条件的数,包括正数、负数。

③输入数据为整数。

2.if-else语句的用法。

⑴编程分析

只需修改上面程序中的if语句即可。

将if语句修改为如下形式:

if(x>=-29.5&&x<=29.5)

printf("x=%f\t|x|=%f\n",x,fabs(x));

else

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

⑵程序调试

输入数据时,除考虑上面指出的三种情况的数据外,输入一个字符数据,

观察会是什么结果。

3.if-elseif语句的用法。

⑴参考程序

#include"math.h"

#include"stdio.h"

voidmain()

{

floatx,y;

charop;

printf("x,y:

");

scanf("%f,%f",&x,&y);

getchar();

printf("operator:

");

scanf("%c",&op);

if(op=='+')

printf("%f+%f=%f\n",x,y,x+y);

elseif(op=='-')

printf("%f-%f=%f\n",x,y,x-y);

else

printf("operator:

%c\n",op);

}

⑵程序调试

运行程序时,应考虑如下问题:

①参考程序中的“getchar();”语句的作用是什么?

去掉该语句后,

再运行程序,观察并分析运行的结果。

②输入数据时必须要考虑到题目要求的三种情况。

4.switch语句的应用。

⑴编程分析

①四则运算共有加(+)、减(-)、乘(*)、除(/)四种运算,要

做出判断需使用switch语句。

对上面的程序进行适当修改可得到本程序。

②当输入符号为四则运算符之外的符号时,不进行任何运算,但应给出

相应的提示信息。

当使用提示信息是,switch语句应含有default子句。

⑵参考程序

#include"stdio.h"

voidmain()

{

floatx,y;

charop;

printf("请输入运算数(两个运算数之间以“,”分隔):

");

scanf("%f,%f",&x,&y);

printf("请输入运算符:

");

getchar();

op=getchar();

switch(op)

{

case'+':

printf("%f+%f=%f\n",x,y,x+y);

break;

case'-':

printf("%f-%f=%f\n",x,y,x-y);

break;

case'*':

printf("%f*%f=%f\n",x,y,x*y);

break;

case'/':

printf("%f/%f=%f\n",x,y,x/y);

break;

default:

printf("运算符输入不正确!

\n");

}

}

⑶程序调试

①参考程序中使用了中文提示信息,如果使用的C语言系统不支持汉

字,应将这些提示信息换用英文信息。

②调试程序时,+、-、*、/及非四则运算符的情况都应予以调试。

四、思考题

1.在输入数值数据时,有时错误地输入了字符,导致程序运行后出现

不正常的结果。

请读者考虑,如何改进程序,使得发生这种错误输入时能检查出来?

2.改进学生成绩分等程序,使得输入成绩数据时能正确处理如下情况:

⑴实验考核成绩输入了小写字母。

⑵实验考核成绩输入了等级以外的字符。

实验三、分支循环结构程序设计

一、实验目的

1.通过本实验,加深对循环控制结构有关概念的理解。

2.熟练掌握while、do-while和for三种循环控制语句的特点,掌握循环

结构程序设计和调试方法。

3.掌握二重循环结构程序的设计方法。

二、实验内容

1.用while循环实现数据统计问题。

数据统计问题:

从键盘输入一批任意数量的整数,统计其中不大于100的

非负数数值的个数。

2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问

题。

调试数据仍参照上面给出的几种情况设计使用。

3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。

4.阶乘累加问题。

编写程序,求1+2!

+3!

+…+n!

的值(习题5.9)。

三、实验指导

1.用while循环实现数据统计问题。

⑴编程分析

由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不

确定的。

在进行程序设计时,确定循环控制的方法是本实验的一个关键

问题。

循环控制条件可以有多种确定方法:

①使用一个负数作为数据输入结束标志。

②输入一个数据后通过进行询问的方式决定是否继续输入下一个数据。

⑵参考程序

l参考程序一

/*使用负数作为数据输入结束标志的程序*/

#include"stdio.h"

voidmain()

{

intm,counter=0;

while

(1)

{

printf("请输入一个整数:

");

scanf("%d",&m);

if(m<0)break;

if(m<=100)counter++;

printf("\n");

}

printf("符合要求的整数个数为:

%d\n",counter);

}

l参考程序二

/*通过进行询问的方式决定是否继续输入下一个数据的程序*/

#include"stdio.h"

voidmain()

{

intm,counter=0;

charask;

while

(1)

{

printf("请输入一个整数:

");

scanf("%d",&m);

getchar();

if(m>=0&&m<=100)counter++;

printf("继续输入下一个数据?

(Y/N)");

ask=getchar();

getchar();

if(ask!

='y'&&ask!

='Y')break;

printf("\n");

}

printf("符合要求的整数个数为:

%d\n",counter);

}

⑶程序调试

这里只对“参考程序一”的调试数据进行设计。

该程序输入数据时,应

考虑多种数据组合,对每一组数据察看并分析结果。

例如:

①输入的一组数据之间全部以空格分隔,只有最后一个数为负数,以回

车键结束。

如:

16357–10

②输入的一组数据之间全部以空格分隔,在负数之后又有正数数据,最

后一个数不为负数,以回车键结束。

如:

16357–109617

③输入的一组数据之间全部以空格分隔,输入数据中有多个负数,以回

车键结束。

如:

16357–109617–877

④输入的数据中有大于100的整数。

如:

16357–1096117–8726766

⑤数据之间既用空格分隔,也用回车键分隔。

如:

763537622717

9667

9617–8771966982-1631

⑥每输入一个数据后均按回车键。

⑦输入的第一个数据即为负数。

⑧在输入的数据中使用数值很大的整数。

如:

17667789876517899-10987

⑷在上面的“参考程序一”中,使用了常数“1”作为循环控制的条件,

这是常用的循环控制方式。

请修改上面的程序,不使用常数循环条件,

仍然使用while语句实现数据统计问题

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2