




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
概述
实验一熟悉C程序的开发环境
实验二
常量、变量及数据类型
实验三运算符与表达式
实验四基本输入、输出
实验五选择结构程序设计
实验六循环结构程序设计
实验七数组
实验八字符数组与字符串
实验九函数
实验十结构体与共用体
实验十一指针
实验十二文件管理
实验十三编译预处理
第三部分
上机实验指导概
述一、实验目的C语言程序设计课程上机实验的目的是让学生加深对课堂讲授内容的理解,培养、训练学生程序设计和程序调试的能力。在每个实验中,除了对程序设计提出要求之外,对程序的调试方法也提出具体的要求,这样就可以逐步培养学生分析、判断、改正错误的能力。“程序设计”是一门实践性很强的课程,必须十分重视实践环节,必须保证有足够的上机实验时间,最好能做到授课学时与实践学时之比为1∶1。除了教学所安排的上机时间以外,还应当提倡学生多上机实践。C语言程序设计课程上机实验的目的可以概括为如下几个方面。1.加深对讲授内容的理解课堂上要讲授许多关于C语言的语法规则,只记住这些语法规则是远远不够的。学习C语言,不仅要熟练掌握其语言本身的特点、语法规则等,而且更重要的是要掌握分析问题、解决问题的方法,即锻炼分析、分解及最终归纳整理出算法的能力。通过多次上机实践就能自然、熟练地理解和掌握。2.熟练使用集成开发环境程序的开发环境包括所用的计算机系统的硬件环境和软件环境。一个C语言源程序总是在一定的硬件和软件环境支持下运行的。读者必须了解所使用计算机系统的基本操作方法,了解在该系统上如何编辑、编译、连接和运行一个C语言程序。3.学会调试程序的一般方法在程序设计中,要求掌握如何编写程序并上机调试通过。因此,调试程序本身是程序设计课程一个重要的内容和基本要求。调试程序中,要善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。调试程序固然可以学习借鉴他人的经验,但主要还是要通过自己的直接实践来积累经验,而且有些经验是只可意会不可言传的,别人的经验不能代替自己的经验。调试程序的能力是每个程序设计人员应当具备的一项基本能力。C语言程序设计的学习必须灵活主动。也就是说,在做实验时千万不要在程序通过后就认为完成任务了,而应当在已通过的程序基础上做些改动,再进行编译、链接和运行。有时候还需要设计一些测试的数据来验证程序是否正确,这样的学习才会有真正的收获。二、实验要求上机实验一般经历上机前的准备(编程)、上机调试运行和实验后的总结三个步骤。1.上机实验前的准备工作在上机实验前应做好准备工作,以提高上机实验的效率。准备工作主要包括以下几个方面:(1)了解所用的计算机系统(包括C编译系统)的性能和使用方法。(2)复习与本实验有关的教学内容,掌握本章的主要知识点。(3)按任课教师的要求独立完成上机程序的编写。手写程序应整齐清晰,并进行人工检查。(4)对程序中有疑问且不能独立解决的地方,应做出标记,以便在上机时给予注意或求助于实验指导教师。(5)准备好运行、调试和测试所需的数据。(6)准备实验报告。2.上机实验的步骤及实验内容安排上机实验时应该一人一组,独立上机。一般上机实验的步骤如下:(1)启动操作系统。(2)进入C工作环境(例如:TurboC2.0、TurboC++3.0、VisualC++6.0或Win-TC集成环境)。(3)输入自己编好的程序代码。(4)人工检查一遍已输入的程序是否有错,发现有错,应及时改正。(5)进行编译和链接。如果在编译和链接过程中发现错误,屏幕上会出现“报错信息”,根据提示找到出错的位置和原因,并及时加以改正,然后再进行编译和链接。如此反复,直到顺利通过为止。(6)运行程序并分析运行结果是否合理和正确。在运行时要注意,当输入不同的数据时所得到的结果是否正确。(7)输出程序清单和运行结果。(8)对程序的运行过程进行记录和思考,并记载在实验报告上。实验内容的安排可根据习题量的多少和上机时间的长短,教师可以指定习题的全部或一部分作为上机实验题。本书共包括13个实验,每个实验对应于本书配套教材(《C语言程序设计》,柴世红主编,西安电子科技大学出版社2011年2月出版)中一个完整的知识内容,并包括多个备选的实验题目,题目设计由易到难、由浅入深,在每个完整的知识点后增加了实验思考题,使学生能更深刻地理解和掌握程序设计的算法和思想,在组织上机实验时可以根据条件做必要的调整,增加或减少某些部分的内容。学生应在实验前将教师指定的题目编好程序,然后上机输入和调试。有些题目的算法可能不止一种,学生应该尝试使用多种算法解决同一个问题,并比较不同算法的优劣。3.整理实验结果并写出实验报告实验结束后,要整理实验结果并进行认真分析和总结,根据教师要求写出实验报告。书写实验报告是整个实验过程的一个重要环节。通过写实验报告,可以对整个实验作一个总结,然后不断积累经验,提高程序设计和调试的能力。实验报告主要包含以下内容:(1)实验目的。实验的目的就是深入理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。因此,学生必须明确实验的目的。(2)实验内容。每个实验都安排了多个实验题目,学生事先必须作好准备,每个实验大约2学时做完,学生按照老师的要求完成指定的实验题目。(3)算法分析及主要语句说明。本书中实验的安排由易到难,对一些有难度的题目给出了算法分析和程序注释。在写实验报告时,对于书中未给出算法分析的题目,自己要给出算法分析及主要语句的说明。
(4)完整的程序清单。需提供完整、清晰的程序代码。(5)分析与思考。这部分的内容包括:调试过程中遇到的问题及解决办法;调试程序的心得与体会;对于最终未完成调试的题目,要认真找出错误并分析原因等。实验一熟悉C程序的开发环境
一、实验目的1.熟悉TurboC2.0集成开发环境。2.熟悉VisualC++ 6.0集成开发环境。3.熟悉Win-TC集成开发环境。4.通过运行简单的C程序,初步了解C源程序的结构。二、实验要求
1.实验前要认真预习本实验内容,明确本实验的目的和要求,熟悉实验内容和步骤。
2.实验中充分利用时间进行程序输入和调试工作,善于提出问题。
3.实验完成后要立即对实验过程进行总结,对于没有解决的问题要记载,要认真写好实验报告。
4.本实验要求2学时完成。三、实验内容和步骤题目1:在TurboC2.0集成开发环境中输入并运行下面的程序,这个程序的功能是在屏幕上输出一行信息。#include<stdio.h>#include<stdlib.h>main(){printf("Hello,World!\n");system("pause");}代码说明:·为了方便,对程序的每一行都加了一个行号,即每一行最前面的编号,表示此行代码所在的行数,在实际程序编写过程中不需要写出来。·第01行,编译预处理命令,包含标准输入输出头文件stdio.h,因为第05行用到了格式化输出函数printf()。·第02行,编译预处理命令,包含标准库函数头文件stdlib.h,因为第06行用到了系统函数system("pause"),用来暂停以查看屏幕,并不是完成题目要求要必须用到的语句。另外还可用getch()函数来暂停以查看屏幕,用getch()函数时包含头文件conio.h。TurboC2.0作为在DOS和Windows操作系统上学习C语言程序设计的练习平台,具有操作简单、界面清晰的特点,是C程序设计语言初学者较常用的平台。TurboC2.0对计算机的要求低,并且编译、链接的速度快,对于程序练习和一般的程序开发都很合适。它的缺点就是不支持鼠标操作,也不能同时编辑多个文件,而且不能使用汉字。下面是TurboC2.0中C程序的编写步骤:(1)进入TurboC2.0集成开发环境:打开“我的电脑”,进入TurboC2.0所在的根目录C盘(或其他盘),找到TC(或TurboC2)文件夹,双击进入此文件夹,再找到TC.EXE,双击打开如图3-1所示的界面。可以看到,这个界面从上到下分成四个区域。最上面一行是TurboC2.0的主菜单,每个菜单项的首字母大写并红色显示,按“Alt+红色字母”就可以打开相应的下拉菜单。主菜单下面比较大的区域就是源程序编辑区,编好的源程序就要输到这个区域。源程序编辑区下面是信息窗口,显示编译或链接时的信息。信息窗口下面是参考行,给出了一些操作提示信息。图3-1TurboC2.0集成开发环境界面(2)新建文件:按快捷键“Alt+F”,弹出“File”下拉菜单,选中“New”命令,按回车键,新建文件完成,如图3-2所示。图3-2新建文件(3)输入源程序:从光标所在处开始输入源程序,如图3-3所示。图3-3在编辑区输入源程序(4)保存源程序:按键盘上快捷键“Alt+F”,弹出“File”下拉菜单,用方向键选中“Writeto”命令,按回车键,此时弹出重命名对话框,对源程序文件进行重命名(包括路径)。学生可以先在D盘(或E盘)下新建一个以自己的学号或自己名字的拼音命名的文件夹,然后将源程序保存在这个文件夹里。例如输入“E:\2010\hello.C”,按回车键,如图3-4所示。图3-4保存源程序(5)编译、链接、执行源程序:按快捷键“Ctrl+F9”或执行“Run”菜单下的“Run”命令,如图3-5所示。图3-5编译、链接、执行源程序(6)查看结果:如果没有编译或链接错误,将出现如图3-6所示的运行结果;如果有错误,则会在消息框给出错误提示信息。图3-6运行结果按任意键将返回源程序编辑界面,若要再次查看结果,可按快捷键“Alt+F5”或执行“Run”菜单下的“Userscreen”命令。【注意】如果实验的上机环境是TurboC2.0集成开发环境,学生在以后的实验中可以将自己编写的程序放在一个专门的文件夹里,以便于集中管理和查看。可以按照以下步骤进行操作:①在D盘创建一个以自己的学号命名的文件夹,例如D:\20100001。②然后在这个文件夹中创建TC.EXE的快捷方式。③用记事本编辑C语言源程序,并保存成*.C的文件(例如1-1.C),如图3-7所示。图3-7TC快捷方式和记事本编辑的源程序④用鼠标左键将1-1.C的文件拖曳至TC.EXE快捷方式,即可打开TurboC2.0集成开发环境,如图3-8所示。其余操作方法与前面介绍的相同。图3-8将记事本编辑的源程序拖曳至TC快捷方式⑤如果要将相应的可执行文件和目标文件都放在D:\20100001中,可以进行如下设置:按快捷键“Alt+O”,打开“Options”菜单,用方向键选中“Directories”,按回车键;接下来选中“Outputdirectory”,按回车键,在弹出的设置框里输入“D:\20100001”,按回车键,最后退出菜单。这样就把.EXE和.OBJ文件的存放目录设置成了D:\20100001,如图3-9所示。图3-9设置输出文件的路径⑥按快捷键“Ctrl+F9”执行程序,正确无误之后关闭TurboC2.0集成开发环境。此时可以在D:\20100001看到生成的1-1.EXE和1-1.OBJ,如图3-10所示。图3-10执行程序后在输出目录生成的 .EXE和 .OBJ文件⑦如果实验的上机环境是TurboC2.0集成开发环境,以后的实验都可以按照以上步骤去做。题目2:在VisualC++ 6.0集成开发环境中输入并运行下面的程序,这个程序的功能是计算12345+5432,并在屏幕上输出。
#include<stdio.h>
main()
{
printf("\n12345+5432=%d\n",12345+5432);
}VisualC++ 6.0是Windows操作系统上主流的可视化C语言集成开发环境,具有使用方便、编程快速的特点,可以使用汉字,有相当多的程序员使用它,是大多数人认为最好的C语言开发环境。同时,全国计算机等级考试二级C语言的上级考试环境就是VisualC++ 6.0。下面介绍VisualC++ 6.0中C程序的编写步骤:(1)进入VisualC++ 6.0集成开发环境:依次点击“开始菜单→所有程序→MicrosoftVisualC++6.0→MicrosoftVisualC++6.0”,打开如图3-11所示的界面。图3-11VisualC++ 6.0集成开发环境界面(2)创建工作空间:执行“File”→“New”命令;在“New”对话框中,切换到“Workspaces”选项卡;输入工作空间名(WorkspacesName)和保存位置(Location);然后单击“OK”按钮。如图3-12所示。不管开发几个程序,一般每个人只需一个工作空间(当然也可以每个程序一个),主要用于把个人的源码及其相关资源集中在一起,以方便管理。图3-12创建工作空间窗口(3)新建一空白工程:一个工程(或项目),一般是一套软件的源程序及其资源的集合。执行“File”→“New”命令;在“New”对话框中,切换到“Projects”选项卡;选中“Win32ConsoleAppliaction”(Win32控制台应用程序)和“Addtocurrentworkspace”(添加到当前的工作空间),输入工程名Projectname和保存位置Location;工程名Projectname一般要取与程序功能相关的名称,如图3-13所示。然后单击“OK”按钮,弹出如图3-14所示的窗口,单击“Anemptyproject”选项,创建一个空白工程,单击“Finish”按钮,出现新工程信息窗口,如图3-15所示,最后单击“OK”按钮,空白工程创建完成。图3-13设置工程名称窗口图3-14选择空白工程窗口图3-15新工程信息窗口(4)添加、编辑、保存C源程序文件:执行“File”→“New”命令;在“New”对话框中,切换到“Files”选项卡;选中“C++SourceFile”或者“TextFile”,输入文件名(扩展名必须为 .c),如图3-16所示,然后单击“OK”按钮。在编辑窗口,输入源程序,并保存,如图3-17所示。图3-16输入源程序名对话框图3-17保存源程序对话框(5)编译、链接、执行源程序:执行“Build”→“Execute”命令,或单击“ExecuteProgram”图标,或按快捷键“Ctrl+F5”,都会弹出如图3-18所示的对话框。然后单击“是”按钮,查看结果。图3-18编译、链接、执行源程序对话框(6)查看结果:如果没有编译或链接错误,将出现如图3-19所示的运行结果;如果有错误,则会在消息框给出错误提示信息。图3-19运行结果(7)退出VC++6.0环境。方法如同一般Windows窗口的退出。题目3:在Win-TC集成开发环境中输入并运行下面的程序,这个程序的功能是在屏幕上输出星号组成的图案。01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
printf("*\n");06
printf("***\n");07
printf("*****\n");08
printf("*******\n");09
getch();10
}代码说明:
·第01行,编译预处理命令,包含标准输入输出头文件stdio.h,因为第06行用到了格式化输出函数printf()。
·第02行,编译预处理命令,包含头文件conio.h,因为第10行用到了getch()函数来暂停以查看屏幕。
·第05行到第08行,直接用格式化输出函数printf()打印出星号图案。Win-TC集成开发环境是TurboC2.0编译外壳程序,该软件的特点就是在Windows下编辑TC源程序,能够充分利用Windows的支持剪贴板和中文的优点。与本书配套的《教材》中所有示例程序均是通过Win-TC集成开发环境调试通过。下面是Win-TC集成开发环境中C程序编写的步骤:(1)进入Win-TC集成开发环境:依次点击“开始菜单→所有程序→Win-TC→Win-TC”,打开如图3-20所示的窗口,然后单击“知道了”按钮,打开Win-TC界面,如图3-21所示。图3-20操作系统检测警告窗口图3-21Win-TC集成开发环境界面图3-20的窗口给出了一个规范的C语言源程序的范例。main()函数的返回值类型可以定义为int型,程序可以给操作系统返回一个整数值。所以,一般不要将main()函数的返回值类型写成void类型。在Win-Tc环境中编写程序,源程序末尾必须要加getch()或者system("pause")函数才能够看到屏幕输出的结果。而在前面介绍的TurboC2.0环境或VisualC++6.0环境中都可以不加getch()或者system("pause")函数。在TurboC2.0环境中可以用快捷键“Alt+F5”来查看屏幕。(2)新建文件:执行“文件”→“新建”命令,如图3-22所示。图3-22新建文件窗口(3)输入源程序:从光标所在处开始输入源程序,如图3-23所示。图3-23在编辑区输入源程序窗口输入源程序时,每一行代码前都有自动生成的行号。编辑时还可以使用复制、粘贴操作,所以会加快程序编辑的速度。编辑菜单下有编辑配置命令,可以设置编辑时的一些属性,例如“颜色和字体设置”等。(4)保存源程序:执行“文件”→“保存文件”命令,如图3-24所示。在“另存为”对话框中选择合适的路径并输入文件名,点击“保存”按钮。图3-24保存源程序对话框(5)编译、链接、执行源程序:按快捷键“Ctrl+F9”或执行“运行”菜单下的“编译链接并运行”命令,如图3-25所示。图3-25编译、链接、执行源程序对话框(6)查看结果:如果没有编译或链接错误,将出现如图3-26所示的运行结果;如果有错误,则会在消息框给出错误提示信息。(7)按任意键将返回源程序编辑界面。图3-26运行结果四、实验思考题1.如何用记事本编辑源程序,然后在TurboC2.0集成开发环境中被调用?2.简述C语言源程序的结构。实验二常量、变量及数据类型
一、实验目的1.掌握C语言的数据类型,熟悉整型、字符型、实型数据的常量表示。2.掌握如何定义一个整型、字符型、实型变量,以及对它们赋值的方法。3.了解数据的溢出错误和舍入误差。4.进一步熟悉C程序的编辑、编译、链接和运行的过程。二、实验要求1.实验前复习常量、变量、数据类型的基本概念以及常量、变量的表示方法。2.认真预习本实验内容。3.本实验要求2学时完成。三、实验内容和步骤题目1:输入并运行下面的程序。(1)定义两个整型变量并初始化,同时将其相加之和显示出来。01
#include<stdio.h>02
#include<stdlib.h>03
04
main()05
{06
intx=10,y=100,z;0708
z=x+y;09
printf("z=%d",z);1011
system("pause");12
}步骤:打开TurboC2.0环境,新建文件,输入源程序,按快捷键“Ctrl+F9”运行程序并查看结果。(2)从键盘输入一个整数,并将其值加1,然后显示出来。01
#include<stdio.h>0
2#include<stdlib.h>
0304
main()05
{
06
intx;
07
08
scanf("%d",&x);
09
++x;
10
printf("%d",x);
11
12
system("pause");13
}步骤:打开TurboC2.0环境,新建文件,输入源程序,按快捷键“Ctrl+F9”运行程序并查看结果。步骤:打开TurboC2.0环境,新建文件,输入源程序,按快捷键“Ctrl+F9”运行程序并查看结果。题目2:上机调试下列程序,分析出运行结果,并与上机运行结果作对比。
01
#include<stdio.h>
02
#include<stdlib.h>
03
04
main()
05
{
06
floatx=45.982;
07
08
printf("x=%f\n",x);
09
10
system("pause");
11
}题目3:字符数据的输出,分析出运行结果,并与上机运行结果作对比。
01
#include<stdio.h>
02
#include<stdlib.h>
03
04
main()
05
{
06
charc='A';
07
08
printf("c=%c\n",c);
09
printf("c=%d\n",c);
10
11
system("pause");
12
}题目4:上机调试下列程序,分析出运行结果,并与上机运行结果作对比。
01
#include<stdio.h>
02
#include<stdlib.h>
0304
main()05
{06
intx=32767,y=-32768;
07
08
printf("x=%d\n",x);
09
printf("x+1=%d\n",x+1);
10
printf("y=%d\n",y);
11
printf("y-1=%d\n",y-1);
12
13
system("pause");
14
}题目5:用sizeof运算符求出本编译系统中各种数据类型所占内存字节数,分析出运行结果,并与上机运行结果作对比。01
#include<stdio.h>02
#include<stdlib.h>
0304
main()05
{
06
printf("sizeof(int)=%d\n",sizeof(int));
07
printf("sizeof(short)=%d\n",sizeof(short));
08
printf("sizeof(long)=%d\n",sizeof(long));
09
printf("sizeof(float)=%d\n",sizeof(float));
10
printf("sizeof(double)=%d\n",sizeof(double));
11
printf("sizeof(char)=%d\n",sizeof(char));
12
13
system("pause");
14
}四、实验思考题1.为什么C语言中的每个数据都要属于一个特定的类型?2.使用计算机编写程序时如何选择合适的数据类型?3.计算机中表示的数是连续的吗?4.实型数据存储时为什么会有误差?实验三运算符与表达式
一、实验目的
1.掌握C语言算术、赋值、自增、自减运算符及相应表达式。
2.掌握C语言关系、逻辑运算符及相应表达式。
3.掌握不同类型数据之间的赋值规律。
4.了解强制数据类型转换以及运算符的优先级、结合性。
5.学会根据表达式编写相应程序,验证表达式结果的方法。二、实验要求1.实验前复习各种运算符的作用以及表达式的值的类型。2.认真预习本实验内容。3.本实验要求2学时完成。三、实验内容和步骤题目1:已知:a=5,b=6,x=8.7,y=3.4(a,b整型,x,y浮点),计算算术表达式(float)(a+b)/2+(int)x%(int)y的值。试编程上机验证。①先判断结果值类型,可设置一个此类型的变量用于记录表达式结果,本例用s存放结果;②程序先给几个变量赋初值,然后将表达式赋值给变量s;③最后打印变量s的值就是表达式的值。
01
#include<stdio.h>
02
main()
03
{
04
inta=5,b=6;
05
floatx=8.7,y=3.4;
06
doubles;
07
s=(float)(a+b)/2+(int)x%(int)y;
08
printf("(float)(a+b)/2+(int)x%%(int)y=%f\n",s);
09
getch();
10
}题目2:已知:a=10,x=8.3,y=5.9(a整型,x,y浮点),计算算术表达式x+a%3*(int)(x+y)%2/4的值。试编程上机验证。01
#include<stdio.h>02
main()03
{04
inta=10;05
floatx=8.3,y=5.9;06
doubles;07
s=x+a%3*(int)(x+y)%2/4;08
printf("x+a%%3*(int)(x+y)%%2/4=%f\n",s);09
getch();
10
}题目3:自增、自减运算符练习。分析下面程序结果,并上机验证。01
#include<stdio.h>02
main()03
{
04
inta=5,b=6;
05
floatx=8.7,y=3.4;
06
printf("%d\t%d\n",++a,b+a++);
07
printf("%f\t%f\n",--y,x+y--);08
}题目4:赋值表达式练习。分析下面程序结果,并上机验证。01
#include<stdio.h>02
main()03
{04
inta,b;05
floatx,y;06
x=y=b=a=3;07
a+=a;08
y-=2;09
b*=2+3;10
x/=x+x;11
a%=(b%=2);12
a+=a-=a*=a;
13
printf("%d\t%d\n",a,b);
14
printf("%f\t%f\n",x,y);15}题目5:关系表达式练习。编程判断两个分数12/345678999与34/567899999哪个大?01
#include<stdio.h>02
main()03
{04
doublex,y;05
x=12./345678999;06
y=34./567899999;07
printf("(x>y)==%d\n",x>y);08
}题目6:问号表达式练习。分析下面程序结果,并上机验证。01
#include<stdio.h>02
main()03
{04
inta=5,b=6;05
floatx=8.7,y=3.4;06
printf("x<y?x:a<b?a:b=%f\n",x<y?x:a<b?a:b);07
}题目7:逻辑表达式练习。分析下面程序结果,并上机验证。
01
#include<stdio.h>
02
main()
03
{
04
charc; /*定义字符变量c*/
05
printf("pleaseinputacharacter\n");/*输出信息*/
06
scanf("%c",&c); /*从键盘输入字符*/
07
c=(c>='a'&&c<='z')?(c-32):c;/*条件运算符使用*/
08
printf("%c\n",c); /*输出结果*/
09
}题目8:逗号表达式练习。分析下面程序结果,并上机验证。01
#include<stdio.h>02
main()03
{04
inta,b,c,d;05
a=2,b=3,c=4;06
d=a,printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);07
}四、实验思考题1.总结赋值转换原则。2.什么是自动转换和强制转换?实验四基本输入、输出
一、实验目的
1.掌握格式输入函数scanf()函数输入各种类型数据的方法。
2.掌握格式输出函数printf()函数输出各种类型数据的方法。
3.掌握字符输入、输出函数getchar()和putchar()的使用方法。
4.理解C语言程序的顺序结构。二、实验要求
1.实验前复习基本输入、输出函数的用法。
2.认真预习本实验内容。
3.本实验要求2学时完成。三、实验内容和步骤题目1:用下面的scanf()函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'。请问在键盘上如何输入?正确输入各数据后,请给出运行结果。01
#include<stdio.h>02
#include<stdlib.h>0304
main()05
{06
inta,b;07
floatx,y;08
charc1,c2;09
10
scanf("a=%d
b=%d",&a,&b);
11
scanf("%f
%e",&x,&y);
12
scanf("%c
%c",&c1,&c2);
13
printf("a=%d,b=%d,x=%f,",a,b,x);
14
printf("y=%f,c1=%c,c2=%c\n",y,c1,c2);
15
16
system("pause");
17
}思考:如果第三个scanf()函数双引号里面去掉空格字符,写成:scanf("%c%c",&c1,&c2);按以上的内容输入,输出将如何变化?题目2:编写程序,在屏幕上输出下列字符串。Hello,world!f:\test\a.txtShesays:"IliketheCprogramminglanguage!"参考程序如下:01#include<stdio.h>02#include<stdlib.h>
0304main()05
{06
printf("Hello,world!\n");07
printf("f:\\test\\a.txt\n");08
printf("Shesays:\"IliketheCprogramminglanguage!\"\n");0910
system("pause");11
}题目3:字符数据的输入、输出。从键盘输入一个英文小写字母,然后输出对应的大写字母。试着完成下面的程序,并查看运行结果是否正确。
01
#include<stdio.h>
02
#include<stdlib.h>
03
04
main()
05
{
06
charc;07
08
printf("Pleaseinputaalphabet:\n");
09
【1】=getchar();
10
putchar(【2】);
11
putchar('\n');
12
13
system("pause");
14
}题目4:(《教材》例4-8的程序)输入一名学生的学号(7位数字)、生日(年-月-日)、性别(M:男;F:女)及三门功课(语文、数学、英语)的成绩,现要求计算该学生的总分和平均分,并将该学生的全部信息输出(包括总分、平均分)。输入、输出的形式如图3-27所示。图3-27题目4运行结果题目5:已知三角形三边长分别为8,9,10,求此三角形的面积。要求:程序填空并写出运行结果。01
#include<stdio.h>02
#include<stdlib.h>03
#include<【1】>
0405
main()06
{07
inta=8,b=9,c=10;08
doubles,aera;0910
s=(a+b+c)/【2】;11
aera=sqrt(s*(【3】)*(【4】)*(【5】));12
printf("Theaeraofthistriagleis:%.3f\n",【6】);13
putchar('\n');1415
system("pause");16
}四、实验思考题1.用scanf()接收多个数值型数据时,有哪些分隔数据项的方法?2.用scanf()如何正确输入多个字符型数据,有哪些方法?3.用scanf()如何正确接收多个字符串数据,有哪些方法?4.如果字符串中有空格,能否用scanf()函数输入?实验五选择结构程序设计
一、实验目的1.了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。2.学会正确使用逻辑运算符和逻辑表达式,熟练掌握if语句和switch语句。3.结合程序掌握一些简单的算法。二、实验要求1.做实验前复习关系表达式、逻辑表达式和if语句、switch语句。2.认真预习本实验内容。3.本实验要求4学时完成。三、实验内容和步骤题目1:将下列由程序流程图(见图3-28)描述的算法,转换为C源代码,然后输入计算机并运行。图3-28程序流程图题目2:输入一个整数,打印出它是奇数还是偶数。要求:程序填空,上机运行并写出运行结果。参考程序如下:
01
#include<stdio.h>
02
#include<conio.h>
03
main()
04
{
05
inta;
06
rintf(“\nPleaseinputainteger:\n”);
07
scanf("%d",【1】);08
if(【2】)09
printf("Itisanoddnumber.\n");10
else11
printf("Itisanevennumber.\n");12
getch();13
}题目3:计算如下分段函数值:
具体要求如下:①
用if语句实现分支。自变量x与函数值均用单精度类型。
②
自变量x用scanf()函数输入,且输入前要有提示。结果的输出采用以下形式:x=具体值,f(x)=具体值③
程序填空,上机运行并分别输入x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0,运行该程序,并写出运行结果。01
#include<stdio.h>02
#include<conio.h>03
main()04
{
05
floatx,y;06
printf("\nPleaseinputfloatx:\n");07
scanf("%f",【1】);08
if(【2】)09
y=x*x+x-6;10
elseif(【3】)11
y=x*x-5*x+6;12
else13
y=x*x-x-1;14
printf("\nx=%g,f(x)=%g\n",x,y);15
getch();16
}题目4:输入一个年份,判断是不是闰年。闰年的条件有两个:①能被4整除,但不能被100整除;②能被400整除。要求:程序填空并写出运行结果。参考程序如下:01
#include<stdio.h>02
#include<conio.h>03
main()04
{
05
intyear;06
printf("\nPleaseinputayear:\n");07
scanf("%d",【1】);08
if(year%4==0&&year%100!=0||【2】==0)09
printf("%disleap\n\n",
【3】);10
else11
printf("%disnotleap\n\n",【4】);12
getch();13
}
题目5:由键盘输入3个整数,判断以此3个数为边长的三角形属于什么类型(不等边、等腰、等边或不能构成三角形)。要求:程序填空,并写出运行结果。参考程序如下:01
#include<stdio.h>02
#include<conio.h>
0304main()05{06
inta,b,c;07
printf("\nPleaseinputa,b,c:\n");08
scanf("%d%d%d",
【1】);09
if(【2】)10
if(【3】)11
printf(“Itisanequillateraltriangle.\n”);/*输出是等边三角形*/12
elseif(【4】)13
printf(“Itisanisoscelestriangle.\n”);/*输出是等腰三角形*/14
else15printf("Itisascalenetriangle.\n");/*输出是不等边三角形*/16
else17printf("Itisnottriangle!\n");/*输出不是三角形*/1819getch();20}题目6:根据百分制分数决定成绩等级如下:①80分(含)以上为A级。②70分(含)以上且80分以下为B级。③60分(含)以上且70分以下为C级。④60分以下为D级。用多分支语句if-elseif和switch两种方法编写程序,输入一个百分制分数,输出相应的等级。要求:程序填空,并写出运行结果。方法一:
01
#include<stdio.h>
02
#include<conio.h>
03
main()
04
{
05
floatscore;
06
charrank;
07
printf("\nPleaseinputascore:\n");
08
scanf("%f",【1】);
09
if(【2】)
10
{11
printf("Inputerror!\n");/*输入错误*/12
getch();13
exit(0);/*结束程序*/14
}15
elseif(【3】)16
rank='A';17
elseif(【4】)18
rank='B';19
elseif(【5】)20rank='C';21
else22
rank='D';23
printf("%gisrank%c.\n",score,rank);24
getch();25
}方法二:
01
#include<stdio.h>
02
#include<conio.h>
03
main()
04
{
05
floatscore;intx;
06
charrank;
07
printf("\nPleaseinputascore:\n");
08
scanf("%f",【1】);
09
x=(int)score/10;10
if(score>100)11x=11;12
switch(x)13
{14case10:15case9:16case8:rank=【2】;break;17case7:rank=【3】;break;18case6:rank=【4】;break;19case5:20case4:21case3:22case2:23case1:24case0:rank=【5】;break;25default:printf("Inputerror!\n"); /*输入错误*/26getch();27exit(0); /*结束程序*/28}29printf("%gisrank%c.\n",score,rank);30getch();31}题目7:由键盘输入3个整数,按降序打印这3个数。请编写程序并上机调试。
四、实验思考题如何判断一个数n能否被3和5整除。实验六循环结构程序设计
一、实验目的
1.掌握在设计条件型循环结构时,如何正确地设定循环条件。
2.掌握如何正确地控制计数型循环结构的循环次数。
3.练习并掌握选择结构与循环结构的嵌套、多重循环的应用。
4.掌握在程序设计中用循环的方法实现一些常用算法,加强调试程序的能力。二、实验要求1.复习while、do-while、for语句和continue、break语句。2.能够用流程图表示实验题目的算法。3.能够独立调试运行实验题目。4.本实验要求4学时完成。三、实验内容和步骤题目1:分别用while循环和for循环计算:
1 + 2 + 3 + … + 100 = ?要求:写出程序并上机查看运行结果。题目2:输入一行字符,分别统计出其中大小写英文字母、空格、数字和其他字母的个数。要求:程序填空,并写出两组运行结果。01
#include<stdio.h>02
#include<conio.h>03
#include<ctype.h>04
main()05
{06
charc; 07
intletter=0,capital=0,lower=0,space=0,digital=0,other=0;08
printf("\ninputalinecharacter:\n");09
while((c=getchar())!='\n')10
{11
if(【1】) /*统计大小写字母的个数*/12{13letter++;14if(【2】)15lower++; /*统计小写字母的个数*/16}17elseif(【3】)18space++; /*统计空格的个数*/19elseif(【4】)20digital++; /*统计数字的个数*/21else22other++; /*统计其他字符的个数*/23}24capital=letter-lower;25printf("Letter:%d(Capital:%dLowercase: %d)\n",letter,capital,lower);26
printf("Spaces:%d\nDigital:%d\nOther:
%d\n",space,digital,other);27
getch();28
}
题目3:求两个正整数的最大公约数和最小公倍数。分析:求两个正整数的最大公约数采用辗转相除法:①输入正整数m和n,保证m不小于n。②如果n≠0,则求r=m%n,然后m=n,n=r;重复此操作直到n=0。③如果n=0,则此时m就是最大公约数,而最小公倍数是这两数之积除以这两个数的最大公约数得到的商。要求:程序填空,并写出两组运行结果。01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
intm,n,r,a;06
printf("\nInput2positiveinteger:\n");07
scanf("%d%d",【1】);08
a=【2】;09
if(m<n)10
{11
m=m+n;12n=m-n;13m=m-n;14
}15
while(n!=0)16
{17
r=【3】;18
m=n;19
n=r;20
}21
printf(“Thelargestdivisoris:%d\n”,【4】);/*输出最大公约数*/22
printf(“Thesmallestcommonmultipleis:%d\n”,a/m);/*输出最小公倍数*/23getch();24}题目4:在屏幕上打印出下三角的乘法表,如图3-29所示。试着完成下面的程序,并查看运行结果是否正确。图3-29乘法表01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
inti,j;06
for(i=1;i<=9;i++)07
{08
for(j=1;【1】;j++)09
printf("%d*%d=%-4d",i,j,【2】);10
printf("\n");11
}12
getch();13
}题目5:在屏幕上打印出1000以内的素数,每行打印10个,并统计个数。要求:程序填空,并写出运行结果。01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
inti,j,prime,s=0;06
for(i=2;【1】;i++)07
{08prime=1;09for(j=2;j<=i-1;j++)10{11if(【2】)12{13prime=0;14break;15}16}17if(【3】)18{19printf("%6d",i);20s++;21if(【4】)22printf("\n");23}24}25printf("\nThesumofprimeis:%d",s);26getch();27}题目6:打印出如图3-30所示的图案。要求:程序填空,并写出运行结果。图3-30*号图案01
#include<stdio.h>02
#include<conio.h>03
main()
04
{05
inti,j;06
charspace='
';07
for(i=0;i<=3;i++)08
{
09
for(j=1;【1】;j++)10printf("%c",space);11for(j=1;j<=3;j++)12printf("*");13for(j=1;【2】;j++)14printf("%c",space);15for(j=1;j<=3;j++)16printf("*");17【3】;18
}19
}题目7:编程把下列数列延长到第50项:1、2、5、10、21、42、85、170、341、682、…屏幕输出时要求格式对齐。要求:上机运行,并写出运行结果。01
#include<stdio.h>02
#include<conio.h>03/*奇数项 = 前一偶数项 × 2 + 1,偶数项 = 前一奇数项 × 2*/04main()05{06inti;07
doubleresult;08
result=0;09
for(i=1;i<=50;i++)10
{11
if(i%2==1)12result=result*2+1;13else14result=result*2;15
printf("%-15.0f",result);16if(i%5==0)17printf("\n");18}19}四、实验思考题1.求解1000以内的完数。如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,例如:6的因子为1,2,3,且1 + 2 + 3 = 6,因此6是一个“完数”。计算并输出1000以内的所有“完数”之和,输出形式为:完数1 + 完数2 + … = 和值。2.计算分数序列:
前20项之和。3.在嵌套循环结构中如何提高编写程序的效率?4.如何避免死循环?实验七数
组
一、实验目的1.掌握数组的定义及初始化的规则。2.掌握C语言数组的基本用法。3.练习并掌握常用的排序算法。4.练习并掌握和数组有关的其他简单算法。二、实验要求1.实验前复习数组的定义以及数组元素的引用方法。2.能够用程序流程图来描述实验题目的算法。3.本实验要求4学时完成。三、实验内容和步骤题目1:阅读下面的程序,写出运行结果并说出程序的功能,然后上机验证。01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
inti,f[10];06
f[0]=f[1]=1;07
for(i=2;i<10;i++)08
f[i]=f[i-1]+f[i-2];09
puts("\n");10
for(i=0;i<10;i++)
11
{12printf("%6d",f[i]);13if((i+1)%5==0)14puts("\n");15
}16getch();17
}题目2:从键盘上任意输入10个整数,按从小到大的顺序显示在屏幕上。以下采用选择法排序。要求:程序填空,并写出运行结果。01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
inti,j,a[10],p;60
printf("\nPleaseinput10integer:\n");70
for(i=0;i<10;i++)08
scanf("%d",【1】);09
printf("Beforesortint:\n");10
for(i=0;i<10;i++)11
{12
printf("%6d",a[i]);13
}14
for(i=0;i<10-1;i++)15
{16
p=i;17
for(j=i+1;j<10;j++)18if(【2】)19p=j;20if(p!=i)21{22a[p]=a[p]+a[i];23a[i]=a[p]-a[i];24a[p]=a[p]-a[i];25}26
}27
printf("\nAftersortint:\n");28
for(i=0;i<10;i++)29
{30
printf("%6d",【3】);31
}32printf("\n");33getch();34}题目3:将数列1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,1,5,10,10,5,1,…延长到第55项。运行下面的程序,并查看运行结果是否正确。(提示:以上数列由杨辉三角构成,本题要求给出杨辉三角的前10行,杨辉三角的前10行即有55个数。将杨辉三角存储在二维数组中,如图3-31所示,分析杨辉三角的形成规律及存储规律,完成程序编码上机调试。)图3-31杨辉三角的存储01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
inti,j,a[10][10],p=0;06
for(i=0;i<10;i++)07
for(j=0;j<=i;j++)08{09if(j==0||j==i)10a[i][j]=1;11else12a[i][j]=a[i-1][j]+a[i-1][j-1];13printf("%6d",a[i][j]);14if(++p%10==0)15printf("\n");16}17printf("\n");18getch();19}题目4:请编程计算图3-32给出的矩阵周边元素之和。要求:编写程序,输出并记录结果。图3-32矩阵题目5:用筛选法求100以内的素数。筛选法求素数的基本思路是:判断100以内的每一个数,逐个找出非素数并把它去除,使得最后剩下的全是素数。具体算法:①先去掉1。②用2、3、4、…、100作为除数,去除该数以后所有的数,把该数的倍数标注为0,表示该数已从数组中去除。③循环结束,数组中不为0的数即为100之内的素数。要求:上机运行并写出运行结果。01
#include<stdio.h>02
#include<conio.h>03
04
main()05
{06
inti,j,a[100];07
for(i=2;i<100;i++)08
{09a[i]=i;10
}
1112
for(i=2;i<100;i++)13for(j=i+1;j<100;j++)14if(a[i]!=0&&a[j]!=0&&a[j]%a[i]==0)15a[j]=0;
1617j=1;18for(i=2;i<100;i++)19
if(a[i]!=0)20{21printf("%4d",a[i]);22if(j++%5==0)23printf("\n");24}25
26getch();27}四、实验思考题
1.题目2中的10个数据如何能够随机生成?
2.请将题目2中数据采用冒泡法排序思想编程。并说明冒泡法和选择法的排序区别。
3.如何将题目3的结果输出成图3-31所示的下三角形式?实验八字符数组与字符串
一、实验目的
1.掌握字符数组的定义、初始化、数组元素的引用以及输入、输出。
2.理解字符串的概念。
3.练习并掌握字符数组的处理方法。
4.掌握常用字符串处理函数。
5.掌握字符串的排序方法。二、实验要求
1.实验前复习C语言中字符串的表示方法。
2.能用程序流程图来描述实验题目的算法。
3.本实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南城建职业技术学院《贵州民族民间文学》2023-2024学年第二学期期末试卷
- 陕西中医药大学《第二外语(二)(法)》2023-2024学年第二学期期末试卷
- 锦州医科大学医疗学院《外国文学史二》2023-2024学年第一学期期末试卷
- 上海民远职业技术学院《食品加工与保藏原理》2023-2024学年第一学期期末试卷
- 宿州学院《InternationalFinanicalManagement》2023-2024学年第二学期期末试卷
- 同济大学浙江学院《音乐商务项目策划(二)》2023-2024学年第一学期期末试卷
- 安徽中医药大学《丝绸之路与一带一路》2023-2024学年第一学期期末试卷
- 浙江省慈溪市六校2024-2025学年高三语文试题4月适应性考试试题含解析
- 遂宁市蓬溪县2025年数学三下期末复习检测模拟试题含解析
- 招商银行客户分级管理
- 倪海厦天纪学习笔记以及讲义
- 第三章-思想政治教育的地位和功能
- 冷冻机组项目工程设备及管道安装施工方案
- 光明乳业财务报表分析报告
- 电梯日常维护与保养作业指导书
- 全自动六面钻铣加工中心使用手册
- 非酒精性脂肪肝的中医药治疗
- 《土木工程概论》全套教学课件
- 物流无人机垂直起降场选址与建设规范
- GB/T 44191-2024政务服务便民热线知识库建设指南
- 2024江苏中考英语二轮复习 微专题 动词填空(针对词汇运用、短文填空)(课件)
评论
0/150
提交评论