C语言上机实验指导_第1页
C语言上机实验指导_第2页
C语言上机实验指导_第3页
C语言上机实验指导_第4页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验ーVC的使用ー、实验目的了解并掌握程序设计所必须的计算机基本操作技能了解并熟悉VC开发环境了解并掌握VC开发环境下的C程序的编译、连接与运行方法了解并掌握查找与排除程序编译错误的方法了解不同类型的程序错误二、实验环境个人计算机一台,PHI500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间,SVGA彩色显卡。WindowsXP操作系统MicrosoftVisualC++6.0(中文/英文)版三、实验内容VisualC++开发环境介绍VisualC++是ー个功能强大的可视化软件开发工具。自从1993年,微软公司(Microsoft)推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows200〇、WindowsXP和WindowsNT4.0。所以实际中,更多的是以VisualC++6.0为平台。VisualC++6.0不仅是ー个C\C++编译器,而且是ー个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)〇VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。这些组件通过ー个名为DeveloperStudio的组件集成为和谐的开发环境。VisualC++为用户开发C程序提供了一个集成环境,这个集成环境包括:源程序的输入和

编辑,源程序的编译和连接,程序运行时的调试和跟踪,项目的自动管理,为程序的开发提供各种工具,并具有窗ロ管理和联机帮助等功能。VisualC++6.0开发环境的界面如图1所示。标题栏程序编辑区 1标题栏程序编辑区 1 图1VC开发环境VC环境下的C程序开发尽管VC的功能很强大,但二级考试只是将其作为ー个可视化的C编译器来使用,因此要求考生掌握的操作很简单。启动VC在计算机安装VC开发环境后,桌面都会出现ー个VC的图标,如图2所示,双击该图标就可以启动VC。有的计算机上显示的名称是“VisualC++6.0”或“Micros。代VisualC++”等,但图标都是ー样的。也可以在“开始”菜单的“所有程序”子菜单中,找到相应的启动启动项。图2VC图标

创建一个C源程序文件启动VC后,单击“菜单栏”上的“文件菜单”,弹出ー个下拉菜单,单击其中的‘‘新建”选项,如图3所示。祠新建®Ctrl+NII0¢祠新建®Ctrl+NII0¢打开@)..关闭©Ctrl+0打开工作空间里)…保存工作空间国)HfflT作お后(V>居口围杏聃▼蛇廖ゴ ニ!’く,」二文件电)编辑重)查看9插入Q)工程9组建⑥工具建)窗口也)帮助也)图3创建C源程序单击“新建”选项后‘会弹出''新建”对话框,如图4所示。选择上方的"文件”选项卡,选中"C++SourceFile"选项。然后再右方的“文件名れ)”ー栏中为程序起个名字,可以是任意字母和数字的组合,但其中不能有空格,并且最后一定要以“.c”结尾。然后在“位置(0”ー栏中为程序选择ー个合适的位置存放,也可以单击图4中划圈的按钮,会弹出ー个对话框,让用户选择存放的位置。我们现在把这个程序命名为“example-l.c”,放在D盘下的program文件夹中。图4“新建”对话框编写程序在单击图4中的“确定”按钮后,VC就会在D盘program文件夹下创建一个名为"example-l.c"的C源程序,并在“程序编辑区”中打开它,用户可以在其中输入程序,如

图5所示。图5中是ー个很简单的小程序,只有一条printfO函数调用语句,其功能是向屏幕上输出一行信息“Helloworld!"〇图5编写程序C源程序的编译、连接与运行C源程序文件是不能直接被计算机所执行的,它需要通过编译(Compile)和连接(Link)两个步骤,才能生成能被计算机直接执行的“可执行文件”。整个过程如图6所示,请牢记这张图。图6C程序的编译连接过程C源程序文件是文本文件,它的后缀名为“.c”,它不能被计算机直接执行;经过编译后,生成目标文件,它是二进制文件,后缀名为"Qbj”,它也不能被计算机直接执行;再经过连接(有的书籍称为链接),生成可执行文件,它是二进制文件,后缀名为“.exe”,它可以被计算机直接执行。注意:C程序的编译连接过程一定要熟记,包括每种文件的类型、后缀名、能否被计算机直接执行,笔试常会考查该知识点。因此,在编写完C源程序后,首先要做的就是编译。编译实际上就是进行语法检查,以保证C源程序完全符合C语言的语法,没有语法错误。在VC开发环境下,编译C源程序的方法是单击“菜单栏”的“组建”选项,弹出一个下拉菜单,单击其中的“编译”选项,如图7所示。或者也可以单击图7中划圈的按钮,那是“编译”的快捷键。

图7C程序的编译随后,图7C程序的编译随后,VC会弹出ー个小对话框,如图8所示,不用去理会它的具体含义,直接单击“是”。图8C程序的编译注意:如果在VC的使用过程中遇到类似的弹出小对话框,都不用去理会它的具体含义,直接单击“是”即可。VC随即开始对C源程序进行语法检查,其结果在VC底部的“编译结果输出区”中显示,如图9所示。example-1.obj如图9所示。example-1.obj-0error(s),0warning(s),;ClassV...|s]FileView-Tk组建ス调试、在文件1中查找、在文件2中查找ス结果スSQLDebugging/行6,列2图9编译结果其中,“error(s)”代表语法错误,"waming(s)”代表警告。图9中的结果显示,语法错误(erroKs))与警告(warning(s))的数量都为0,也就意味着程序编译成功。在实际编程当中,语法错误(error(s))是绝対不允许存在,哪怕存在一—个语法错误(error(s)),程序都无法进入下一步的连接和运行,也就是编译失败。因此“error(s)”前面的错误必须是“〇”,才能进入下一步的连接和运行,否则就要改成程序中的错误,并重新进行编译,直到编译成功。而对于警告(waming(s)),则可以不必理会,因为造成警告(warning(s))的原因比较复杂,并

不一定是因为语法错误。需要特别指出的是,编译成功只能保证程序在语法上是正确的,并不能保证程序是无错的。例如,“奥巴马是德国总理”,这句话在语法上是正确的,但在逻辑上却是错误。编译器无法检査出程序在逻辑上的错误。由图6可知,编译结束后需要进行连接,然后才能运行。但在VC当中,这两部可以合并一步。在编译成功后,“组建”菜单中的“执行”选项就会出现,直接单击,VC就会连续进行连接和执行两步操作,如图10所示。或者也可以单击图10中划圈的按钮(红色惊叹号),那是“执行”的快捷键。文件つ编辑包)査看出插入昼)工程®組建®工具①窗那是“执行”的快捷键。文件つ编辑包)査看出插入昼)工程®組建®工具①窗口d)帮助⑩•编译[c]Ctrl+F7娼建[«x<]FT田全部重建批姐建港除图け。0 电亀つ▼(Globals) globalmemi移除工程配置国)配置配置文件开始调试Q)远程连接调试程序I执行【exaaple-1exe]Ctrl+F5コ’,I二]大,一学aソ①可图ioc程序的执行程序在运行后,VC会弹出ー个黑色的DOS界面,来显示程序的运行结果,如图1I所示。图11图11程序的运行结果我们看到,运行界面上出现了两行信息,其中第一行是‘'Hell。world!”,这是由程序中的printfO语句输出的,正是“example-l.c”这个程序的运行结果。而第二行"Pressanykeytocontinue”,它是由VC自动输出的提示信息,不属于程序的运行结果。事实上,任何程序在运行结束后,VC都会在最后加上这样一行提示信息。我们可以把它作为程序运行结束的标志,只有当最后一行出现了“Pressanykeytocontinue"i才能证明程序正常运行结束了。否则,程序可能在等待用户输入数据,或者陷入了死循环。关用工作空间在完成一个程序的编写、编译、连接和运行后,如果要编写和运行另ー个程序,那么要把前・个程序的编辑区及其工作空间关闭。最简单的方法就是直接将整个VC关闭,然后重新启

动。也可以单击“菜单栏”上的“文件菜单”,弹出一个下拉菜单,单击其中的“关闭工作空间”选项,如图动。也可以单击“菜单栏”上的“文件菜单”,弹出一个下拉菜单,单击其中的“关闭工作空间”选项,如图12所示。这样程序的编辑区和工作空间就一起关闭了。图12关闭工作空间注意:在编写和运行另ー个程序前,一定要关闭工作空间,而不能只是简单的把程序的编辑区关闭,这样会造成下一个程序无法运行。打开开巳存在的C源程序文件要打开ー个已存在的C源程序文件,首先要知道该文件的位置。例如,前面的那个“example-l.c"文件,我们知道它是放在D盘的program文件夹下的。下面,我们来用VC打开它。单击“菜单栏”上的“文件菜单”,弹出ー个下拉菜单,单击其中的“打开”选项,如图13所示。’葭,exaaple-1-MicrosoftVisualC++文件也)编辑也)查看9插入d)工程也)组建⑥工具复)窗口也)帮助।D新建国)…CtrltN樋关闭。打开C源程序文件Altglobalmember<寸关闭。打开C源程序文件Altglobalmember<寸.mam打开工作空间(X)...保存工作空间(V)关闭工作空间量)图!3随后,会弹出ー个“打开”对话框,如图14所示。单击图14中划圈的按钮,就可以在弹出的下拉界面中选择要到达的位置。现在选中D盘,然后双击D盘中的program文件夹,就可以进入该文件夹了,如图15所示。

图14图14“打开”对话框默认情况下,“打开”对话框只会显示C\C++程序或工程文件。但用VC也可以打开其它类型的文件(在程序设计题的解题技巧中会用到该操作),只要单击图15中划圈的按钮,然后再弹出的下拉菜单中选中“所有文件(*.*)”即可显示所有类型的文件。用鼠标单击选中要打开的文件"example-l.c"然后单击右方的“打开”按钮,即可打开该文件。图!5打开文件3C程序编译错误的查找与排除在实际的程序编写过程中,语法错误时难免的,尤其是对初学者而言。编写的程序中出现语法错误是很正常的事情,没有必要感到急躁或灰心。平时的练习中犯些错误,是有助于提高程序设计水平的。VC为我们提供了一个辅助功能,帮助我们查找和排除程序中的编译错误。以前面的那个简単程序为例,故意将“printグHelloworld!\n");”语句最后的那个分号(;)去掉,这样很明显就出现了一个语法错误。事实上,初学者也常犯这样的错误。现在,再次编译这个源程序,编译结果显示,出现了一个语法错误,编译失败,如图编译结果显示,出现了一个语法错误,编译失败,如图16所示。图16程序的编译结果任意位置匕并双击,该行错误提示信息变为兰色,如图17所示。"5ClassV...[j]FileView任意位置匕并双击,该行错误提示信息变为兰色,如图17所示。"5ClassV...[j]FileView■c(6):errorC2143:syntaxerror:nissing*;*before,}*Compiling...example-1,c图17错误提示信息此时,在回到“程序编辑区",观察它的变化,如图18所示。图18程序编辑区在编译失败的情况下,“执行”按钮是灰色,不可点击。下面要做的就是要找出这个语法错误。将图16中划圈的滚动条向上拖动,会看到一行信息"D:\program\example-1.c(6):errorC2143:syntaxerror:missingbefore,如图17所示。这是一行错误提示信息,辨认的标志在"errorC2143"上,"error”意味着该行是语法错误的提示信息(如果是"warning”则意味着该行警告错误的提示信息,不用去管它),“C2143"是错误代码。把鼠标移到该行的\progrF\组建ス调试ス在文件1中查找エ在文件2中查找ス结果スSQLDebugging/rntaxerror:missing,;*before*]注意到程序编辑区的做左端多了一个兰色的小箭头(图中划圈部分),该箭头所指向的行就是该语法错出现的大概位置,可能在箭头所指行,也可能在前一行或后一行。实际上,尽管错误提示信息时英文的,但其中多数的单词都很简单常见,大致上是可以读懂的。例如图!7屮的语法错误提示"D:\program\example-l.c(6):errorC2143:syntaxerror:missingbefore,后半句的意思就是:在“}"前丢了“;"。而兰色箭头又指出了该错误的大概位置,所以应该是能够比较容易的排除该错误的。附录1中列出了常见的编译错误,可供需要时查阅。需要提醒的是,如果出了多个“erroKs)”,那么一定要从第一个错误信息提示行开始查错。并且每排除ー个错误,就要重新编译ー次,因为后面的错误可能是由于前面的错误产生的。4C程序的错误类型诺法措误语法错误是指不符合C语言的语法规定,例如左右括号数量不匹配、语句最后漏了分号等等,这些错误会在编译时被发现并指出。这些错误都属于“致命错误”,不改正是无法通过编译的。对ー些在语法上有轻微毛病但不影响程序运行的问题(如定义了某个变量但始终未使用),编译时会发出“警告”。但“警告”不属于“致命错误”,程序可以通过编译。但是在程序的运行过程中,这些“警告”可能造成一些运行时错误。退辑错谟程序没有语法错误,可以正常运行,但结果不对。例如,要求a和b的和,可是却写成了“a-b;”。语法上没有错,但求出的却是a和b的差。这类错误可能是由于设计算法时的错误,也可能是由于在编写程序时出现的疏忽所致。这类错误计算机是无法检查出来的。运行错误有时程序既无语法错误,又无逻辑错误,但程序不能正常运行或结果不对。多数情况下,是由于数据不正确,或数据类型不合适造成的。例如:要求a/b,如果b的值为非0程序不会有问题,而如果b的值为0就为造成溢出(over-flow)错误。四、总结与思考VC的使用是整个上机考试的基石,如果不能熟练地使用VC,那么编程能力根本无从提高,也会严重影响考试的发挥。因此,应该要反复练习“实验内容”中所讲到的操作,并且用ー些课本上的其它程序来进行实验。尤其是“C编译错误的查找与排除”以及附录1中常见的编译错误,如果能够熟悉并掌握,能够对程序设计水平的提升起到很大的促进作用。实验二数据处理ー、实验目的熟悉并掌握数据输入函数的格式与应用熟悉并熟悉数据输出函数的格式与应用进ー步熟悉VC的使用学习独立排除程序中的编译错误二、实验环境个人计算机一台,PIH500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间,SVGA彩色显卡。WindowsXP操作系统MicrosoftVisualC++6.0(中文/英文)版三、实验内容1程序阅读与分析注意:以下在书写时,用“”代表空格,用“/”代表回车换行。printf()0数阅读以下程序,并分析预测程序的运行结果,然后上机验证。/*example-l.c*/#include<stdio.h>main()(inta=5,b=7;floatx=67.8564,y=-789.124;charc='A,;longn=1234567;printf("%d%d\n",a,b);printf("%3d%3d\nn,a,b);printf("%f,%f\nM,x,y);printf(M%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\nw,x,y,x,y,x,y);printf("%e,%10.2e\nMrx,y);printf(M%c,%d,%o,%x\n",crcrcrc);printf(**%ld,%lo,%x\nM,n,n,n);)分析预测的运行结果:上机验证的运行结果:scan*)函数以下程序中的scanf语句用于输入数据,目标是使得a的值为3,b的值为7,m的值为5,n的值为9,x的值为8.5,y的值为フ1.82,cl的值为ム1c2的值为尔,即屏幕上应出现以下的输出结果:a=3b=7m=5n=9x=8.500000y=71.820000cl=Ac2=a那么应该从键盘上怎样输入数据?请上机验证,并把正确的结果写下来。程序中的primf语句会把各个变量的值输出。/*example-2.c*/#include<stdio.h>main()(inta,b,m,n;floatx,y;charcl,c2;/*以下scanf语句用于输入数据*/scanf("a=%db=%d",&a,&b);scanf("%d,%dw,&m,&n);scanf("%f%e",&x,&y);scanf("%c%c",&cl,&c2);/,以下printf语句用于输出各变量数据,验证结果・/printf(”\n以下是输出结果:\n");printf(Ma=%db=%d\n",a,b);printf(Mm=%dn=%d\nM,m,n);printf("x=%fy=%f\n",x,y);printf("cl=%cc2=%c\n",cl,c2);1正确的输入格式是:putchar。与getchar()函数观察分析以下程序,选出对应的输入与输出,并上机验证。/*example-3.c*/#include<stdio.h>intmain()charcl,c2,c3;cl=getchar();c2=getchar();c3=getchar();printf("ヽn以下是输出:\n");putchar(cl);putchar(c2);putchar(c3);printf(M\nw);)输入:A)abc/ B)aDbncZ C)aZbZ输出:A)aZ B)abcZ C)aDbZbZ在三组输入与输出中:输入( )与输出( )对应输入( )与输出( )对应输入( )与输出( )对应2程序编写按要求编’弓程序或将程序填充完整。显示图形在花括号({})之间填入适当的语句,并运行,使其能够显示图1所示的图形。/*example-4.c*/#include<stdio.h>main【解题提示】可以使用prin氓)语句按行直接输出O图1cxamplc-4.c程序的输出结果温度转换在花括号({})之间划线的部分填空,将程序补充完整实现下述功能,并上机运行验证。该程序的功能是从键盘上输入ー个实数F,代表华氏温度。将华氏温度转换为摄氏温度C(实数)并输出,摄氏温度保留两位小数。华氏温度与摄氏温度的关系式:C=二(尸-32)例如,输入:17.2输出:Thetempratureis-8.22/*example-5.c*/#include<stdio.h>main()scanf &f);printf(MThetempratureis\nMrc);)【解题提示】(1)变量要先定义后使用。(2)控制输出的实数的小数位的方法是“%nl.n2f",nl和n2是两个整数,nl表示输出的实数占的总位数,n2表示输出实数的小数位的位数。数据交换在花括号({})之间划线的部分填空,将程序补充完整实现下述功能,并上机运行验证。该程序的功能是从键盘上输入两个整数,分别存放在变量a和b中,然后将a与b中的数据交换。例如,输入:1020输出:beforeswap:a=10,b=20afterswap:a=20,a=10/*example-6.c*/#include<stdio.h>main()(/・定义变量・//*输入两个整数・/printf("Inputaandb:");scanf("%d%d",&a,&b);/・输出数据交换前,ヨ与b的值・/printf("beforeswap:");printf("a=%d,b=%d\n",a,b);/,数据交换・//・输出数据交换后,a与b的值・/printf("Afterswap:;printf("a=%d,b=%d\n",a,b);)【解题提示】两个整数的交换是十分重要的,一定要掌握四、总结与思考数据的输入和输出,以及数据的基本数学运算时整个程序设计的根基,因为程序设计的本质就是数据的获取以及数学运算。因此,一定要熟练掌握儿个数据输入输出函数的格式与应用方法,以及基本数学运算符的运算法则。在完成以上实验的基础上,有兴趣的同学可以在课后思考以ド问题:思考题:数字加密在花括号({})之间划线的部分填空,将程序补充完整实现下述功能,并上机运行验证输入1个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以!0取余,做为该位上的新数字,最后将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。例如,输入:1257输出:Theencryptednumberis4601/*think-l.c*/#include<stdio.h>main()(/*n用来存放输入的4位数,n!存放4位数的第1位数字・//*n2存放4位数的第2位数字,n3存放4位数的第3位数字・/ハn4存放4位数的第4位数字・/intn,nl,n2,n3,n4;scanf("%d", ; /・获取第1位数・/ /・获取第2位数*/ /・获取第3位数*/ /・获取第4位数*/ /・第1位数加9对10取余・/ /・第2位数加9对10取余・//・第3位数加9对10取余・/ /・第4位数加9对10取余・/パ第1位和第3位上的数字互换,第2位和第4位上的数字互换・/printf("Theencryptednumberis%d\nM,n);)【解题提示】对于ー个整数n而言,如果要获取个位数,那么直接对10取余就可以了:n%10o如果要获得十位数,那么首先要把个位数抹去:nハ0,然后原来的十位数就变成了个位数。如果要获得百位数,那么首先要把十位数和个位数抹去:n/100,然后原来的百位数就变成了个位数。根据以上的分析,我们可以发现,要获得一个整数的个位数,就将n对10取余(n%10);要抹去•个整数的最末x位,就将n除以10,(n/l(r)。实验三选择结构程序设计ー、实验目的了解并掌握C语言表示逻辑值的方法(以〇代表"假",以非〇代表"真")了解并掌握逻辑运算符的运算法则熟悉并掌握逻辑表达式的使用熟练掌握if语句及其嵌套形式的使用熟练掌握if-ese语句及其嵌套形式的使用熟练掌握switch语句的使用二、实验环境个人计算机一台,PHI5OO(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间,SVGA彩色显卡。WindowsXP操作系统MicrosoftVisualC++6.0(中文/英文)版三、实验内容注意:以下在书写时,用“二”代表空格,用“/”代表回车换行。1程序阅读与分析阅读以下程序,并分析预测程序的运行结果,然后上机验证。(在书写时,用“□”代表空格,用“/”代表回车换行)1.1switch句阅读以下程序,并分析预测程序的运行结果,然后上机验证。/*exampleーフ,c*/#include<stdio.h>main()intn;printf("Inputn:");scanf&n);switch(n)(printf("Iamcase1.\n");default:printf("Iamdefault.\n");printf("Iamcase2.\n");break;case4:switch(n)(case4:printf("Iamcase4\n");break;case5:printf("Iamcase5\n");}case3:printf("Iamcase3.\n");}分析预测的运行结果:当输入1时,输出:当输入2时,输出:当输入3时,输出:当输入4时,输出:当输入5时,输出:

上机验证的运行结果:当输入1时,输出:当输入2时,输出:当输入3时,输出:当输入4时,输出:当输入5时,输出:2程序编写按要求编写程序或将程序填充完整。2.1求分段出数值在花括号({})的scanf与printf语句之间填写适当的语句,将程序补充完整实现下述功能,并上机运行验证程序的功能是从求以下分段函数的值:—X (x<0)>-="2x+l(0<x<10)3x-l (x>10)X的值从键盘上输入,根据x的值求y的值。例如,输入:11输出:y=32//example-8.c*/#include<stdio.h>main()(intx,y;scanf("%dn,&x);//可根据需要填写多条语句//printf("y=%d\nn,y);}【解答提示】使用if语句或if-else语句皆可。2.2判断国年在花括号(仆)之间填写适当的语句,将程序补充完整实现下述功能,并上机运行验证。程序的功能是从键盘上输入ー个正整数,代表年份,然后判断这个正整数所代表的年份是否是闰年。闰年满足以下两个条件中的任意ー个:(1)能被4整除但不能被!00整除。(2)能被100整除又能被400整除。例如,输入:2008输出:2008是闰年!输入:3000输出:3000不是闰年!/*example-9.c*/#include<stdio.h>main(){/*year用来存储年份・//・当yeaエ是闰年,将leap赋值为1;当yeaエ不是闰年,将leap赋值为0・/intyear,leap;scanf(w%d",&year);/・判断year是否是闰年。如果是,将leap赋值为1:否则赋值为0・//・可以根据需要填入任意多条语句・//・填写条件表达式,根据ユeap的值,输出year是否是闰年・/if()printf("宅d年是闰年!\n",year);elseprintfじ%d年不是闰年!\n”,year);}【解答提示】ー个整数x,如果能够被整数y整除,那么x对y取余的余数为0(x%尸〇),反之余数则不为〇(x%y!=O)〇2.3计算个人所得税在花括号({})之间填写适当的语句,将程序补充完整实现下述功能,并上机运行验证。程序的功能是从键盘上输入ー个正整数(salary),代表エ资,然后计算应该缴纳的个人所得税(tax)是多少(结果保留两位小数)。个人所得税是以850元为起点征收,超过850元的部分要按以下税率(rate)征收个人所得税:当salary<=850时,rate=0;当850<salary<=1350时,rate=0.05;当1350〈salary<=2850时,rate=0.1;当2850<salary<=5850时,rate=0.15;例如,输入;1010.87输出;tax=8.04/*example-10.c*/#include<stdio.h>main()(floatsalary,rate,tax;printf("Inputsalary:");scanf("%f",&salary);/・确定个人所得税的税率,根据需要可填入任意多条语句・/rate=0.2;/・计算个人所得税・/printf(Mtax= \n”,tax);}【解答提示】首先根据salary的值确定个人所得税的税率rate,然后按以下公式计算个人所得税:tax=(salary-850)*rate;四、总结与思考选择结构,又称为分支结构,是程序设计的三大基本控制结构之一,C语言中用于实现选择结构的语句有:if语句if-else语句switch语句难点在于if-else语句的嵌套,以及在switch语句中,break语句的用法,同学们一定要多加练习。在完成以上实验的基础上,有兴趣的同学可以在课后思考以下问题:思考题:计算提院在花括号({})之间填写适当的语句,将程序补充完整实现下述功能,并上机运行验证。程序的功能是计算企业的提成。企业的提成(P)是根据利润(I)来计算的:(1)当IW100000(10万元),提成是利润的10%(2)当100000<1<200000,低于或等于10万元的部分按10%提成,高于10万元的部分可提成?.5%(3)当200000<10400000,低于或等于20万元的部分仍按上述方法提成(下同),高于20万元的部分可提成5%(4)当400000<IW60000〇,高于40万元的部分可提成3%(5)当600000<1010000000,高于60万元的部分可提成1.5%(6)当I>1000000,高于100万元的部分可提成1%例如,如果利润I是65万元,提成由以下几个部分构成:(1)其中的10万元,可提成10%,就是1万元10万元到20万元的部分(共计10万元),可提成7.5%,就是0.75万元20万元到40元的部分(共计20万元),可提成5%,就是1万元40万元到60元的部分(共计20万元),可提成3%,就是0.6万元60万元到65万元的部分(共计5万元),可提成1.5%,就是0.075万元以上部分相加,提成共计3.425万元(34250元)。因此,输入:650000,应输出:P=34250.00元。/*think-2.c*/#include<stdio.h>main()用来存放利润,p用来存放提成・/floatエ,P;printf("InputI:n);scanf&I);/・计算提成,可根据需要填入任意多条语句//printf(MP=%f\n",P);)【解答提示】可使用if语句、i&else语句或者switch语句。实验四循环结构程序设计ー、实验目的熟练掌握while语句及其嵌套形式的使用熟练掌握do-while语句及其嵌套形式的使用熟练掌握for语句及其嵌套形式的使用了解并掌握continue与break语句在循环结构中的作用熟悉循环结构程序段中语句的的执行过程二、实验环境个人计算机一台,PHI500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间,SVGA彩色显卡。WindowsXP操作系统MicrosoftVisualC++6.0(中文/英文)版三、实验内容1,数列求和在花括号({})之间填写适当的语句,将程序补充完整实现下述功能,并上机运行验证。程序的功能从键盘上输入ー个整数n,并计算以下数列的前n项和:1111x33x55x7 (2xn-l)x(2xn +l)例如,输入:10输出:s=14.266510/*example-ll.c*/#include<stdio.h>main()intn,i;floats;scanf("%dn,&n);/・求前n项和,结果存放在s当屮*//・可根据需要填入任意多条语句・/printf(Ms=%f\nn,s);)【解题提示】使用for语句或while语句皆可。注意运算対象的类型,“1/2"的值是〇而不是0.5。.素数在花括号(仆)之间的横线中填写适当的语句,将程序补充完整实现下述功能,并上机运行验证。程序的功能是从键盘上输入ー个整数n,就n(包括n)以内的素数。素数是指:只能被1和它本身整除的数(除了1以外,1不是素数)。例如,输入:50输出:23571113171923293137414347/*example-12.c*/#include<stdio.h>main()intn,i,j;printf("Inputn:");scanf("%d",&n);printf("以下是小于もd的素数:\n",n);/・列举2〜n之间的所有数・/for(i=2; ;i++)/・下面这个循环判断i是否是素数・/;j++)for(j=;j++)/・如果i能够被j整除,就意味着i不是素数,循环可以提前终止・/if(i%j==0) )//满足括号中的条件意味着n是素数,则输出・/if( )printf(n%d",i);}printf("\n");)【解题提示】我们可以有以下思路用于判断某ー个整数是否为素数:给定一个整数n,我们可以从2开始至n-1逐一检查在这范围之内的整数是否可以被n整除。如果可以,则说明整数n不是素数。如果从2开始至n-1范围之内的所有整数都不可以被n整除,那说明整数n符合素数的定义,所以整数n是ー个素数。判断整数n能否被整数m整除的方法是:n%m=0o如果n对m取余等于0,那么n能够被m整除:反之,n不能被m整除。3•水仙花数在花括号({})之间填写适当的语句,将程序补充完整实现下述功能,并上机运行验证。程序的功能是求出所有的“水仙花数”。所谓的“水仙花数”是指这样的一个三位数:其各位数字的立方和等于该数本身。例如:153是ー个水仙花数,因为153=13+53+33。/*example-13.c*/#include<stdio.h>main()【解题提示】(1)“水仙花数”是三位数,因此只能是100〜999之间的数。(2)列举100到999之间的每个数字,判断它是否是水仙花数,如果是就输出,不是就不输出。“水仙花数”各位数字的立方和等于该数本身,因此判断ー个数n是不是“水仙花数”,要获得它各个位上的数字,然后求立方和,看立方和是否等于n。四、总结与思考循环结构是程序设计的三大基本控制结构之一,C语言中用于实现选择结构的语句有:while语句do-while语句fbr语句此外,还要注意continue语句和break语句在循环结构中的作用。编程时,可以不使用continue语句和break语句,但笔试中一定会考査到。在完成以上实验的基础上,有兴趣的同学可以在课后思考以下问题:思考題:打印等牌三角形在花括号({})之间填写适当的语句,将程序补充完整实现下述功能,并上机运行验证。程序的功能是从键盘上输入ー个整数n,然后打印出n层有高的等腰三角形(由“*”组成)。例如,当n为5时,如图1所示。图15层高的等边三角形/*think-3.c*/#include<stdio.h>main())【解题提示】实际上,这个等腰三角形是由"*”和空格两种符号构成。我们要做的,就是判断出每层要输出多少个“ザ’和空格。无论多高的等腰三角形,第一层都是1个“*”,第二层是3个‘”,第三层是5个“*" 最后ー层都是“*”。很明显,这是ー个公差为2的等差数列。等差数列的第n项是:Sn=SI+(n-l)*d(d为公差)因此,n层高的等腰三角形,在第n层就要打印出l+(n-l)*2个“*”,这是打印“*”号最多的ー层。那么,在第x层(x<n),就要打印出l+(x-l)*2个“*”,剩下的部分就用空格填充。因此在第x层,共要打印(l+(n-l)*2)-(l+(x-l)*2)个空格,其中一半的空格在最前方,另一半空格在最后端。因此,我们可以按如下步骤打印等腰三角形的第x层进行:求出该成要打印的星号数量:l+(x-l)*2求出该成要打印的空格数量:y=l+(n-l)*2)-(l+(x-l)*2先打印出一半(y/2个)的空格接着打印出l+(x-l)*2个星号最后再打印出另ー个(y/2个)的空格最后再打印ー个回车换行符(\n)由于第(5)步打印出的空格不可见,所以可以省略。实验五函数(选做实验)ー、实验目的了解并掌握函数的定义方法了解并掌握函数的调用方法了解并掌握函数参数的单向传递了解并掌握函数的递归调用二、实验环境个人计算机一台,PIH500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间,SVGA彩色显卡。WindowsXP操作系统MicrosoftVisualC++6.0(中文/英文)版三、实验内容.求阶乗将fim()函数填充完整,使其以递归调用的形式求参数n(n<=10)的阶乘。例如,输入:6输出:6!=720注意:由于阶乘的递增速度很快,所以存放阶乘结果的变量请使用!ong型,并且不要计算超过10的阶乘,否则可能会造成数据溢出。/*exampel-14*/#include<stdio.h>longfun(intn)实验五函数实验五函数main()intm;longs;printf("Inputm:n);scanf("%dn,&m);s=fun(m);printf(n%d!=%ld\n"zm,s【解题提示】使用直接递归调用。.年龄谜题有5个人坐在ー起,问第5个人多少岁?他说比第4个大2岁。问第4个人多少岁?他说比第3个大2岁。问第3个人多少岁?他说比第2个大1岁。问第2个人多少岁?他说比第1个大2岁。最后问第一个人,他说是10岁。请问第5个人有多大?写ー函数fun来用递归调用来计算第5个人的岁数,并在main函数中调用它。/*example-15.c*/【解题提示】使用直接递归可以很容易地求出。四、总结与思考一般而言,程序都是有多个函数组成的,因为ー个函数中实现的功能会造成逻辑混乱以及阅读上的困难。模块化的思想要求每个函数都只实现单ー的功能,这也是实际的程序设计中,程序员所共同遵守的。因此,了解和掌握函数调用方法及函数之间的数据传递方法是非常重要的。只有掌握好了这些,才能让多个函数完美融合成一个整体。函数调用的难点是递归调用,关键在于在某个时刻,递归要能够结束,否则程序就会陷入无穷的递归。由于上机考试对程序的递归调用不做要求,因此本实验可选做或降低要求。但掌握好本实验有助于理解函数之间的数据传递。实验人数组与指针ー、实验目的了解并掌握ー维数组与二维数组的定义方法了解并掌握ー维数组与二维数组的初始化方法及元素的引用方法了解并掌握字符串、字符串数组以及字符串函数的使用方法了解并掌握指针变量的定义和使用方法了解并掌握函数的传值调用和传址调用二、实验环境个人计算机一台,PHI500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间,SVGA彩色显卡。WindowsXP操作系统MicrosoftVisualC++6.0(中文/英文)版三、实验内容.求最大值及下标在以下程序的横线中填上适当的语句或表达式,并上机运行。输入ー个正整数n(l<n<=10),再输入n个整数,输出最大值极其下标(设最大值惟ー,下标从〇开始)。/*example-l6.c*/#include<stdio.h>main()(/・数组ヨ用来存放n个整数・//*max用来存放最大的数,index用来存放最大数的ド标・/intn,i,max,index,a[100];printf(*'Inputn:w);scanf(n%dn,&n);/・输入n个整数・/printf("Input%dnumbers:\nn,n);for(i=0;i<n;i++)/*首先假设第0个数是最大的・/index=0;for(i=0;i<n;i++)(if() /・如果第i个数比max*/)}printf("max=%dindex=%d\nn,max,index);).矩阵在以下程序的横线中填上适当的语句或表达式,并上机运行。下列程序定义了NXN的二维数组,并已在主函数中复制,如ド所示。请求出该二维数组周边元素的平均值。TOC\o"1-5"\h\z0 12 7 99 7 4 53 8 3 15 6 8 29 14 1该矩阵的周边元素是第〇行、第4行、第0列和第4列上的所有元素。其平均值为3.375。/*example-17.c*/#include<stdio.h>#defineN5main()(/・二维数组赋初值・/inta[N][N]={{0,1,2,フ,9},{1,9,7,4,5},{2,3,8,3,1),{4,5,6,8,2},{5,9,1,4,1}};inti,j;/*sum存放累加和,ave存放平均值*/floatsum,ave;/・清零・/实验六数组与指针实验六数组与指针/・累加第。行的元素・/for(i=0;i<N;i++)/・累加第N-1行的元素・/for(i=0;i<N;i++)/・累加第。列的元素・/for(i=1;i<N-1;i++)/*累加第N-1列的元素・/for(i=1;i<N-1;i++)/・求平均值・/printf("Theaverageis:%f\n",ave);}【解题提示】注意四个角上元素,a[0]⑼既属于第0行又属于第0歹り,a[0][N-l]既属于第〇行又属于第N-1歹リ,a[N-l][0]既属于第N-1行又属于第0列,既属于第N-1行又属于第N-1列,不要累加两次。3.两数交换编写swap函数,功能是交换两个整数,然后在main()数调用它。例如,输入:35输出:53/*example-18.c*/#include<stdio.h>【解题提示】两个数的交换在实验ニ中就已经遇到过了,但是这里要求是以函数调用的方式来实现两个数的交换,因此要使用传址调用。4.大小写转换在以下程序的横线中填上适当的语句或表达式,并上机运行。输入一个字符串,将其中的所有大写字母转换为小写字母。例如,输入:dadBdcEFGaBd输出:dadbdcefgabd/*example-19.c*/#include<stdio.h>main(){charstr[100];inti;printf("Inputstring:");/・输入不带空格的字符串,存放在数组str中//i=0;/・判断当前字符是否为字符串结束标志ハ0-/while()(/・判断当前字符是否是大写字母・/if()(/・将大写字符转换成小写字母・//・向后移动ー个字符*/printf("%s\n",str);四、总结与思考数组是程序设计当中最常用到的数组结构,它可以模拟各种线性结构以及矩阵。掌握数组,可以大大地提高程序设计能力,解决许多实践当中的问题。指针是C语言当中最抽象的部分,同时也是C语言的精华所在。虽然关于指针的安全性还存在着争议,但毫无疑问指针大大地增强了C语言的灵活性。对于指针,一定要细究其细节,否则可能会产生一些意想不到的错误。字符串是文本处理问题当中经常要用到的,对于字符串的问题一定要把握好字符数据的本实验六数组与指针实验六数组与指针质以及字符串的结束标记。在完成以上实验的基础上,有兴趣的同学可以在课后思考以下问题:思考题:字符串移动在以下程序的横线中填上适当的语句或表达式,并上机运行。在main函数中从键盘上输入ー个字符串str以及ー个整数n,将它们作为参数传递给函数ftin。fun函数的功能是将字符串str的第O~m-1个字符移到字符串的最后,第m个字符到最后ー个字符移动字符串的头部。例如,输入:3ABCDEFGHIJK输出:DEFGHIJKABC/*think-4・c*/#include<stdio.h>voidfun(char*w,intn)(int1,j;/*str数组用来存放移动后的字符串・/charstr[100];/・指向首字符・/i=0;j=0;/・指向第n个字符//while(i<=n-1)i++;/*首先把第n个字符一直到最后ー个字符放到str数组的头部・/while()(パ向后移动一个字符*/}/・把第0个字符到第n-l个字符放到str数组的尾部・/for(i=0;i<=n-l;i++)/・向后移动ー个字符・/j++;}/・放上字符串结束标志*/i=0;/*str数组中是移动后的字符串,把它复制到w数组中去//while()(/*向后移动ー个字符・/main()(chars[100];intm;printf("Inputstring:");scanf("%s",s);printf("Inputm:");scanf("%dn,&m);fun(s,m);printf("Aftermove:%s\n",s);实验七结构体ー、实验目的了解并掌握结构体类型的说明了解并掌握结构体类型变量的定义和使用了解并掌握结构体数组的概念和使用二、实验环境个人计算机一台,PIH500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间,SVGA彩色显卡。WindowsXP操作系统MicrosoftVisualC++6.0(中文/英文)版三、实验内容.结构体类型说明与变量定义在以下程序的横线中填上适当的语句或表达式,并上机运行。请说明一个结构体类型,它包含以下成员变量:ー个字符串(name)ー个整型变量(age)ー个字符变量(sex)两个实型变量(weight和high)然后在main函数中定义ー个该结构体类型的变量并初始化,最后输出各个成员变量的值。输出结果应如图1所示。图1example-20.c的输出结果/*example-20.c*/#include<stdio.h>structst);main(){structstn={"Jim”,20,1m*,65.5,175.5};printf("Name:%s\n",);printf("Age:%d\n",);printf("Sex:%c\n",;printf("Weight:%f\n",);printf("High:%f\n",;).结构体数组在以下程序的横线中填上适当的语句或表达式,并上机运行。已知学生的记录由学号和学习成绩构成,N名学生的数据已经存入结构体数组a当中。请编写函数fim,该函数的功能是求出找出所有学生的平均成绩,并输出;再找出成绩最低的学生记录,并通过形参返回主函数。输出结果应如图2所示。图2example_2l.c输出结果实验七结构体实验七结构体/*example-21.c*/#include<stdio.h>#include<string.h>#defineN10typedefstructss(charnum[10];ints;}STU;voidfun(STUa[],STU*s){/*sum用于存放累加和,ave用于存放平均值★//*min用于存放最低分数*/floatsum,ave,min;inti;/・清零///・求累加和・/for(i=0;i<N;i++)(/・求平均值・/printf("Theaverageis:%f\n",ave);/・假设a【〇]是最低分的学生记录・//・把a[0]的记录复制到形参s中・/for(i=0;i<N;i++)(/*如果记录a[i]中的分数比min还低*//・则将aは]的记录复制到形参s中,并更新min中的值・/if()main()(STUa[N]=(TOC\o"1-5"\h\z{"0901", 81}, {"0902", 89}, {"0903", 66},{"0904", 87}, {"0905", 77}, {"0906", 90},{"0907", 79}, {"0908", 61}, {"0909", 80},{“0910", 71}};STUm;fun(a,&m);printf("Thelowestis:%s,%d\n",m.num,m.s);四、总结与思考结构体是ー种复合数据类型,它能够将不同类型的数据组合在ー起成为一种新的数据类型,这是同为复合数据类型的数组所做不到的。在实际的应用当中,由不同类型数据组成的整体随处可见:学籍信息、户籍信息、考生记录等等。掌握好结构体,能够使程序员描述现实世界的能力大大增强。事实上,在实际的工程项目中,结构体类型的数据几乎是必不可少。实验人上机考试指导ー、实验目的熟悉并掌握上机考试的流程与步骤熟悉并掌握上机考试填空题的解题方法熟悉并掌握上机考试改错题的解题方法熟悉并掌握上机考试编程题的解题方法二、实验环境个人计算机一台,PIH500(或同等性能)以上CPU,128MB以上内存,500MB以上硬盘剩余空间,SVGA彩色显卡。WindowsXP操作系统MicrosoftVisualC++6.0(中文/英文)版上机考试模拟系统三、实验内容1上机考试介绍全国计算机等级考试二级C语言的上机考试时间为90分钟,考试时间从考生点击“开始考试并倒计时”按钮考试,由考试系统自动倒计时。倒计时结束前5分钟,考试系统会自动报警题型考生考试即将结束并注意存盘。当倒计时结束,考试系统将自动锁定计算机,考生将不能再进行任何操作。当考生点击‘’交卷”按钮后,考试系统也会自动锁定计算机。注意:无论由于什么原因,考试系统在锁定计算机后,考生都要举手报告监考老师,由监考老师输入密码后,方可离开考场。上机考试的满分为100分,由一道填空题(30分)、一道改错题(30分)以及一道编程题(40分)组成。90分(含90分)以上为“优秀”,80分(含80分)以上为良好,60分(含60分)以上为及格。上机考试的题目由计算机随机从题库中抽取,因此每个考生的题目与其附近考生的题目都不一样。考试系统只能够正常登录一次,在考生第一次正常登录后,无论是由于什么原因导致考试系统退出,考生都不能再次登录,除非山监考老师输入二次登录密码。因此,在考试过程中,如果出现计算机死机、显示器断电、鼠标键盘失灵等意外情况,考生切勿自行处理,而应立即举手报告监考老师,由监考老师进行处理。注意:考生只能抽取一次试题,不要试图通过重新登录考试系统、重启计算机等非常手段来重新抽取试题。2解题要求各题型的解题要求如下:(1)填空题:填空题的源程序文件名为“blankl.c",要求根据题意在程序中挖出的空中填上正确答案即可,不要求运行。但一定要注意保存,否则不得分。(2)改错题:改错题的源程序文件名为“modil.c”,要求根据题意在指定的若干行程序中找岀错误并改正,不要求运行。但一定要注意保存,否则不得分。(3)编程题:编程题的源程序文件名为“progl.c",要求将程序中ftm()函数的函数体补充完成,实现题目中所要求的功能。需要注意的是,编程题一定要运行,必须要有运行结果。因为编程题的评分不是根据考生填写的程序,而是根据程序的运行结果给分。3上机考试流程及各题型解题方法下面以完全仿真的上机考试模拟演示系统为平台,演示上机考试的流程及填空题、改错题和编程题的解题方法。上机考试的整个过程可以分为:登录、答题和交卷三个阶段。请读者一定要注意每个细节,并反复进行练习,不要出现错漏。登录(1)双击桌面上的上机考试系统的图标后,弹出图1所示的界面。fNExaminationvI年觎爲覇息®《庐@F班^^颂!喀颔鹹版本5.2.6教育部考试中心图1登录界面(2)单击“开始登录”按钮后,转入考试登录界面。如图2所示。模拟系统す机廠余巡陰咐時終倒麻師懶歸i撼准考证号:考生姓名: 一身份证号:イ…ノ+ペ・安ノ图2准考证号输入与验证界面(3)在“准考证号”ー栏输入考生的准考证号码,然后单击“考号验证”按钮(或按Enter键)。如果准考证号码输入正确,考试系统随即会弹出ー个提示框,显示考生的准考证号码、姓名和身份证号码三种信息,如图3所示;如过准考证号码输入错误,考试系统也会弹岀ー个提示框,显示错误信息(如图4所示),提醒考生重新输入准考证号码。图3考生信息核对提示框图4错误信息提示框(4)在核对“准考证号码”、“姓名”和“身份证号码”三种无误后,单击提示框上的“是(Y)”按钮,考试系统开始随机抽取试题。抽取试题结束后,弹出“考试须知”界面(如图5所示),考生须注意阅读。尤其要注意:全国计算机等级考试二级c上机考试 模拟考试须知 系薪1.程序填空 (本题30分)1.程序填空 (本题30分)2.程序修改(本题30分)图5“考试须知”界面注意:到目前为止的所有操作所花的时间都不会计入考试时间,因此考生可以从容操作,仔细阅读“考试须知”,切勿出错。(5)在单击“开始答案并倒计时”按钮后,随即弹出考试界面(如图6所示),考试正式开始并倒计时。图6考试界面答題(1)考试界面分成“状态信息条”(图7)和“试题内容査阅窗口”(图8)两个部分。“状态信息条”用于显示考生的准考证号码、考试科目、考试剩余时间等信息。单击“隐藏窗口”按钮可以将“试题内容查阅窗口”最小化,再単击一次则会恢复。注意,在确认已经完成所有试题之前,切勿点击“交卷”按钮。&:隐藏窗口2428999999010001二级C©81:47'X交卷图7状态信息条

法!S选择法!S选择按钮一用于責看各种题型试题因題菜単U考生文件夹图8试题内容查阅窗口(2)“试题内容查询窗口”用于显示填空题、改错题和编程题的题目内容。单击’‘程序填空题”按钮,则下方的“内容显示窗口”就会显示填空题的题目;単击“程序改错题”按钮,则下方的“内容显示窗口”就会显示填空题的题目;单击“程序设计题”按钮,则下方的‘‘内容显示窗口”就会显示编程题的题目。当“试题内容查询窗口”中显示上下或左右滚动条时,表示该窗口中的试题尚未完全显示,此时考生可用鼠标操作显示余下的试题内容,防止因漏做试题二影响考试成绩。“考生文件夹”下面的路径即属于该考生的文件夹,考生可以根据该路径从“我的电脑”中找到自己的考生文件夹(如图9所示)。该文件中有4个文件,分别是“blankl.c”(填空题的程序)、“modil.c”(改错题的程序)、“progl.c”(编程题的程序)和“in.dat”。需要说明的是,有些计算机不会显示文件的后缀名。图9考生文件夹注意:考生一定要在属于自己的考生文件夹下的程序中作答,否则将不会得分。为了不找错文件夹,考生也可以使用“试题内容查询窗口”中的“答题”菜单栏。单击'‘答题”菜单栏,会弹出一个下拉菜单(如图!0)所示。单击“Blank1.C”,考试系统就会自动调用VC打开考生文件下的程序“blankl.c”;单击“Modil.c”,考试系统就会自动调用VC打开考生文件下的程序“modil.c”;单击“Progl.c”,考试系统就会自动调用VC打开考生文件下的程序“progl.c"。使用这种方法,就不会找错考生文件夹。(単机版)第28次NCRE―ニ靈J後拟一考试系统姓名:二级C,碓考证号:2428999999U100CM答题(5)帮助(由Bianki,cModil.cProgl.c考生文件夹EXA1X24010001Bianki,cModil.cProgl.c考生文件夹EXA1X24010001;程序填空题程序修改题程序设计题 第二套探拟试题给定程序中,函数fun的功能是:本算岀带有头结点的单向链表中各结点数据域之和作为函数值返回。图!0“答题”下拉菜单注意:有的考试系统中,单击“答题”菜单栏弹出的下拉菜单显示的是“填空题”、“改错题”和“编程题”,这不会有影响。(3)做程序填空题时,首先単击“程序填空题”按钮,阅读题目,理解题意。程序填空题的题目如图!1所丞。(単机版)第28次NCREーニ錘J模擦一考试系统ー姓名:二,C,椎考证号:2428999999010001答题(5)帮助(由[程序填空题:程序修改题 程序设计题给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域之和作为函数值返回。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结注意:源程序存放在考生文件考下的BLANK1.C中。不得增若或删行,也不痔更改程序的结构!图11程序填空题题目然后使用VC打开考生文件下的程序“blankl.c",该题的程序如下所示:#include<stdio.h>#include<stdlib.h>#define N8typedefstructlist(intdata;structlist*next;}SLIST;SLIST*creatlist(int*);voidoutlist(SLIST*);intfun(SLIST*h)(SLIST*p;ints=0;p=h->next;while(p)(/**********found**********/s+= 1 /★★★★★★★★★★^Qyj-j^**********/p= 2 }returns;}main()(SLIST*head;inta[N]={12,87,45,32,91,16,20,48);head=creatlist(a);outlist(head);/**********found**********/printf("\nsum=%d\n",fun( 3 ));}SLIST*creatlist(inta[])(SLIST*h,*p,*q; inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;i<N;i++){q=(SLIST*)malloc(sizeof(SLIST));q->data=a[i];p->next=q;p=q;}p->next=0;returnh;)voidoutlist(SLIST*h)(SLIST*p;p=h->next;if(p==NULL)printf("ThelistisNULL!\n");else{printf("\nHead");do{printf("->%d",p->data);p=p->next;}while(p!=NULL);printf("->End\n");})在每ー个注释行«/********fbund********/w的下方,都有一个形如“x”(X代表数字1、2或3)的空。考生要做的就是将“—x—”删去,然后填上正确的答案,如下所示:intfun(SLIST*h)(SLIST*p;ints=0;p=h->next;while(p)(/**********found**********/s+=p->data;/*★********found**********/p=p->next;}returns;}main(){SLIST*head;inta[N]={12,8フ,45,32,91,16,20,48);head=creatlist(a);outlist(head);/★★★★★★★★★★found**********/printf("\nsum=%d\n",fun(head));注意:程序填空题不要求运行,但一定要保存。出于保险考虑,考生可以运行程序查看结果。程序填空题是否被运行,不影响考生的得分。(4)做程序改错时,首先单击“程序修改题”按钮,阅读题目,理解题意。程序修改题的题目如图12所示。(单机版)第28次NCREーニ级J筏按.考试系统ー姓名:二,C,睢考证号:2428999999010001答题(S)帮助(ゆ考生文件夹

C:\VEXAI\24010001程序填空题;程序修改题:考生文件夹

C:\VEXAI\24010001程序填空题;程序修改题:程序设计题第一套模拟试题1=1+ 2ID给定程序M0DI1.C中fun函数的功能是:根据形参1=1+ 2ID例如,若植入5,则应勤出2.283333。请改正程年中的错误或走横线处填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!图12程序修改题题目然后使用VC打开考生文件下的程序“modil.c”,该题的程序如下所示:#include<stdio.h>doublefun(intm)(doublet=1.0;inti;for(i=2;i<=m;i++)/**********found**********/t+=1.0/k;/★★★★★★★★★★^Qyj-j^**********I}main(){intm;printf(n\nPleaseenter1integernumber:n);scanf(n%d",&m);printf(n\nTheresultis%lf\n"zfun(m));)在每ー个注释行“/********fbund********/”的下方,都有一行或几行程序,其中有一个(类)错误,考生须找出这个错误并改正,例如第一个注释行“/********found********/”的下方只有一行程序“t+=1.0/k”,应将其改为“t+=1.0/in«有的注释行“/********found********/”下方会出现这样的行“",这实际上就是ー个填空题,考生要做的就是把“”删去,然后填上正确答案。例如第二个注释行“/********found********/"的下方就有一个“”,将其删去,然后填上“returnビ’,改正后的程序如下所示:#include<stdio.h>doublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/**********found**********/t+=1.0/i;/**********found**********/returnt;}main(){intm;printf(n\nPleaseenter1integernumber:n);scanf("%d",&m);printf(n\nTheresultis%lf\n”,fun(m));}程序中有多少行“/********fbund********/”,就说明程序中有多少个(类)错误,因为每个“/********佑und********/”下方的程序中都有一个(类)错误。ー类错误是指相同的错误,例如:/★★★★★★■★★found********/if(a>b)(t=aa=bb=a}上面的程序中,“/********fbund********/”下面的几行程序中有三个地方少了分号(;),但都属于同一类错误。任何ー个“/********found********/”下方的程序中都不会出现多类错误。注意:程序修改题同样不要求运行,但一定要保存。出于保险考虑,考生可以运行程序查看结果。程序修改题是否被运行,不影响考生的得分。(5)做编程题时,首先单击“程序设计题”按钮,阅读题目,理解题意。程序设计题的题H如图13所示。(単机版)第28次NCREーニ疆J模按一考试系统ー姓名:二,C,睢考证号:2428999999010()()1答题(5)帮助(由务生文件夹

务生文件夹

C:\VEXAI\24010001程序填空题 程序修改题 程序设计题宾ー套模拟试题编写函数fun,它的功能富计算:-71n(l)+ln(2)+ln(3)+ +In(加)s作为函数值塚回。在C语言中可御用log(n)函数求In(n).log函数的引用说明是:doublelog(doublex)。例如,若m的值为:20,fun函数值为:6.506583。注意:部分源程序在文隹PR0G1.C文件中。请勿改哥主函薮!nain^箕它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。图13程序设计题题冃然后使用VC打开考生文件下的程序“progl.c”,该题的程序如下所示:#include<math.h>#include<s

温馨提示

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

评论

0/150

提交评论