C语言是近年来国内外得到迅速推广使用的一种高级编程语言。目前,高等院校普遍开设了C语言的课程,学习C语言成为广大计算机应用人员和编程人员的迫切要求。
本书是宋海民、贾学斌主编的《C语言程序设计基础》的配套实训教材。书中C语言程序设计实训和二级C语言等级考试辅导编排次序与教材的章节次序相同,方便读者学完一章后巩固练习。本书以《C语言程序设计基础》为理论基础,以C语言程序设计上机实训与全国计算机等级考试二级C语言程序设计考试辅导为主要目的,结合了相关教学大纲,注重实践、编程、开发能力及应试能力的培养。
本书具有如下特色。
1. 考虑学习特点,突出易学性
充分考虑到初学者学习C语言的特点,本书按照循序渐进、难点分散的原则组织内容。通过图示和表格来讲解VC++ 6.0集成开发环境的使用方法。
2. 注重基础内容,突出实用性
C语言博大精深。在上机实训的内容摘要里精选了对初学者最基本、最重要、最实用的内容进行介绍,不刻意追求所谓的全面和详尽。对于较生僻的内容,也从概念讲解入手进行简单介绍,以保证C语言知识体系的完整性。本书力求做到内容新颖、实用,逻辑性强,完整性好,且又突出重点。
3. 强化编程思想,突出应用性
全书始终强化编程思想,通过实例及实际编程,有意识地不断强化,给读者以潜移默化的影响。由于程序设计语言是实践性很强的课程,因此,实训内容给出13个实训项目,57个编程题目,读者通过多次上机实践,可以尽快掌握C语言的编程方法并提高实践动手的能力。为了提高读者的编程水平,本书还提供了70个经典编程习题。
4. 加强考试辅导,突出针对性
为了满足读者参加二级C语言等级考试的需要,本书有针对性地给出了等级考试辅导,并精心编写了笔试及上机模拟试题各四套。本书共包括5章及4个附录。主要章节包括: 第1章VC++ 6.0集成开发环境;第2章C语言程序设计上机实训;第3章C语言程序编程训练;第4章二级C语言等级考试辅导;第5章二级C语言等级考试模拟试题精选;附录A全国计算机等级考试二级C语言程序设计考试大纲(2013年版);附录B全国计算机等级考试二级公共基础知识考试大纲(2013年版);附录C全国计算机等级考试二级C语言应试技巧;附录D实训报告书写参考格式。
本书介绍的知识和程序具有通用性,基本可以适用于任何计算机系统和C语言版本,但是要注意,不同的C语言版本是有一些差别的。书中的实训和习题全部在VC++ 6.0集成开发环境上调试通过。
本书适合作为高职高专相关专业的实训课程教材,也可供读者自学使用。
本书由武汉职业技术学院宋海民、贾学斌主编,第1章由贾学斌编写,第2章至第5章由宋海民编写,附录由陈觎编写。同时,许多教师对本书的出版给予了大力的支持,本书在编写过程中得到了周桂枝教师、张伟教师的帮助,在此一并表示感谢。
感谢所有使用本书的师生,虽然在本书的编写过程中,作者已尽了最大努力,但书中不足之处在所难免,恳请读者批评指正。
编者
2017年4月
第3章C语言程序编程训练 Chapter 3本章提供70个经典【习题】以及程序源代码供读者参考学习。
【习题1】用号输出字母C的图案。
(1) 程序分析: 可先用号在纸上写出字母C,再分行输出。
(2) 程序源代码如下: #include
void main()
{
printf("Hello C-world!\\n");
printf(" \\n");
printf(" \\n");
printf(" \\n");
printf(" \\n");
}【习题2】输入3个整数x、y、z,请把这3个数由小到大输出。
(1) 程序分析: 把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
(2) 程序源代码如下: #include
void main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /交换x,y的值/
if(x>z)
{t=z;z=x;x=t;} /交换x,z的值/
if(y>z)
{t=y;y=z;z=t;} /交换z,y的值/
printf("small to big: %d %d %d\\n",x,y,z);
}【习题3】请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母,当所按字母为y时结束。
(1) 程序分析: 用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
〖2〗〖3〗〖4〗(2) 程序源代码如下: #include
#include
void main()
{
char letter;
printf("please input the first letter of someday\\n");
while ((letter=getch())!='y')/当所按字母为y时才结束/
{
switch (letter)
{
case 's':printf("please input second letter\\n");
if((letter=getch())=='a')
printf("saturday\\n");
else if((letter=getch())=='u')
printf("sunday\\n");
else printf("data error\\n");
break;
case 'f':printf("friday\\n");break;
case 'm':printf("monday\\n");break;
case 't':printf("please input second letter\\n");
if((letter=getch())=='u')
printf("tuesday\\n");
else if ((letter=getch())=='h')
printf("thursday\\n");
else printf("data error\\n");
break;
case 'w':printf("wednesday\\n");break;
default: printf("data error\\n");
}
}
}【习题4】输入某年某月某日,判断这一天是这一年的第几天。
(1) 程序分析: 以3月5日为例,应该先把前两个月的加起来,再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
(2) 程序源代码如下: #include
void main()
{
int day,month,year,sum,leap;
printf("\\nplease input year,month,day\\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month) /先计算某月以前月份的总天数/
……