当前位置:文档之家› -C语言程序设计》实验指导书

-C语言程序设计》实验指导书

-C语言程序设计》实验指导书
-C语言程序设计》实验指导书

《C语言程序设计》实验指导书

课程编号:课程名称:C语言程序设计实验学时: 44

一、本实验课的性质、任务与目的

本实验课目的是使学生掌握C语言编程的常用方法,熟悉该语言中的语法、词法规则,为以后进行软件开发和学习后继专业课程打下基础。通过学习能够运用C语言中的各个知识点编写能完成一定功能的程序。训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,其重要程度决不亚于知识的传授。把高级语言的学习与程序设计、上机实践紧密地结合起来,以提高学生能灵活运用新的知识分析问题和解决问题的能力。

二、本实验课所依据的课程基本理论

本实验课基于C语言的语法和词法规则、数据的表示及算法的处理,而语法及算法正是高级语言程序设计的主要研究对象。《C语言程序设计》的主要任务是:C 语言是一种应用广泛结构化程序设计语言,本课程介绍C语言的基本概念、基本语法和编程方法,重点描述C语言的结构化的特征,并通过本课程的学习,使学生掌握一定的结构化程序设计的知识,以及用C语言编写程序的能力。

三、实验类型与要求

在做每个实验之前,让学生对本次实验相关的内容进行预习、算法设计、流程图的设计、编写程序,做好实验的准备工作;写出预习报告,画出流程图,要求独立完成。

说明:1、实验类型:设计性;

2、实验要求:必做。

四、每组人数与实验学时数

每组1人,实验学时数44学时。

五、考核方式与评分办法

实验总成绩=出勤情况*10%+实验报告*20%+平时*30%+实验表现*40%

六、本实验课配套教材或实验指导书

谭浩强. C程序设计. 北京:清华大学出版社,2006年3月第3版

谭浩强. C程序设计题解与上机指导. 北京:清华大学出版社,2006年3月第3版

谭浩强. C程序设计试题汇编. 北京:清华大学出版社,2006年3月第2版

夏宽理. C语言程序设计. 北京:中国铁道出版社,2006年2月第1版

夏宽理. C语言程序设计上机指导与习题解答. 北京:中国铁道出版社,2006年2月第1版

王士元. C高级实用程序设计. 北京:清华大学出版社,1996年1月第1版

七、实验报告要求

在机器上交作业,每次实验成绩分为优、良、及格、不及格,未参加的为0分。要求认真书写实验报告。

实验报告编写要求:

1.实验题目

2.实验要求

3.程序流程图

4.调试过程(实验过程出现的问题、解决的方法)

5.程序代码及运行结果。

八、实验内容

实验一:C语言运行环境的认识与简单的C程序

【目的与要求】

1、了解TC环境下C语言的运行环境,熟悉编译系统的操作环境。

2、了解在该系统上如何编辑、编译、连接和运行一个C程序。

3、通过运行简单的C程序,初步了解C源程序的特点。

4、掌握和理解C程序中最基本的C语句。

【实验内容】

1、题目:由键盘输入两个整数,计算并输出两个数之和。

2、程序如下:

#include “stdio.h”

void main()

{int a,b,sum;

printf(“Please input two integer numbers:\n”);

scanf(“%d%d”,&a,&b);

sum=a+b;

printf(“%d+%d=%d”,a,b,sum);

}

3、具体操作:

(1)输入程序,然后进行编译连接。若在编译中有词法或语法错误,则根据提示进行修改,再进行调试,直到没有语法错误。

(2)运行程序,依下列不同的方式输入数据,查看程序执行结果。

① 12_ 34 ↙

② 12 ↙

34 ↙

③ 1234 ↙

【实验分析与讨论】

1、总结C程序的基本结构和书写规则。

2、分析调试过程中常见的错误提示和解决策略。

实验二:C语言程序的单步调试

实验三:选择结构的程序设计

【目的与要求】

1、了解三种基本数据类型的定义。

2、掌握各种不同运算符及其对应的表达式的使用。

3、熟练掌握if语句和switch语句的使用

【实验内容】

一、判断方程ax2+bx+c=0有几个解,若有,则输出其解。

1、算法分析:

对于方程ax2+bx+c=0的解,存在以下情况:①a=0,不是一元二次方程;②b2-4ac=0,有两个相等的实根;③b2-4ac>0,有两个不等的实根;④b2-4ac<0,有两个共轭复根。

(1)定义变量:a,b,c,x1,x2,d

(2)输入a,b,c

(3)if(a==0) 不是一元二次方程 else d= b2-4ac

根据d的取值,输出方程根的情况:

if(b2-4ac==0) x1=x2=-b/(2*a)

else if(b2-4ac>0) x1=(-b+sqrt(d))/(2*a) x2=(-b-sqrt(d))/(2*a)

else x1=(-b+sqrt(-d)i)/(2*a) x2=(-b-sqrt(-d)i)/(2*a)

2、程序代码:

#include “stdio.h”

#include “math.h”

void main()

{float a,b,c,x1,x2,d;

printf(“请输入ax2+bx+c=0方程三系数值:”);

scanf(“%f%f%f”,&a,&b,&c);

if (abs(a)<=1e-6) //a==0

printf(“该方程非一元二次方程.\n”);

else

{d=sqr(b)-4*a*c;

if (abs(d)<=1e-6) // sqr(b)-4*a*c ==0

printf(“该方程的两个相等实根为:x1,x2=%4.2f”,-b/(2*a));

else if(abs(d)>1e-6)

{x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

printf(“该方程的两个不等实根为:x1=%4.2f,x2=%4.2f”,x1,x2);} else // sqr(b)-4*a*c<0

printf(“该方程的两个复数根为:

x1=%4.2f+%4.2fi,x2=%4.2f-%4.2fi” ,

-b/(2*a),sqrt(-d)/(2*a), -b/(2*a),sqrt(-d)/(2*a));

}

}

二、简单的菜单程序设计。

假设要求设计一菜单如下:

主菜单

1--------汉字

2--------拼音

3--------英文

1、算法分析:

(1)根据要求使用输出语句将上述菜单输出,提示按要求选择。

(2)运用if语句或switch语句,编写分支结构。

2、程序代码:

#include “stdio.h”

void main()

{int i;

printf(“\n\n\n========主菜单========\n”);

printf(“ (中国)”)

printf(“ 1------汉字\n”);

printf(“ 2------拼音\n”);

printf(“ 3------英文\n”);

printf(“请选择:”);

scanf(“%d”,&i);

switch(i)

{case 1:printf(“中国\n”);break;

case 2:printf(“ China\n”);break;

case 3:printf(“ Zhong guo\n”);break;

}

}

【课后练习】

1、判断一年份是不是闰年。

2、从键盘上输入1-7之间的数字,输出表示一个星期中对应某一天的英文单词。

【实验分析与讨论】

1、总结分支选择结构的设计方法与技巧。

2、掌握简单菜单的设计。

实验四:循环结构的程序设计

【目的与要求】

1、掌握三种循环语句在编程中的使用。

2、理解break语句和continue语句在循环结构中的不同作用。

3、了解循环的嵌套,学会穷举算法与迭代算法。

【实验内容】

一、输入两个正整数,求出它们的最大公约数与最小公倍数。

1、算法分析:

[辗转相除法]对于两个数m和n,将大数放在m中,小数放在n中,用n去除m,若余数为0,则n为最大公约数,否则将n作为m,余数作为n,再用n去除m,直到余数为0,则n为最大公约数。

2、程序代码:

#include “stdio.h”

#include “math.h”

void main()

{int m,n,t,max,min;

printf(“请输入两个正整数:”);

scanf(“%d%d”,&m,&n); min=m*n;

if (m

while(n!=0)

{t=m%n;m=n;n=t;}

printf(“最大公约数为:%d\n”,m);

printf(“最小公倍数为:%d\n”,min/m);

}

二、将一张100元钱,换成10元,20元,50元零钱,问有多少种不同的换法(假设三种零钱每种都可不出现)。

1、算法分析

运用穷举算法实现:考虑到三种零钱各种可以不出现,则各自的张数范围如下:

10元--------0张到 10张

20元--------0张到 5张

50元--------0张到 2张

并且要考虑到共数只有一张100元票子。

2、程序代码:

#include "stdio.h"

void main()

{int Tencount,Twecount,Fifcount,i=0;

for(Tencount=0;Tencount<=10;Tencount++)

for(Twecount=0;Twecount<=5;Twecount++)

for(Fifcount=0;Fifcount<=2;Fifcount++)

if (Tencount*10+Twecount*20+Fifcount*50==100)

printf("第%d种换法为:10元 %d张 20元 %d张 50元 %d张\n",

++i,Tencount,Twecount,Fifcount);

}

【课后练习】 *

1、求1—100之间,能被5整除的数之和。 * * *

2、判断任一个数是否是质数。 * * * * *

3、输出一有规则的图形,如右图。 * * *

*

【实验分析与讨论】

1、分析总结for语句,while语句,do-while语句的用法。

2、巧用break语句和continue语句。

实验五:数组及其应用

【目的与要求】

1、掌握一维数组与二维数组的使用。

2、掌握字符数组与字符串的区别与使用。

3、熟练掌握与数组有关的算法(选择排序与冒泡排序、查找与插入)。

【实验内容】

一、输入一个整数,将其插入一含有9个数的有序序列中,确保插入后其仍然有序,。

1、算法分析:①将待插入的数与序列中的每个数进行比较,找到其插入的具体位置i;

②将从第i个数组元素开始,一直到原数组中的最后一个元素,整体往后

移,空出一空间来存储待插入的整数。

2、程序代码:

#include "stdio.h"

void main()

{int a[10]={2,5,7,11,14,19,21,33,67},i,k,m;

printf(“原数组为:”);

for(i=0;i<9;i++) printf(“%4d”,a[i]);

printf(“\n请输入待插入的整数:”);

scanf(“%d”,&m);

for(i=0;i<9;i++)

if (m<=a[i]) break;//查找待插入的位置

for(k=9;k>=i;k--)

相关主题
文本预览
相关文档 最新文档