C语言程序设计实训指导书.docx

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

C语言程序设计实训指导书.docx

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

C语言程序设计实训指导书.docx

C语言程序设计实训指导书

 

C语言程序设计实训指导书

(内部使用)

主讲教师编写

前言

C语言是一种编程灵活、特色鲜明的程序设计语言,是计算机专业学生的基础课程,学好这种语言可以为后续的面向对象的语言打好坚实的基础,C语言除了学习必须的基本知识:

如概念、方法和语法规则之外,更重要的是进行实训,以提高学习者的动手和编程能力,这才是学习语言的最终目的,结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计实训指导书》,以在实训过程中给学生提供帮助。

本书分为三个部分:

实训总要求、实训模块和项目拓展实例。

第一部分为实训总要求,目的是为了让学生编写规范的代码,从开始程序设计就进行规范练习,为以后工作打下良好的基础。

第二部分为实训模块,有三个:

(1)基础部分,为随堂实训,在分析案例的基础上,使学生掌握该部分内容的知识要点,并能灵活运行在实训中,为使学生目标明确,在实训开始给学生提出实训目的及要求;

(2)深化部分,为综合实训,为提高学生的学习积极性,同时为培养软件开发的合作精神,在随堂实训完成的基础上,给学生设计相对该内容综合运用的实例,组织学生进行分组讨论,把每组的讨论结果同大家分享,由学生和老师共同给出评价,该方法可以丰富学生解决问题的方法,拓宽思路;(3)课程设计,为期末的课程设计,是对整个内容的一个综合设计,可以使学生从软件开发的角度开始思考问题、解决问题,形式仍然为分组设计,各小组设定项目经理、技术经理和成员,一般为5人一组,由项目经理组织人员、进行分工和协调工作,技术经理负责开发过程中遇到的疑难问题的解决,并进行开发的全程控制。

第三部分为案例拓展实例:

学生成绩管理系统。

通过该实例从一个简单的顺序结构实例,根据内容逐步进行扩充,由小到大,由浅入深,使设计的功能越来越完善,完成了分支结构、循环结构、数组、函数、指针、结构体和文件内容的应用,最后成为一个完整的设计。

本书具有基础性、实用性和系统性,可以指导学生按照从浅入深,从低到高的训练过程,逐步提高他们的编程和动手能力。

编者

2007年10月

 

实训要求及说明

C语言程序设计的实训是学生重要的实习环节。

上机实训不仅要求学生掌握C语言程序设计的基本知识,更重要的是培养学生掌握程序设计开发的基本素质、思维方法和技能,为学生综合素质的培养打下坚实基础。

实训的形式为教师制定出难易适中的设计题目,学生通过分组讨论进行设计,实训重点放在程序设计开发的全过程上。

一、总要求

根据所选题目首先进行年算法分析,根据实现的功能进行数据分析,设计相应的数据结构,同时为贯彻“程序设计=算法+数据结构”的思想,要求学生在课下完成流程图的设计,然后根据流程图写出实训代码。

二、代码书写要求

为保证开发团队的协作和后期修改能有效进行,使学生遵照统一的排版风格、注释标准、命名规则及编码诸原则进行C语言编程,特提出以下规范要求。

缩进:

1)程序块要采用缩进风格编写,缩进以4个空格(Space)键为单位,不使用"TAB键"。

2)函数体、结构体、循环体以及分支结构中的语句行都须采用缩进风格。

3)所有的if、while、for、do结构中的语句即使只有一行也须用括号括起来。

3)if、while、for、do语句单独占一行,左、右花括号也各占一行且不缩进。

例:

if(superHero==theTick)

{

printl("Spoon!

");

}

间隔:

所有的标识符都必须被空白字符包围。

例如:

inttheTick=5;

if(theTick==5)

空行:

代码段之间须以一个空行进行间隔;

空格的位置:

1)在一个关键字和左括号“(”之间。

注意:

不要在函数名和左括号之间加空格;

2)在参数列表的每个逗号“,”之后;

3)二元操作符前后。

注意:

一元操作符前后都不加空格。

例如:

inta=10;a=a+1;a++;

4)for语句的每个表达式之间。

例如:

for(inti=0;i<20;i++)…。

代码行:

1)不允许把多个短语句写在一行中,即一行只写一条语句;

2)长语句、参数、表达式(超过80个ASCII字符)应分行书写,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。

示例:

#001perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN

#002    + STAT_SIZE_PER_FRAM ;

#003act_task_table[STAT_TASK_CHECK_NUMBER + index].occupied

#004    = stat_poi[index].occupied;

命名规则:

所有的标识符只能用字母(A-Z或a-z)和数字(0-9)。

不得包含货币符号或其它非AS-CII字符。

1)变量的命名应尽可能采用有意义的名词,力求可顾名思义。

2)可以采用一个单词或多个单词的缩写作为名字,缩写单词的每个字母都要大写。

3)对于难以使用英文的情况,可以参考相关行业标准,比如使用国标。

4)采用约定俗成的习惯用法。

常见的习惯用法:

循环变量:

i、j、k、m、n

长度:

length

数量:

count

位置:

pos或position

下标或索引:

i或index

设置/获取:

set/get

大小:

size

注释:

1)为确保程序易读性,注释语句不得小于全部代码行的30%。

2)说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:

版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。

3)源文件头部应进行注释,列出:

版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。

4)函数头部应进行注释,列出:

函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、表)等。

5)边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。

不再有用的注释要删除。

6)注释的内容要清楚、明了,含义准确,防止注释二义性。

7)避免在注释中使用缩写,特别是非常用缩写。

8)注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。

9)对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。

变量、常量、宏的注释应放在其上方相邻位置或右方。

10)数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。

对结构中的每个域的注释放在此域的右方。

11)全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。

12)注释与所描述内容进行同样的缩排。

13)将注释与其上面的代码用空行隔开。

14)对变量的定义和分支语句(条件分支、循环语句等)必须编写注释。

15)对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释。

三、编码原则

1)注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。

2)避免使用不易理解的数字,用有意义的标识来替代。

涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。

3)去掉没必要的公共变量。

4)仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。

5)明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。

6)当向公共变量传递数据时,要十分小心,防止赋予不合理的值或越界等现象发生。

7)防止局部变量与公共变量同名。

8)严禁使用未经初始化的变量。

9)对所调用函数的错误返回码要仔细、全面地处理。

10)明确函数功能,精确(而不是近似)地实现函数设计。

 

模块一:

基础部分

第一部分c语言的基本认识

[实训目的及要求]通过本次实训内容,使学生对C语言程序有一个简单的认识,熟悉VC++6.0的运行环境,掌握C程序的执行方法,了解程序的结构和输出函数等。

程序1:

#include“stdio.h”

main()

{

printf(“各位同学好!

很高兴和大家一起学习C语言!

\n");

}

运行结果:

各位同学好!

很高兴和大家一起学习C语言!

其中,#include“stdio.h”为一编译预处理命令,含义是文件包含,“stdio.h”是一头文件,标准输入和输出头文件,用来控制数据的输入或输出。

main是主函数的函数名,表示这是一个主函数。

每一个C源程序都必须有,且只能有一个主函数(main函数)。

printf的功能是把要输出的内容送到显示器去显示,本质上也是一个函数,是一个由系统定义的标准函数。

程序2:

#include“stdio.h”

main()

{

printf(“$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n”);

printf(“*ThisisaCprogram*\n");

printf(“$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n”);

}

运行结果:

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

*ThisisaCprogram*

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

程序3:

任给一半径,输出圆的周长.

#include/*include称为文件包含命令*/

#include/*扩展名为.h的文件称为头文件*/

main()

{

intr,l;/*定义两个整数变量r和l*/

printf("inputr:

\n");/*输出提示信息*/

scanf(“%d”,&r);/*接收数据给变量r*/

l=2*3.14*r;/*进行数学运算把面积赋值给变量s*/

printf(“circleof%dis%d\n",r,l);/*输出变量r,l的值*/

}

实训题目

1、编一个小程序实现在屏幕上输出以下内容:

*********************************

*学生成绩管理系统*

*********************************

2、根据刚才的例题编写程序,通过键盘输入一个三角形的三边长,求三角形的面积(求一个非负数算术平方根的函数为sqrt(x))。

第二部分c程序分析

[实训目的及要求]通过本次实训内容,使学生对C语言程序有一个系统的认识,并在此基础上掌握三种基本数据类型、部分运算符号和常用函数的应用,体现在自己动手编写的小程序中。

程序1:

求三个整数的和。

#include“stdio.h”/*文件包含命令*/

main()/*主函数*/

{floatf1,f2,f3,s;/*定义四个实型变量*/

printf(“inputthreefloats:

”)/*显示提示信息*/

scanf(“%f%f%f”,&f1,&f2,&f3);/*接收三个整型变量*/

s=f1+f2+f3;/*求三个变量之和,存入变量s*/

printf(“sumoff1,f2,f3is%.2f”,s);/*输出求出的和*/

}

运行结果:

inputthreefloats:

345

sumoff1,f2,f3is6.00

程序2:

把输入的大写字母转换为小写字母。

#include“stdio.h”/*文件包含命令*/

main()/*主函数*/

{charch1,ch2;/*定义两个字符型变量*/

printf(“inputanupperletter:

”)/*显示提示信息*/

scanf(“%c”,&ch1);/*接收一个大写字母*/

ch2=ch1+32;/*把大写字母转换为小写字母*/

printf(“lowerofletter%cis%c”,ch1,ch2);/*输出*/

}

运行结果:

inputanupperletter:

S

lowerofletterSiss

程序3:

求一个四位整数的各个数据位。

#include“stdio.h”/*文件包含命令*/

main()/*主函数*/

{intnum,bit1,bit2,bit3,bit4;/*定义四个实型变量*/

printf(“inputanumber:

”)/*显示提示信息*/

scanf(“%d”,&num);/*接收一个整型数据*/

bit1=num%10;/*求个位数字*/

bit2=num/10%10;/*求十位数字*/

bit3=num/100%10;/*求百位数字*/

bit4=num/1000;/*求千位数字*/

printf(“%d个位:

%d,十位:

%d,百位:

%d,千位:

%d”,num,bit1,bit2,bit3,bit4);/*输出整数和各数据位*/

}

运行结果:

inputanumber:

2345

2345个位:

5,十位:

4,百位:

3,千位:

2

程序4:

交换两个变量的值。

#include“stdio.h”

main()

{inta,b,t;

printf(“inputtwonumbers:

”)

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

printf(“a=%d,b=%d”,a,b);/*输出交换之前变量的值*/

t=a;a=b;b=t;/*交换处理*/

printf(“a=%d,b=%d”,a,b);/*输出交换之后变量的值*/

}

运行结果:

inputtwonumbers:

3456

a=34,b=56

a=56,c=34

程序5:

求一元二次方程的根。

#include“stdio.h”

#include“math.h”/*数学函数的头文件*/

main()

{

floata,b,c,disc,x1,x2,p,q;

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

disc=b*b-4*a*c;

p=-b/(2*a);

q=sqrt(disc)/(2*a);

x1=p+q;

x2=p-q;

printf(“x1=%5.2f;x2=%5.2f\n”,x1,x2);

}

运行结果:

a=1,b=5,c=3

x1=-0.70;x2=-4.30

实训题目

1、编程求两个实数之差,保留两位小数。

2、编程把小写字母转换为大写字母。

3、编程把一个三位数倒序输出,如输入是123,输出为321。

 

第三部分结构化程序设计与算法认识

(分支结构程序设计)

[实训目的及要求]通过本次实训,掌握if语句的使用和switch多分支选择结构的实现,并能熟练的进行应用。

程序1、任意输入一个年份,判断是否是闰年。

闰年的条件是符合下面条件之一:

(1)能被4整除,但不能被100整除;

(2)能被4整除,又能被400整除。

算法思路:

(1)输入年份(如:

2007);

(2)判断是否为闰年;

判断闰年的表达式:

条件一:

能被4整除:

year%4==0

不能被100整除:

year%100!

=0

组合:

(year%4==0&&year%100!

=0)

条件二:

能被4整除:

year%4==0

能被400整除:

year%400==0

组合:

(year%4==0&&year%400==0)

总条件式:

(year%4==0&&year%100!

=0)||(year%4==0&&year%400==0)

可改写为:

((year%4==0)&&(year%100!

=0))||(year%400==0)

(3)若是,输出“2007是闰年”信息;若不是,则输出“2007不是闰年”。

#include“stdio.h”

main()

{intyear;

printf(“请输入年份:

”);

scanf(“%d”,&year);

if((year%4==0)&&(year%100!

=0))||(year%400==0)

printf(“%d是闰年\n”,year);

elseprintf(“%d不是闰年\n”,year);

}

程序2、输入三角形的三边长,求三角形的面积。

算法思路:

(1)通过键盘输入三边长的值a,b,c;

(2)判断是否构成三角形;

条件式:

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

(3)若能构成,计算三角形的面积并输出;若不能构成则输出错误提示信息。

#include“stdio.h”

#include“math.h”

main()

{floata,b,c,l,s;

printf(“请输入三角形的三个边长:

”);

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

if((a+b>c)&&(b+c>a)&&(a+c>b))

{l=(a+b+c)/2;

s=sqrt(l*(l-a)*(l-b)*(l-c))

printf(“面积S=%.2f”,s);

}

elseprintf(“构不成三角形!

\n”);

}

程序3、任意输入一个成绩,给出评语:

90-100:

优秀;80-89:

良好;60-79:

及格;0-59:

不及格。

算法思路:

(1)输入一个成绩数,存入变量score;

(2)判断score在哪个分数段中;

(3)根据所在分数段输出对应的评语。

#include“stdio.h”

main()

{

intscore;

printf(“inputyourscore:

”);

scanf(“%d”,&score);

if(score>100||score<0)printf(“inputerror.\n”);

elseif(score>=90)printf(“优秀.\n”);

elseif(score>=80)printf(“良好.\n”);

elseif(score>=60)printf(“及格.\n”);

elseprintf(“不及格.\n”);

}

实训题目

1、用if语句实现菜单功能。

*************************************

*1---成绩输入*

*2—成绩插入*

*3---成绩查询*

*   4---成绩排序*

*5---成绩删除*

*6---成绩输出*

*0---退出*

*************************************

请输入你的选择(0---6):

2、任意输入三个数据按从大到小的顺序输出。

3、编程实现:

读入两个整型数据及一个运算符(+-*/),计算表达式的值。

4、用switch语句实现菜单功能。

5、用switch语句编程实现:

读入两个整型数据及一个运算符(+-*/),计算表达式的值。

6、用switch开关语句实现猜词游戏。

 

第三部分结构化程序设计与算法认识

(C循环结构程序设计)

[实训目的及要求]通过本次实训,掌握循环语句for、while和do-while的使用和break和continue的功能,并能熟练的进行应用。

程序1、编程求1+2+3+···+100的和。

算法思路:

1、用变量sum作为累加器,存放和;

2、用变量i表示累加变量,分别存放1,2,3,…,100;

3、当i≤100时,执行sum=sum+i;(等价于sum+=i;);

4、当i的值超过100的时候,不再执行sum=sum+i;输出sum的值。

方法一(while结构)

#include“stdio.h”

main()

{

intsum=0,i=1;/*变量初始化*/

while(i<=100)

{

sum=sum+i;

i++;

}

printf("sumis%d\n",sum);

}

方法二(do-while结构)

#include“stdio.h”

main()

{

intsum=0,i=0;

do

{

sum=sum+i;

i++;

}while(i<=100)

printf("sumis%d\n",sum);

}

方法三(for结构)

#include“stdio.h”

{

inti,sum=0;

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

sum=sum+i;

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

}

程序2、求1到100之间的奇数之和,偶数之积。

思路:

1、用变量sum存放奇数之和,用变量mul存放和;

2、用变量i表示累加变量,分别存放1,2,3,…,100;

3、当i≤100时,若i是奇数执行sum=sum+i;

是偶数执行mul=mul*i;

4、当i的值超过100的时候,不再执行求和和求积操作;输出sum和mul的值。

方法一(while结构)

#include“stdio.h”

main()

{doublemul=1;/*双精度类型*/

inti=1,sum=0;

while(i<=100)

{

if(i%2!

=0)sum=sum+i;

elsemul=mul*i;

i++;

}

printf("sum=%d\n",sum);

printf(“mul=%e\n”,mul);/*科学计数法输出*/

}

方法二(for结构)

#include“stdio.h”

main()

{

inti,sum=0;

doublemul=1;

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

if(i%2==1)sum=sum+i;

elsemul=mul*i;

printf(“sum=%d,mul=%e\n”,sum,mul);

}

程序3、把输入的一行字符原样输出,若是大写字母需要转换成小写的。

思路:

1、通过键盘接收一个字符;

2、判断该字符是否为回车符;是转第4步,不是转到第3步;

3、判断接收的字符是否为大写字母,是转换为小写字母并输出,不是则直接输出,程序转回到第1步;

4、程序结束。

#include“stdio.h”

main()

{

charch;

while((ch=getchar())!

=‘\n’)

{

if(ch>=‘A’&&ch<=‘Z’)

ch=ch+32;

putchar

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

当前位置:首页 > 农林牧渔 > 畜牧兽医

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

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