C语言程序设计上机指导书

姓名:_________________ 学号:_________________ 专业:_________________

日期:_________________

指导原则:

促进学生针对实际问题,用所学C语言知识编写符合规范的源程序代码,在某一集成开发环境下尽一切调试技能调试程序,并对运行结果进行分析处理,得出正确结论,解决好实际问题。更快更好地掌握所学知识,技能和软件的一向开发方法

目的:

1,通过上机实验,加深对教材内容的理解,特别是一些语法规定,熟练掌握各种语法规则。

2,通过上机实验,熟悉某个C语言集成开发环境。掌握集成开发环境下程序的编辑、编译与连接、运行的完整过程

3,通过上机实验,要学会调试程序。能根据系统给出的“出错信息”,判断错误所在,并修改错误,使程序正确运行。

要求:

1,复习与本次实验相关的教学内容

2,了解集成开发环境的操作步骤

3,准备好实验内容。对于编程题,一定要自己动手,书写工整,并人工检查无误后才能上机实验,以提高上机效率。

4,要准备好调试和运行程序时所需的数据。

5,对运行中可能出现的问题事先作出估计,并对程序中有疑问的地方作上标记,以便在运行时给予注意。并在程序调试时,把系统给出的出错原因,解决方法等记

载在源程序之后;程序运行结束后,把运行结果也记录下来。

6,每个实验应独立完成,对实际问题所编写的源程序需写出完整实验的报告。

第一次上机作业熟悉C语言集成开发环境

实验目的:

1,熟悉C语言集成开发环境

2,掌握集成开发环境下文件的编写与调用,源程序的编译与调试,程序运行结果的观察与分析。

3,掌握C语言程序的基本结构

实验要求:

1, 程序编写完后,要对输入的每一个符号和词进行检查核对,不能有错。

2,编写源程序时,不要在中文输入法下进行,也不要有首字符大写,否则调试时,会有错误。

实验内容:

1,在D盘新建文件夹:D:\C语言程序\×××(所在班级如0709401)\×××(自己学号或姓名如01),作为以后所做程序的存放位置。注:每次换机器须重复此

操作。

2,编辑,编译,运行下面程序并存盘,文件名为ex1_1.c

/* 输出信息的C源程序,文件名为ex1_1.c */

#include”stdio.h”

void main()

{ printf(“Hello, Everyone \n Study hard!\n”); }

输出结果为____________________

3,调入文件ex1_1.c,把程序修改成下面形式,运行,存盘,文件名为ex1_2.c

/* 输出信息的C源程序,文件名为ex1_2.c */

#include”stdio.h”

void main()

{ printf(“Hello, Everyone \n ”);

printf(“ Study hard!\n”);

}

输出结果为____________________, ”\n”的作用是_____________

4,编辑,编译,运行下面程序并存盘,文件名为ex1_3.c

/* 计算圆面积的程序,文件名为ex1_3.c */

#include”stdio.h”

void main()

{ float r,area;

printf(“r=?”);

scanf(“%f”,&r);

area=3.1415926*r*r;

printf(“arear=%f\n”,area);

}

第一次运行时输入1,运行结果为__________

再次运行时输入10,运行结果为_____________

把语句printf(“arear=%f\n”,area);修改为:printf(“arear(%0.1f)=%f\n”,r,area);后,

运行时输入10,这时程序的运行结果为______________

操作步骤:

一,TurboC 2.0集成开发环境

(1)熟悉C语言集成开发环境

进入集成开发环境(菜单模式):执行文件TC.EXE

文件菜单(file):FILE中有:NEW(新建文件),LOAD(或OPEN打开或调

入文件),SA VE(保存文件),SA VE AS,QUIT(退出C

语言集成开发环境)

编译菜单(compile):COMPILE TO OBJ +(路径名文件名)

运行菜单(run):RUN , USER SCREEN

选项(option):DIRECTORY(注明TC。EXE的当前目录路径,

路径不符合,编译程序找不到库函数所在头文件,编译会出错)

从菜单进入编辑区的按键:Enter

从编辑区进入菜单的按键:F10

注:运行出错时,按F10也可回到菜单区,按EDIT进入编辑区(2)掌握C语言源程序的编写(new(FILE)),编译(compile to obj(COMPILE)),运行(run(RUN)),观察结果(user screen(RUN)四个步骤。

编译出错时,按ENTER键,然后在光标所在行或上一行查找出错位置。同时在顶行红字部分(英文提示)找出错原因。

(3)掌握一定的调试方法。

方法:在已编译好的程序中人为制造错误(如删除标点符号,改错保留字(int,

printf, scanf),确定出错位置(光标所在行),猜测出错原因(根据顶行英文提

示)。

二,Visual C++6.0集成开发环境

1,启动Visual C++ 6.0环境

方法:单击“开始”-“程序”-“Microsoft Visual studio 6.0”-“Microsoft Visual C++ 6.0”

命令,启动Visual C++,VC6主窗口如下:

标题栏

菜单栏

工具栏

文件编辑区

项目工作区

输出区

状态栏

2. 编辑源程序文件

(1)建立新工程项目

①单击“文件”-“新建”,弹出“新建”对话框。

②单击“工程”选项卡;单击“Win32 Console Application”选项;“工程文件”框中输

入项目名(如gc1);“位置”框输入文件保存文件夹或单击“…”打开文件夹浏

览窗口,选择新项目文件所需保存的位置,单击“确定”按钮。

③弹出“Win32 Console Application Step 1of 1”对话框,在对话框中单击“An empt project”

按钮和“完成”按钮。系统显示“新建工程信息”对话框。单击“确定”按钮。

(2)建立新项目中的文件

①单击“文件”-“新建”,弹出“新建”对话框。

②选择“文件”选项卡。单击“C++ Source File”选项,在“文件”文件框中输入文件名,

单击“确定”按钮。系统自动返回VC6主窗口。

③显示文件编辑区窗口,在文件编辑区窗口输入源程序文件。

3,编译和连接

方法一:选择主窗口菜单栏中“编译”菜单项;系统弹出下拉菜单,选择“构件”菜单命令。

方法二:单击主窗口编译工具栏上的“Build”按钮进行编译和连接。

注:

(1)系统对程序文件进行编译和连接,生成以项目名称命名的可执行目标代码文件.exe。(2)编译连接过程中,系统如发现程序有语法错误,则在输出区窗口中显示错误信息,给出错误的性质、出现位置和错误的原因等。如果双击某条错误,编辑区窗口右侧出现一个箭头,指示再现错误的程序行。用户据此对源程序进行相应的修改,并重新编译和连接,直到通过为止。

4. 执行

方法一:单击“编译”菜单中“执行”命令。

方法二:单击主窗口编译工具栏上的“Build Execute”按钮来执行编译连接后的程序

运行成功,屏幕上输出执行结果,并提示信息:“Press any key to continue”。此时按任意键系统都将返回VC6主窗口。

注:在执行程序过程中出现运行错误。用户要修改源程序文件并且重新编译、连接和执行。

第二次上机作业掌握基本数据类型在程序中的正确应用

实验目的:

1 熟悉C语言集成开发环境及程序编写、编译、运行,观察运行结果

2 掌握基本的调试技巧(缺少标点符号,函数名错误或不一致)

3 熟悉C语言基本数据类型(int,long,unsigned int,float,double,char)的输

入,输出格式(%d,%ld,%f,%lf,%c,%o,%x,%u)

实验内容:

1,输入半径,求圆的面积(要求圆周率用符号常量表示)(查错改错1:圆周率的定义名与使用名不一致;查错改错2:面积的输出格式用%d)。

作业1程序如下,调试改正两处错误,正确运行后将文件保存为ex2_1.c

#define pi 3.1415927

#include"stdio.h"

main()

{ float area,banjing;

printf("please enter a data\n");

scanf("%f",&banjing);

area=2*p*banjing*banjing; /* 圆周率的定义名pi与使用名p不一致*/

printf("\n the area of yuan is %d\n",area); /* 面积的输出格式%d改为%f */

}

A)调试,语法错误如下:

出错信息为: D:\vcfile\ex1\ex.cpp(7) : error C2065: 'p' : undeclared identifier

中文意思为:符号‘p’没有定义。

错误原因及更正:圆周率的定义名pi与使用名p不一致,’p’改为’pi’运行

B)观察及分析运行结果,逻辑错误

分析:半径为3时,圆的面积应为:pi×3×3=28.2743343,不能为负数。

查错:先查面积变量area的输出格式,再往上逆推查其运算方法,最后查其定义

错误原因及更正:面积的输出格式%d(整数)改为%f (实数或单精度浮点数)

2,调入ex2_1.c 另存为ex2_2.c,并做如下修改后,保存调试运行程序,观察系统出出错信息(英文),并翻译成中文。注:每改一次,就调试一次。

1)将语句:float area,banjing;改为:floatarea,banjing;

则出错信息为:_________________________________________

中文意思为:_________________________________________

错误原因及更正:_________________________________________

2) 将语句:printf(”please enter a data\n”); 改为:printf(”please enter a data\n”)

则出错信息为:_________________________________________

中文意思为:_________________________________________

错误原因及更正:_________________________________________

3)将语句:scanf(“%f”,&banjing);改为:s can(“%f”,&banjing);

则出错信息为:_________________________________________

中文意思为:_________________________________________

错误原因及更正:_________________________________________

4) 将语句:float area,banjing;中英文标点符号“;”或“,”,改为中文输入法

后,再输入同样标点

则出错信息为:_________________________________________

中文意思为:_________________________________________

错误原因及更正:_________________________________________

第三次上机作业运算符与表达式的使用

实验目的:

1,熟悉C语言集成开发环境和熟悉C语言程序结构

2,掌握一定的调试技巧。

3,熟悉运算符与表达式的正确使用。

作业内容要求:

1,程序填空,以下程序输入3个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a,b,c的值,例如输入123,输出a=2,b=3,c=1

#include"stdio.h"

void main()

{ int a,b,c, ____;

printf("enter a,b,c:");

scanf("%d%d%d",__________);

____________; a=b;b=c;

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

}

1,填空后,运行程序,结果如下:_____________________

2,在程序输出语句前插入语句:clrscr(); 根据运行结果,说明其作用________________ 在程序输出语句后插入语句:getchar();根据运行结果,说明其作用_______________

2,调试以下程序(有两处语法错误:类型说明错与缺少符号’;’),写出运行结果并简要回答为什么(即了解程序的运行过程)

#include”stdio.h”

main()

{

intx,y,z;

x=6;

y=100;

z=(++x)/(y--);

printf(“x=%d,y=%d,z=%d\n”,x,y,z); 运行结果:_________________

z=(x+y--)*(x++)

printf(“x=%d,y=%d,z=%d\n”,x,y,z); 运行结果:_________________

}

第四次上机作业掌握顺序结构程序设计

实验目的:

4,熟悉C语言集成开发环境和熟悉C语言程序结构

5,掌握一定的调试技巧。

6,熟悉运算符与表达式的正确使用。

7,掌握语句的正确书写,学会编写顺序结构的程序。

作业内容要求:

1,编写程序求解:已知半径r=3厘米(cm).求球的体积v;

源程序代码——————> 上机调试后,源程序中需修改的对应部分

程序运行结果:

2, 以下叁个程序,选一个做。

1) 输入两个整数,求其和,差,积,商和余数

2) 输入一个三位数,依次输出其个位数字,十位数字,百位数字。

3) 用公式

()))((c s b s a s ---求三角形的面积(其中()c b a s ++=2

1,a,b,c 为

三角形的三边长) 要求:

1, 确定所需的输入变量,输出变量,中间变量的个数及命名,并为其选取正确

的数据类型。

2, 根据正确的逻辑顺序书写程序。(变量先说明再赋值后使用;先输入再处理

后输出;

3, 每次输出必须有提示信息。如:printf(“\n x+y=%f ”,x+y); 其中:x+y= 是

提示信息。

题号:

源程序代码:

输入数据与运行结果:

第五次上机作业 掌握顺序结构与输入输出函数

实验目的:

1,掌握顺序程序设计的一般方法:

2,根据算法(有的是计算公式)确定所需的输入变量,输出变量,中间变量的个数及命名,并为其选取正确的数据类型(有计算公式的由计算公式右边表达式值的类型确定)。

3,根据正确的逻辑顺序书写(审查)程序。(变量先说明再赋值后使用;函数先定义,后说明,再使用)

4,每次输入、输出应有提示信息。如:printf(“\n x+y=%f ”,x+y); 其中:x+y= 是提示信息。

5,注意表达式的正确书写格式。 6, 掌握程序的一般调试方法: 上机内容:

1, 在调试的过程中改正如下程序的错误 (注意:每编译一次只改正一个错误;

同时思考错误提示信息中单引号中的内容与错误的关系) 程序:用公式求三角形面积:s c s b s a s ))()((---,s=

)(2

1

c b a ++ 程序代码 ——————> 源程序中需修改的对应部分 main()

{ int a,b,c;

float s;

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

printf(“enter three datas ”\n ”); scanf(“%d%d%d”,a,b,c); area=sqrt(s-a)*(s-b)*(s-c)*s; s=1/2*(a+b+c);

printf(“a=%d,b=%d,c=%d\narea=%d ”,a,b,c,area); }

2, 编程求三角形面积:C ab s sin 2

1

=

,(C 的单位为度数,库函数中自变量单位为弧度数) (已知:a=5, b=3, C=30o )注意:1,表达式的正确书写格式,2,程序的设计方法,3,检查、核实程序的顺序的正确性

代码:

运行结果:

第六次上机作业 分支结构程序

实验目的:

1, 熟悉输入输出格式的使用

2, 掌握逻辑运算符的特殊运算规则

3, 了解简单的分支结构程序设计

4, 学会阅读程序的基本技巧(参考第七讲:分析程序运行过程) 上机内容:

1, 阅读下面程序,计算运行结果,然后上机验证。

Main()

{ int c,d,e; float a,b,t; a=3.6,b=-3.2; if(a>b) {

t=a; a=b;b=t; /* 思考该复合语句{ }的功能 */ }

printf(“\n%5.2f,%5.2f ”,a,b) c=1,d=1;

e=--c&&d--; /* 注意运算符的优先级和运算规则 */ printf(“\nc=%d,d=%d,e=%d ”,c,d,e); e=++d||c++;

pirntf(“\nc=%d,d=%d,e\%d ”,c,d,e); }

2, 程序填空,输入x 值,计算下面的函数值 ,并输出结果

??

?

??--=11312x x x

y 101011≥<≤

程序如下: #include"stdio.h" void main() { double x; int y;

scanf(________,&x); if(x<1) y=x;

else if(_________) y=2*x-1; else y=3*x-11;

printf("y=______ \n",y); }

3,编程求|x |

程序代码:

运行结果:

第七次上机作业 分支结构程序填空

实验目的:

1, 能灵活处理分支结构的条件,选择相应的分支语句作程序设计 2, 熟练掌握分支结构的程序设计

3, 能阅读程序,能根据问题说明,补充源程序中的相关内容。 4, 掌握动态测试技巧。 上机内容:

1, 程序填空

问题说明:输入三个正数,若能构成三角形的三边的边长,则求其面积,否则,输

出出错信息。

程序:

#include ”math.h ” main()

{ int a,b,c; float s,area;

pirntf(“enter three positive numbers a b c(a>0,b>0,c>0):\n ”); scanf(“%d%d%d ”,&a,&b,&c);

if(( _________ )&&( ________ )&&( _______ )) { s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*s-c)); ________________; } else

printf(“\nthree data a,b,c can ’t form a triangle\n ”);

}

2, 编程求一元二次方程2

ax +bx+c=0的根 根据不同的系数a,b,c 有以下的几种情况:

1, 2

a 0,

b -4ac>0≠时,方程有两不等实根x1,x2 2, 2a 0,b -4ac=0≠时,方程有两相等实根x1=x2 3, 2a 0,b -4ac<0≠时,方程有两共轭虚根x1,x2

4,a=0,b 0≠时,方程为bx +c=0, 根为x=-c/b; 5, a=0,b=0,c 0≠时,方程无解

时,方程有无穷解(x可为任意值)6,a=0,b=0,c0

源程序代码:

动态测试:数据准备,根据前面分析,应准备6组数据

第一组数据:第二组数据:

运行结果:运行结果:

第三组数据:第四组数据:

运行结果:运行结果:

第五组数据:第六组数据:

运行结果:运行结果:

第八次上机作业 循环结构程序设计(一)

实验目的:

1,掌握程序的基本设计方法(能分析具体问题的算法,输入输出,流程) 2,掌握while 循环的语义、语法和它的使用。(能根据流程写程序,根据程序写流程) 3,能正确阅读程序,根据问题说明把程序补充完整

上机内容:

1, 填空,使程序完整

问题说明: 输出所有水仙花数。(水仙花数是三位自然数,其各位数字的立方和

等于该数,例: 153=3

3

3

351++)

程序: main()

{ ______________;

I=100;

While(________) { x=I/100;

y=___________; z=I%10;

if(_____________) printf(“%d\n ”, I); I++;

} }

运行结果:___________________

2, 编程求解

问题:一个皮球从50米高处落下,每次反弹的高度为原高度的3

2

,求至少经过多少次反弹后,反弹的高度才小于1米? 提示:先弄清皮球的运动路线。

可设变量,下落高度h1,反弹高度h2,反弹次数n 。 每次的反弹高度等于下次的下落高度。

源程序代码 :

上机结果______________________

反弹高度为原来的1/4时,运行结果___________________-

第九次上机作业 循环结构程序设计(二)

实验目的:

1,掌握程序的基本设计方法(能分析具体问题的算法,输入输出,流程) 2,掌握for 循环的语义、语法和它的使用。(能根据流程写程序,根据程序写流程) 3,能正确阅读程序,了解程序的运行过程。根据问题说明把程序补充完整, 上机内容:

1) 已知以下程序是求某一分数序列的前20项的和: 1, 填空使程序完整

2, 写出该分数序列的前6项。(6个分数) 程序: main()

{ int a,b,c,I; _____ sum,s; a=3,b=2,s=(float)a/b; sum=2/1;

for(I=2;______;I++) { sum+=s; c=a+b; b=a; a=c;

s=(float)a/b; }

printf(“sum=%f ”,sum); }

2)编程

求:

∑∑==+10

1

2

201

n n n

n +8! 要求:用for 循环

源程序代码 :

上机结果______________________

第十次上机作业嵌套循环

实验目的:

1,掌握嵌套循环程序的基本设计方法(难度分解,化为单层循环)

2,掌握for循环,while循环的语义、语法和它的使用。(能根据流程写程序,根据程序写流程)

3,能正确阅读程序,了解程序的运行过程。根据问题说明把程序补充完整,

上机内容:

1,程序填空,

问题说明:求100到1000之间的所有素数和

程序:

main()

{ int I,j,sum=0;

for(I=101;I<=1000;______)

{ j=2;

while(__________)

{ if(I%j==0)break;

j++;

}

if(_______)sum+=I;

}

printf(“sum of primes of 100----1000 is %d\n”);

}

2,编程

求S n=a+aa+aaa+……+aa……a(该项有n个a)之值,其中a 为一个数字。例如:

2+22+222+2222+22222(此时n=5),n由键盘输入。

源程序代码:

上机结果______________________

第十一次上机作业一维数组

实验目的:

1,掌握一维数组的定义,赋值,使用。

2,能用一维数组这个新的数据结构简化原有程序。

3,根据问题说明,能正确阅读程序。

上机内容:

1,问题说明:求数列的前20项和:2/1, 3/2, 5/3, 8/5, 13/8, 21/13,…….

程序:

main()

{ int N=20;

int _________________;

float s;

_____________;

_____________;

for(I=1;I

{ a[I]=a[I-1]+b[I-1];

_______________;

}

s=0;

for(I=0;I

s+=_____a[I]/b[I];

printf(“sum=%f”,s);

}

运行结果:_____________________

N的值改为3时,运行结果:_____________________

2,编程:

按下列数据的原来顺序和它的相反顺序输出下列各数:1,2,3,4,5,6,7,8 (要求使用数组)

注意:数组的定义:数组元素的个数。数组的两种赋值方式。

数据类型的转换。

源程序代码:

上机结果______________________

第十二次上机作业数组(二)

实验目的:

1,熟练掌握一维数组,二维数组的正确使用。

2,熟悉字符串数组的用法。

3,能正确阅读程序,理解程序的含义。

4,能根据问题说明,观察其隐含的规律,把程序补充完整。

上机内容:

1,问题说明:按下列格式输出6行杨辉三角形

1

1 1

12 1

133 1

1464 1

15101051

要求:先根据已有条件猜测空的内容,再运行程序,再根据运行结果修改空的内容。直至符合要求。

程序:

#include”stdio.h”

main()

{ int y[7][7],n,m;

for(n=1;n<7;n++)

{ y[n][n]=1;

______=1; /* 第一列元素为1 */

}

for(n=3;n<7;n++)

for(m=2;m<=n-1;m++)

y[n][m]=___________;

for(n=1;n<7;n++)

{ for(m=1;m<=n;m++)

printf(“%4d”,y[n][m]);

____________;

}

}

2,编程,用冒泡法或选择法把一列数据排序后输出:23,145,65,73,12,74,91,5。要求先输出原数据,依次输出每一轮排序后的数据。

源程序代码:

上机结果:

______________________

3,难度题(可选):一个班的学生的学号与成绩如下,请按成绩从高分到低分输出。学生的学号与对应的成绩应同时输出。

学号:1,2,3,4,5,6,7,8,9,10,11

成绩:40,63,81,80,98,72,91,65,70,68,79

提示:最好用选择法排序;增加一数组放学号,排序交换位置时,同时交换学号数组与成绩数组的对应元素。

注:在上题的右边作适当修改

第十三次上机作业数组(二)

实验目的:

1,熟练掌握一维数组,二维数组的正确使用。

2,熟悉字符串数组的用法。

3,能正确阅读程序,理解程序的含义。

4,能根据问题说明,观察其隐含的规律,把程序补充完整。

5,能根据多次不同的输入与对应的输出结果,推算程序功能。

上机内容:

1,下列程序是求给定字符串的字符个数。

要求:不修改程序已写部分,在空缺部分把程序补充完整

程序一:

#include”stdio.h”

main()

{ char s[40];

int m=0;

printf(“Enter a string : \n”);

scanf(“%s”,s);

相关文档
最新文档