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

上传人:沈*** 文档编号:120364720 上传时间:2022-07-17 格式:DOC 页数:27 大小:561.50KB
收藏 版权申诉 举报 下载
C语言程序设计实验指导书_第1页
第1页 / 共27页
C语言程序设计实验指导书_第2页
第2页 / 共27页
C语言程序设计实验指导书_第3页
第3页 / 共27页
资源描述:

《C语言程序设计实验指导书》由会员分享,可在线阅读,更多相关《C语言程序设计实验指导书(27页珍藏版)》请在装配图网上搜索。

1、实验一 输入/输出函数(简单程序设计)(4学时)一、实验目的和要求1掌握C语言程序的上机调试过程。2熟悉一种C语言程序开发环境(以Microsoft Visual C+ 6.0为例)。3了解C语言程序的基本结构。4了解几种算术类型所允许的操作种类和运算规则。5掌握scanf、printf、getchar、putchar等输入/输出函数的使用方法和函数中几种数据的输出格式控制。6了解变量的命名规则。7了解赋值运算符的意义和正确用法。8了解变量的地址和指针的概念。9掌握格式数据类型和之间转换,自增和自减运算。10独立编程并调试通过。二、实验前准备1 复习Microsoft Visual C+ 6.

2、0开发环境的使用方法。2 复习教材相关内容。3 写出程序清单。三、实验条件局域网环境,每人一台计算机,Microsoft Visual C+ 6.0软件。四、实验内容和步骤1熟悉Microsoft Visual C+ 6.0开发环境Microsoft Visual C+简介Microsoft Visual C+,(简称Visual C+、MSVC、VC+或VC)是微软公司的C+开发工具,具有集成开发环境,可支持基于C语言,C+ 以及C+/CLI等编程语言的软件开发;特别是整合了微软视窗操作系统的应用程序设计接口(Windows API)、三维动画DirectX API、Microsoft MF

3、C类库及Microsoft .NET框架等。当前最新的版本是Microsoft Visual C+ 2010。根据本课程上机实验环节的情况,并结合当前全国计算机等级考试机试对开发环境的要求,针对Microsoft Visual C+ 6.0(以下简称VC6.0)开发环境下的控制台应用做简要介绍。创建一个新的 C 语言的工程(1)启动 Microsoft Visual C+ 6.0启动VC6.0可以通过“开始”菜单,也可以通过桌面快捷方式等方式。图1.1 VC6.0开发环境启动之后,我们看到的是空白的VC6.0开发环境截图如图1.1所示。跟大多数的 Windows 应用程序一样,VC6.0最上面

4、是菜单,然后是工具栏,中央是工作区,最下面一行是状态栏。我们现在看到的工作区,左边是 Workspace 窗口,右边是灰底的空白窗口。(2)创建一个工程 在VC6.0中,一个源程序文件必须属于一个工程(Project);所以我们首先来创建一个工程,做如下操作。选择菜单:文件 新建.打开下面窗口如下图1.2所示。图1.2创建工程界面在 Projects Tab页面(也称Projects标签页)中,我们看到可以创建许多种类型的工程,并且可以指定工程的名字和存储位置。如果要开发简单的 C 语言程序应用,只需要创建一种工程:Win32 Console Application,也就是 Windows 3

5、2位控制台程序(也称“黑屏”程序)。需按顺序进行如下设置,如下表1.1所示。表1.1 Windows 32位控制台程序创建中的设置顺序选项操作说明1工程类型选择“Win32 Console Application”2位置输入:“E:TEST”作为例子,我们暂且把该演示程序保存在E盘根目录下面的 TEST 文件夹中。当然您可以按照你的需要任意选择保存位置。如果该文件夹不存在,您需要首先创建它。该选项不需要手工输入,您可以单击在“位置”右下方的 “.” 按钮,来选择该文件夹。注意:虽然上面的截屏上显示的是 “E:Testmyproject”,但那是完成了第 3 步之后的结果。在这一步,只需要输入“

6、E:TEST”。3工程名称输入:“myproject”随着工程名称的输入,位置部分将在原来路径的后面自动加入工程名称。4完成点击“确定”按钮(3)修改新工程的配置 作为 Win32 Console Application 类型的程序,只有一个配置界面,如下图1.3所示。如果选择其他类型的应用程序,可能会有多个配置界面。图1.3Win32控制台应用程序配置界面在这里选择第一个选项,也就是默认选项:一个空的工程 然后选择完成。点击:完成按钮。 这个选项将创建一个空的工程,VC6.0不会自动生成源代码文件,建议选择默认选项。若选择其它选项,VC6.0将自动生成一些源代码文件。(4)确认创建新工程 如

7、下图1.4窗口显示出之前所做的配置,以供最后检查。如果确认无误,该项目将被创建。 图1.4新项目信息窗口确认该页面显示的内容都是正确的后,点击:确定 按钮,创建该项目。 (5)创建新工程完毕 VC6.0会根据所填写的配置创建相关的文件夹,创建完成后会显示创建的结果,如下图1.5所示。 图1.5项目创建后VC6.0界面在窗口的左半部分的Workspace上,我们可以看到有两个,ClassView 和FileView。ClassView页面会显示当前工程中所声明的类、全局变量等;对于编写C语言程序来说,这个页面没有什么大的作用。页面显示了当前项目中的所有文件。以下对图中相关内容进行说明。 工程在上

8、面的截图1.5中显示,VC6.0创建了一个名为“myproject”的工程,可在窗口界面标题栏中看到。在Workspace的FileView标签页的左边树型结构中的“myproject files”节点代表了该工程。 文件和逻辑文件夹在该树型结构工程节点下面有三个预定义的逻辑文件夹,分别是:“Source Files”、“Header Files”、“Resource Files”。在每一个文件夹下面,都没有文件;这是因为此前选择的是创建一个空的工程。这三个文件夹是 VC6.0预先定义的,就编写课程设计的C应用程序而言,至少需要使用 Source Files和Header Files两个文件夹

9、。 事实上这三个文件夹是按照里面所存放的文件类型来定义的,如下表1.2所示:表1.2预定义文件夹包含的文件类型预定义文件夹包含的文件类型Source Filescpp;c;cxx;rc;def;r;odl;idl;hpj;batHeader Filesh;hpp;hxx;hm;inlResource Filesico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe之所以称这三个文件夹为逻辑文件夹,是因为他们只是在工程的配置文件中定义的,在磁盘上并没有物理地存在这三个文件夹。在项目开发过程中也可以删除不使用的逻辑文件夹;或者根据项目的需要创建新的逻辑文件

10、夹,来组织工程文件。 Workspace 工作空间 在创建 ConsoleEX项目的同时,VC6.0也创建了一个叫做“myproject”的工作空间,并且该工作空间只包含一个工程。如节点“Workspace myproject : 1 project(s)”所示,需要了解下面几点。 VC6.0是按照 Workspace 来管理项目和代码的。一次必须打开一个 Workspace。 一个 Workspace 中可以包含一个或者多个工程。 一个工程可以包含一个或者多个逻辑文件夹。 一个文件夹里面可以包含零个或者多个文件。 一个工程至少包含一个源代码文件。 当创建新工程的时候,一个同名的 Worksp

11、ace 同时被创建;该 workspace 只包含一个项目,就是新创建的这个项目。 或者说,VC 在管理项目和代码的时候,是按照如下一个树型的结构来组织的。Workspace Project 1 (项目 1) o Heaer files (一个或者多个头文件) o Source files (一个或者多个源代码文件) o Other files (一个或者多个其他文件) Project 2 (项目 2) o Heaer files (一个或者多个头文件) o Source files (一个或者多个源代码文件) o Other files (一个或者多个其他文件) (6)查看物理文件夹 打开

12、Windows 资源管理器,定位到 E:Test myproject目录,我们可以看到VC6.0为项目所创建的文件和文件夹,如下图1.6所示。图1.6资源管理器中的项目文件夹这些文件和文件夹的简单说明如下表1.3所示。表1.3项目文件和文件夹的简单说明文件和文件夹说明文件myproject.dsw这是 Workspace 描述文件。文件myproject.dsp这是myproject项目配置文件。包括逻辑文件夹在内的关于该项目的所有配置,都保存在此文件中。文件myproject.ncb这是 VC 内部使用的一个临时文件。我们不必关心此文件。文件夹DebugDebug 版本的编译输出文件将被保存

13、在该文件夹中。如果项目的编译属性修改为 Release 之后,会生成另外一个叫做 Release 的文件夹。关于Debug和Release,这是两个最常见的编译选项。相同源代码生成的Debug版本的.exe文件比Release版本要大一些,因为Debug版本多包含了一些帮助VC6.0调试程序的符号等信息。 添加一个文件到一个空的工程中上一节中创建了一个空的工程,本节将添加一个源代码程序到该工程中。 (1)创建新的.C源文件选择新建.C的源文件,操作如下。选择菜单:文件 - 新建. 打开下面窗口,如下图2.1所示。图2.1在 Files 标签页面中,进行操作如下表2.1所示。表2.1创建.C源文

14、件操作顺序选项操作说明1文件类型选择“C+ Source File”因为这里没有 C Source File 选项,所以我们选择 C+ 语言的对应项。2文件名输入:Console.c实际上文件名叫做什么并不重要,为举例选择Console作为文件名。注意:Console.c 后面的 “.c”后缀是必要的。如果是要创建.cpp件,该后缀就可以不写了。 3位置保持默认值,不需要修改。4完成点击OK按钮(2)查看源文件 当该.c源文件创建后,在左边 Workspace 窗口中的FileView标签页面中,可以看到该新创建的Console.c节点,如图2.2所示。图2.2创建源文件Console.c后的

15、界面在Windows资源管理器中,也可以发现该文件被物理地创建了,如图2.3所示。 图2.3Windows资源管理器的Console.c文件编写程序 (1)编写源代码 以下编写了一个输出 “Hello, Software design!”的程序作为例子。该程序将连续输出 10 遍该字符串,并且在每一次输出前首先打印一个序号。实际开发工作中,也可以对编写过程中的或已经写好的代码进行修改。编写完成后的结果如图3.1所示。图3.1编写程序界面(2)打开“编译”工具栏 这一步不是必要的。如果编译工具栏已经打开,或者您决定通过菜单而不是工具来进行操作,并没有必要打开工具栏。菜单命令和工具栏快捷按钮一般是

16、可以替代的。 如果编译工具栏没有打开,则可以使用鼠标右键单击工具栏的空白处,显示如图3.3所示,在弹出的菜单中选中“Build(编译)”一项,就可以打开编译工具栏。 图3.2打开编译工具栏在该工具栏中,可以选择Debug模式,或者Release模式进行编译。在调试程序的过程中,一般选择 Debug 模式。 图3.3(3)编译连接和运行源程序 程序编好后要进行编译连接和运行,步骤如下:.选择“组建”菜单,单击下拉菜单中的“编译 Console.c”,这时系统开始对当前的源程序进行编译。如果编译完全成功,会显示“Console.obj - 0 error(s), 0 warning(s)”。另外,

17、即便有一些 warning,也可能编译成功。warning表示该代码应该不会影响程序运行,但是有可能存在潜在的问题,编译器不推荐这么写。如果编译未成功,将所发现的错误显示在屏幕下方的“组建”窗口中。根据错误提示,修改程序后再重新编译,如还有错误,再继续修改、编译,直到没有错误为止。 .编译无误后进行连接,这时选择“组建”菜单中的“组建 myproject.exe”选项。同样,对出现的错误要进行更改,直到编译连接无错为止。这时,在屏幕下方的“组建”窗口中会显示如下信息:“myproject.exe - 0 error(s), 0 warning(s)”,说明编译连接成功,并生成以源文件名为名字的

18、可执行文件(myproject.exe)。 .运行程序,选择“组建”菜单中的“! 执行 myproject.exe”选项。这时,会出现一个“MS-DOS”窗口,输出结果显示在该窗口中(如图5所示)。图5 编译连接及执行结果.运行结束后,可以回到“文件”菜单,点击“关闭工作空间”选项,关闭当前文件窗口。若要编辑新的源程序,可以再次打开“文件”菜单,重新建立工程文件,步骤如上所述; 也可以点击“文件”菜单中的“打开工作空间”选项,打开一个已经存在的源文件。2进入Visual C+ 6.0工作环境 (1)建立个人子目录: 第一次上机时先在E盘上建立一个名为program子目录,在program子目录

19、下,再建立以自己学号后六位为目录名的子目录,如学号为1007080101的同学,可以用080101为子目录名。注意:该目录用于存放高级语言程序设计课程实验的所有程序文件。(2)启动Visual C+ 6.0:双击Windows桌面上的Visual C+ 6.0图标或单击Windows桌面上“开始”按钮,在“程序”中选择“Visual C+ 6.0”运行即可。3输入/输出函数的使用方法(1)编程测试下列语句的输出:printf(%dn,1/3*10000);printf(%dn,10000*1/3);printf (%dn,1./3*10000);printf (%dn,1/3.*10000);

20、printf (%fn,1./3*10000);printf (%fn,1/3*10000);printf (%dn,12345.678%20);printf (%fn,12345.678%20);printf (%6dn,12345.678%20);printf(%12.5fn,12345.678%20);printf (%dn,123.5+32767);printf (%ldn,123.5+32767);printf(%fn,123.5+32767);上述语句中的“d”、“ld”、“f”、“6d”、“12.5f”的含义是什么?分析得到上述输出的原因。(2)掌握各种格式转换符的正确使用方法:

21、 输入程序 #include void main()int a, b;float d, e;char c1, c2;double f, g;long m, n;unsigned int p, q;a = 61; b = 62;c1 = a; c2 = b;d = 3.56; e = -6.87;f = 3157.890121; g = 0.123456789;m = 50000; n = -60000;p = 32768; q = 40000;printf(a=%d, b=%dnc1=%c, c2=%cnd=%6.2f, e=%6.2fn, a, b, c1, c2, d, e);printf

22、(f=%15.6f, g=%15.12fnm=%ld, n=%ldnp=%u, q=%un, f, g, m, n, p, q); 运行此程序并分析结果。 在此基础上,修改程序的第10-15行: a = 61; b = 62;c1 = a; c2 = b;f = 3157.890121; g = 0.123456789;d = f; e = g;p = a = m = 50000; q = b = n = -60000; 运行程序,分析结果。 改用scanf 函数输入数据而不用赋值语句,scanf 函数如下: scanf(%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u

23、,%u,&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q); 输入的数据如下:61,62,a,b,3.56,-6.87,3157,890121,0.123456789,50000,-60000,37678,40000 分析运行结果。 在的基础上将printf语句改为: printf(a=%d, b=%dnc1=%c, c2=%cnd=%15.6f, e=%15.12fn, a, b, c1, c2, d, e);printf(f=%f, g=%fnm=%d, n=%dnp=%d, q=%dn, f, g, m, n, p, q);运行程序。 将p、q改用%o格式符输出

24、。 将scanf函数中的%lf和%ld改为%f和%d,运行程序并观察分析结果。(3)程序改错:求由键盘输入的任意两个整数的平均值。写出系统提示的错误,并写出修改意见并调试通过。include main() int x,y,a; scanf(%x,%y,&x,&y); a=(x+y)/2; printf(The average is :a); (4)写出运行结果并分析:#include main()int a,b; a=32767; b=a+1; printf(%d,%d,a,b);#include #define price 30main ( ) int num,total; num=10;

25、total=num * price; printf(total=%d,total); #include main() char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(%c%c,c1,c2);#include main()char c1,c2; c1=97; c2=98; printf(%c %cn,c1,c2);/*以字符形式输出*/ printf(%d %dn,c1,c2);/*转换为整数形式输出*/ #include main() char a,b,c;a=b;b=o;c=y; putchar(a);putchar(b);putchar(c);#

26、include main() float x; int i; x=3.6; i=(int)x; printf(x=%f, i=%d,x,i); #include main() char c=a; int i=97;printf(%c,%dn,c,c);printf(%c,%dn,i,i);#include main() unsigned int a=65535; int b=-2; printf(a=%d,%o,%x,%un,a,a,a,a); printf(b=%d,%o,%x,%un,b,b,b,b); #include main() printf(%3s,%7.2s,%.4s,%-5.3

27、sn,china,china, china, china);#include main() float x,y;x=111111.111; y=222222.222;printf(%f,x+y); 4自增运算输入程序#include void main() int i,j,m,n; i = 8; j = 10; m = +i; n = j+; printf(%d,%d,%d,%d, i, j, m, n); 运行程序,注意 i、j、m、n 各变量的值,记录运行结果。 将第7、8行改为:m = i+;n = +j;再运行并记录运行结果。 将程序改为: #include void main() i

28、nt i,j; i = 8; j = 10; printf(“%d,%d”, i+, j+);运行并记录运行结果。 在的基础上,将printf 语句改为:printf(“%d,%d”, +i, +j); 运行并记录运行结果。 再将printf 语句改为:printf(“%d,%d,%d,%d”, i, j, i+, j+); 运行并记录运行结果。 将程序改为: #include void main() int i, j, m=0, n=0; i = 8; j = 10; m+= i+; n-= -j; printf(“i=%d,j=%d,m=%d,n=%d”, i, j, m, n);运行并记

29、录运行结果。5编程 输入a、b、c三个值,输出其中最大者。 输入三角形的三边长,求三角形面积。设输入的三边长a、b、c能构成三角形。从数学知识已知求三角形面积的公式为area=,其中s=(a+b+c)/2。五、实验报告完成本次实验的报告,写清实验目的和要求、实验内容和实验结果。实验二 选择、循环程序设计(程序流程控制)(4学时)一、实验目的和要求1. 掌握c语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。2. 熟练掌握if、if-else、switch语句,能够灵活运用条件表达式,结合程序掌握简单的逻辑运算和简单的选择结构的算法。3. 能够画出选择结构的流程图,学会调试程序。4. 熟

30、练掌握用while语句、do-while语句和for语句实现循环的方法,并根据不同特点灵活运用。5. 能够使用break和continue等循环控制语句控制循环转向,掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。6. 能够独立设计选择、循环结构的程序,并调试通过。二、实验前准备1. 复习相关内容:逻辑表达式的使用,选择和循环程序设计的框架结构和语句格式。2. 要求事先编好上机的作业程序,然后上机输入程序并调试运行程序。三、实验条件局域网环境,每人一台计算机,Microsoft Visual C+ 6.0软件。四、实验内容1编程输出下面各逻辑表达式的值,并分析结果。设a=

31、3,b=4,c=5。 a+bc & b= =c a|b+c & b-c !(ab)& !c |1 !(x=a) & (y=b)& 0 !(a+b)+c-1 & b+c/22有一函数: 写出程序,输入x值,输出y值。 x (x1)y 2x1 (1=x=10)3给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,8189分为B,7079分为C,6069分为D,60分以下为E。 事先编好程序,要求分别用if语句和switch语句实现。运行程序,并检查结果是否正确。 再运行一次程序,输入分数为负值(如70),这显然是输入时出错,不应给出等级。修改程序,使之能正确处理任何数据:当输入

32、数据大于100或小于0时,通知用户“输入数据错”,程序结束。4 求sna+aa+aaa+aaa 之值,其中a是一个数字。例如:222222222222222 n个a 此时n5,n由键盘输入。5(选作)教材课后习题3.6(5)、3.10、3.15、3.17、3.19、3.21。五、实验报告 完成本次实验的报告,写清实验目的和要求、实验内容和实验结果。实验三 函数(4学时)一、实验目的和要求1. 掌握定义函数的方法;2. 掌握函数实参与形参的对应关系以及“值传递”的方式。3. 理解函数递归调用的含义并能够会应用编程。4. 掌握变量的作用域和生存期。5. 掌握宏代换的定义和使用。6. 能够独立设计使

33、用函数的程序,并调试通过。二、实验前准备1. 复习相关内容:函数定义、参数传递、返回值、函数递归调用、变量的作用域和生存期、编译预处理。2. 要求事先编好上机的作业程序,然后上机输入程序并调试运行程序。三、实验条件局域网环境,每人一台计算机,Microsoft Visual C+ 6.0软件。四、实验内容1教材课后习题4.2、4.3、4.8。2试定义一个带参的宏SWAP(X,Y),实现两个数交换,并利用它将10到19的每个数按个位和十位交换顺序输出。如13输出31。五、实验报告 完成本次实验的报告,写清实验目的和要求、实验内容和实验结果。实验四 数组(4学时)一、实验目的和要求1. 掌握一维数

34、组和二维数组定义、赋值和输入输出方法;2. 掌握字符数组和字符串函数的使用;3. 掌握与数组有关的算法,如冒泡排序和选择排序的算法。4. 能够独立设计使用数组的程序,并调试通过。二、实验前准备1. 复习第四章相关内容。2. 要求事先编好上机的作业程序,然后上机输入程序并调试运行程序。三、实验条件局域网环境,每人一台计算机,Microsoft Visual C+ 6.0软件。四、实验内容1. 求一个33矩阵对角线元素之和。2. 编制程序,要求包括一个子函数:有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。3. 编制程序,要求包括一个子函数:将一个数组中的值按逆序重新存放

35、。例如原来顺序为:8、6、5、4、1。要求改为:1、4、5、6、8。4. 打印出杨辉三角形(要求打印出10行)。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 11 9 36 84 126 126 84 36 9 1五、实验报告 完成本次实验的报告,写清实验目的和要求、实验内容和实验结果。 附录:常犯错误说明1.书写标识符时,忽略了大小写字母的区别。main()int a=5;printf(%d,A);编译程序把a和A认为是两个不同的变量名,而显示出错信

36、息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。2.忽略了变量的类型,进行了不合法的运算。main()float a,b;printf(%d,a%b);%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。3.将字符常量与字符串常量混淆。char c;c=a;在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:a和,而把它赋给一个字符变量是不

37、行的。4.忽略了“=”与“=”的区别。在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写if (a=3) then 但C语言中,“=”是赋值运算符,“=”是关系运算符。如:if (a=3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1b=2编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了

38、分号。 z=x+y;t=z/100;printf(%f,t);对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。6.多加分号。对于一个复合语句,如: z=x+y;t=z/100;printf(%f,t);复合语句的花括号后不应再加分号,否则将会画蛇添足。又如:if (a%3=0);I+;本是如果3整除a,则I加1。但由于if (a%3=0)后多加了分号,则if语句到此结束,程序将执行I+语句,不论3是否整除a,I都将自动加1。再如:for (I=0;I5;I+);scanf(%d,&x);printf(%d,x);本意是先后输入5个数,每输入一个数后再将它输出

39、。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。7.输入变量时忘记加地址运算符“&”。int a,b;scanf(%d%d,a,b);这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。8.输入数据的方式与要求不符。scanf(%d%d,&a,&b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:3,4 输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。scanf(%d,%d,&a,&b);C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时

40、应输入与这些字符相同的字符。下面输入是合法的:3,4 此时不用逗号而用空格或其它字符是不对的。3 4 3:4 又如:scanf(a=%d,b=%d,&a,&b);输入应如以下形式:a=3,b=4 9.输入字符的格式与要求不一致。在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。scanf(%c%c%c,&c1,&c2,&c3);如输入a b c 字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。10.输入输出的数据类型与所用格式说明符不一致。例如,a已定义为整型,b定义为实型a=3;b=4.5;p

41、rintf(%f%dn,a,b);编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。11.输入数据时,企图规定精度。scanf(%7.2f,&a);这样做是不合法的,输入数据时不能规定精度。12.switch语句中漏写break语句。例如:根据考试成绩的等级打印出百分制数段。switch(grade) case A:printf(85100n);case B:printf(7084n);case C:printf(6069n);case D:printf(60n);default:printf(errorn);由于漏写了break语句,case只起标号的作用,而不起判断作用。

42、因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如case A:printf(85100n);break;13.忽视了while和do-while语句在细节上的区别。(1)main()int a=0,I;scanf(%d,&I);while(I=10)a=a+I;I+;printf(%d,a);(2)main()int a=0,I;scanf(%d,&I);doa=a+I;I+;while(I10时,二者结果就不同了。因为while循环是先判断后执行,而do-while循环是先执行后

43、判断。对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体。14.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。main()static int a10=1,2,3,4,5,6,7,8,9,10;printf(%d,a10);C语言规定:定义时用a10,表示a数组有10个元素。其下标值由0开始,所以数组元素a10是不存在的。15.在不应加地址运算符&的位置加了地址运算符。scanf(%s,&str);C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为:scanf(%s,str);16.同时定义了形参和函数中的局部变量。int max(x,y)int x,y,z;z=xy?x:y;return(z);形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为:int max(x,y)int x,y;int z;z=xy?x:y;return(z);27

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!