版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C程序设计I实验指导书信息工程学院计算机系C程序设计实验要求2实验一简单程序设计21010测试验证结果21011温度转换21012计算书费31013时间相加3实验二分支结构程序设计41020函数值计算41021颠倒整数51022整数排序51023自整除数61024选作题:FibonacciAgain6实验三循环结构程序设计71030整数的立方和71031求累加和71032与7无关的数81033选作题:细菌繁殖8实验四数组应用91040杨辉三角形91041矩阵乘法错误!未定义书签。1042学生成绩管理错误!未定义书签。1043选作题:大整数乘法错误!未定义书签。实验五函数应用错误!未定义书签。1
2、050各类型变量在函数调用过程中的变化错误!未定义书签。1051最大公约数和最小公倍数错误!未定义书签。1052进制转换错误!未定义书签。1053字符串替换错误!未定义书签。1054排序错误!未定义书签。1055选作题:数制转换错误!未定义书签。实验六综合应用错误!未定义书签。1060同一天生日错误!未定义书签。1061忽略大小写比较字符串错误!未定义书签。1062不吉利日期错误!未定义书签。1063统计字符数错误!未定义书签。1064选作题:DigitalRoots错误!未定义书签。附录19一、VisualC+调试环境的使用19二、TC环境下的使用错误!未定义书签。三、实验报告要求错误!未定
3、义书签。四、C程序设计常见错误及解决方案错误!未定义书签。C程序设计实验要求课程实验是C程序设计课程的一个重要的实践环节,要求每个同学按以下要求独立完成每次实验,每次上机前必须编写完实验要求的所有题目,并按输出格式写出程序的运行结果,上机时调试程序并验证结果的正确性,若与运行结果不符,则要分析原因,上机时间由课内和课外上机两部分,以下时间为课内上机时间。实验一简单程序设计目的及要求:1 .熟练掌握C开发环境的窗口、菜单命令及相应的命令,并掌握在开发环境下如何编辑、编译、连接、运行一个C程序,以及如何保存和修改C语言的源程序。2 .通过运行一个简单的C程序过程,逐步了解C程序的基本结构及特点。3
4、 .掌握C语言的基本数据类型,熟悉它们的使用方法及定义方式,了解各类型数据输出时所用的格式转换符,熟悉各种运算符和表达式的使用特点。4 .熟练掌握C中赋值运算的使用。1010测试验证结果习题。1011温度转换Description华氏温度和摄氏温度的转换公式为C=59*(F-32)其中:F为华氏温度C摄氏温度Input一个整数表示华氏温度。Output输出一行。该行包含一个浮点数C,表示转换的摄氏温度。精确到小数点后两位。SampleInput93SampleOutputDescription下面是一个图书的单价表:计算概论元/本数据结构与算法元/本数字逻辑元/本C+程序设计教程78元/本人工
5、智能35元/本计算机体系结构元/本编译原理元/本操作系统43元/本计算机网络56元/本JAVA程序设计65元/本给定每种图书购买的数量,编程计算应付的总费用。Input输入每行包含一组10个整数(大于等于0,小于等于100),分别表示购买的计算概论、数据结构与算法、数字逻辑、C+程序设计教程、人工智能、计算机体系结构、编译原理、操作系统、计算机网络、JAVA程序设计的数量(以本为单位)。每两个整数用一个空格分开。Output输出一行。该行包含一个浮点数f,表示应付的总费用。精确到小数点后两位。可用printf("%.2fn",sum)来输出sum的值,并精确到小数点后两位。
6、SampleInpuampleOutput1013时间相加Description用整数表示时间,如:1050表示10点50分,2010表示20点10分。现输入两个时间,求两个时间的和。例:2030+850=520不是28801055+850=1945不是1905Input两行数据,每行一个整数。Output输出相加后的时间整数。SampleInput2030850SampleOutput520实验二分支结构程序设计目的及要求:1 .掌握C程序设计的基本语句表达方式及基本语句结构的方法。2 .掌握C语言中输入、输出函数的基本功能。3 .掌握顺序和分支结构程序设计的方法。
7、4 .能独立编写顺序及分支结构的C程序。1020函数值计算Description有一个函数y = x= 2x - 1= 3x - 11( x < 1 )(1 <= x < 10 )( x >= 10 )写一程序,输入x值,计算y值。Input一个整数x。Output输出函数值y。SampleInput20SampleOutput49Description给定一个最多4位的正整数,将其颠倒过来输出。例如:输入123,则输出321。Input一个小于10000的正整数。Output颠倒后整数。SampleInput1234SampleOutput43211022整数排序De
8、scription对给定的4个整数进行排序,将由小到大的顺序输出。Input一行中有4个整数,整数之间用空格分隔。Output按升序输出,各整数之间用一个空格分隔。SampleInput253141827SampleOutputDescription对一个整数n,如果其各个位数的数字相加得到的数m能整除n,则称n为自整除数.例如21,21%(2+1)=0,所以21是自整除数。Input一个整数nOutput若n为自整除数,则输出TRUE否则输出FALSESampleInput42SampleOutputTRUE1024选作题:FibonacciAgainProblemDescriptionTh
9、ereareanotherkindofFibonaccinumbers:F(0)=7,F(1)=11,F(n)=F(n-1)+F(n-2)(n>=2).InputInputanintegern.(n<1,000,000).OutputPrinttheword"yes"if3divideevenlyintoF(n).Printtheword"no"ifnot.SampleInputSampleOutputno2SampleOutputyes实验三循环结构程序设计目的及要求:1 .熟练掌握循环语句中for语句、while语句和dowhile语句使
10、用方法。2 .掌握编写循环结构程序的方法。1030整数的立方和Description给定一个正整数k(1<k<10),求1至ijk的立方和m。即m=1+2*2*2+-+k*k*k。Input输入只有一行,该行包含一个正整数k。Output输出只有一行,该行包含1到k的立方和。SampleInput5SampleOutput2251031求累加和Description有一分数序列:2,3,5,8,13,211235813求出该序列的前n项之和。Input输入只有一行,该行包含一个正整数n(n<200)。Output序列前n项之和(保留两位小数)SampleInput2Sampl
11、eOutput1032与7无关的数Description一个正整数,如果它能被7整除,或者它的十进制表示中某位数字为7,则称其为与7相关的数。现求所有小于等于n(n<100)的与7无关的正整数的平方和.Input输入为一行,正整数n,(n<100)。Output输出小于等于n的与7无关的正整数的平方和SampleInput21SampleOutput23361033选作题:细菌繁殖Description一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,&现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候
12、,细菌的数目。Input一行有5个整数,整数之间用一个空格隔开。第一个数表示第一天的月份,第二个数表示第一天的日期,第三个数表示第一天细菌的数目,第四个数表示要求的那一天的月份,第五个数表示要求的那一天的日期。已知第一天和要求的一天在同一年并且该年不是闰年,要求的一天一定在第一天之后。数据保证要求的一天的细菌数目在长整数(long)范围内。Output对于每一组测试数据,输出一行,该行包含一个整数,为要求的一天的细菌数。SampleInput2281032SampleOutput40实验四数组应用目的及要求:1 .理解并掌握一维数组、二维数组的定义及引用。2 .熟练掌握利用数组处理数据的方法。
13、3 .掌握字符串数组和字符串的使用方法及常用字符串函数在程序中的使用。1040杨辉三角形Description打印出杨辉三角形的前n行。Input输入一个正整数n(n<20)。Output杨辉三角形。SampleInput5SampleOutput1111211041矩阵乘法Description已知矩阵A(mxn)和矩阵B(nxp),求C=AXB。Input第一行三个整数为m、n、p(m、n、p均小于10),从第二行开始为m行n列A矩阵,然后为n行p列的B矩阵。所有数据之间均由一个空格分隔。Output输出m行p列的C矩阵,所有数据之间均由一个空格分隔。SampleInput23410
14、33401 0212 3453 115SampleOutput7 3516111222231042学生成绩管理Description学生信息包括:学号、姓名、数学成绩、英语成绩、计算机成绩。共有N个人(N<=10,可在程序内部定义,如用#defineN10)的信息,要求计算每人的总成绩,并按总成绩由高到低的顺序输出所有人的信息。最后输出各门课程的平均成绩(保留2位小数)。Input为调试方便,N和学生信息可以在程序内部以初值的方式赋值给对应变量。Output见下例。SampleInputSampleOutputNo Name Maths1001zhang901003wang881002
15、li 7880average of Maths:average of English:average of Computer :English Computer Total80882588580253822401043选作题:大整数乘法Description求两个不超过200位的非负整数的积。Input有两行,每行是一个不超过200位的非负整数,没有多余的前导0。Output一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。SampleInput100SampleOutput实验五函数应用目的及要求:1 .理解函数的定义及函数的调用过程(函数的调用格
16、式、调用方式及被调用函数的使用说明)2 .掌握局部变量、全局变量的说明形式和引用方法。3 .掌握函数的嵌套与递归调用的全过程。1050各类型变量在函数调用过程中的变化Description采用单步运行方式运行下面程序,观察各变量(静态局部变量及自动变量)在函数调用过程中的变化。main()inta=3,i;for(i=0;i<3;i+)printf(“P=n%”d,p(a);intp(a)inta;staticintc=1;autointb=0;b=b+1;c=c+1;return(a+b+c);1051最大公约数和最小公倍数Description对给定的两组数(每组包括2个整数),分别
17、计算出两组数的最大公约数和最小公倍数的和。如:20、12为第一组,28、7为第二组。第一组数的最大公约数为4,最小公倍数为60;第二组数的最大公约数为7,最小公倍数为28;所以两组数的最大公约数之和为11,两组数的最小公倍数之和为88。Input输入包括两行,每行为一组,每组两个整数。Output输出包括两行,第一行为两组数的最大公约数之和,第二行为两组数的最小公倍数之和。SampleInput2012287SampleOutput11881052进制转换Description对输入的两十六进制数(两个字符串),将其转换成十进制后再求和。要求十六进制到十进制的转换功能由函数完成。例如:输入3a
18、1、80,由于3a1转换为十进制后为929,80转换为十进制后为128,所以和为1057。Input输入包括两行,每行为一个十六进制数。Output输出包括一行为两数之和的十进制表示。SampleInput3a180SampleOutput10571053字符串替换Description将一段英文文章中字符串用给定的字符串替换。Input输入包括多行,第一行为一段英文文章(长度不超过80)。以后每行包括2个字符串(长度不超过20),之间由空格分隔,第一个串为原串,第二个串为替换串。当遇到00两个串时表示输入结束,并且此行不需处理。Output输出替换后的文章。SampleInputhelloh
19、owareyes.hHesou00SampleOutputHelloHowareyou.1054排序Description对输入的10个整数进行排序,按从小到大的顺序输出。要求排序过程由函数完成。Input输入包括一行,共10个整数,各数之间由空格分割。Output在同一行上输出排好序的10个数,各数之间由空格分割。SampleInput2548132768764320965SampleOutput91320252743486568761055选作题:数制转换Description求任意两个不同进制非负整数的转换(2进制16进制),所给整数在long所能表达的范围之内。不同进制的表示符号为(0
20、,1,.,9,A,B,C,D,E,F)。Input输入只有一行,包含三个整数a,n,boa表示其后的n是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2=<a,b<=16。Output输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,.,9,A,B,C,D,E,F)。SampleInput15AAB37SampleOutput210306Hint用字符串表示不同进制的整数。实验六综合应用目的及要求:1 .掌握程序的基本方法和技巧,能够独立完成较复杂程序的设计。2 .掌握程序的调试方法,熟悉各种类型错误的改正方法。10
21、60同一天生日Description在一个有200人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日。试找出所有生日相同的学生。Input第一行为整数n,表示有n个学生,n<=200。(1<=m<=12)此后每行包含一个字符串和两个整数,分别表示学生的学号(字符串长度为11位)和出生月日(1<=d<=31)。学号、月、日之间用一个空格分隔。Output对每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。对生日相同的学号,按
22、输入的顺序输出。SampleInput6005315015450183150084501145021810SampleOutput315005018450150080118100211061忽略大小写比较字符串Description一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到'0'为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如"Hello"和&qu
23、ot;hello"在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。Input80)输入为两行,每行一个字符串,共两个字符串。(请用gets录入每行字符串)(每个字符串长度都小于Output如果第一个字符串比第二个字符串小,输出一个字符"<"如果第一个字符串比第二个字符串大,输出一个字符">"如果两个字符串相等,输出一个字符"="SampleInputHellohelloSampleOutput1062不吉利日期Description在国外,每月的13号和每周的星期5都是不吉
24、利的。特别是当13号那天恰好是星期5时,更不吉利。已知某年的一月一日是星期w,并且这一年一定不是闰年,求出这一年所有13号那天是星期5的月份,按从小到大的顺序输出月份数字。(w=1.7)Input输入有一行,即一月一日星期几(w)。(1<=w<=7)Output输出有一到多行,每行一个月份,表示该月的13日是星期五。SampleInput7SampleOutput1101063统计字符数Description判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多。Input第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串,每行数据不超过
25、1000个字符且非空。Output输出n行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个空格。如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符。SampleInput2abbcccadfadffasdfSampleOutputc3f41064选作题:DigitalRootsDescriptionThedigitalrootofapositiveintegerisfoundbysummingthedigitsoftheinteger.Iftheresultingvalueisasingledigitthenthatdigitisthe
26、digitalroot.Iftheresultingvaluecontainstwoormoredigits,thosedigitsaresummedandtheprocessisrepeated.Thisiscontinuedaslongasnecessarytoobtainasingledigit.Forexample,considerthepositiveinteger24.Addingthe2andthe4yieldsavalueof6.Since6isasingledigit,6isthedigitalrootof24.Nowconsiderthepositiveinteger39.
27、Addingthe3andthe9yields12.Since12isnotasingledigit,theprocessmustberepeated.Addingthe1andthe2yeilds3,asingledigitandalsothedigitalrootof39.。InputTheinputfilewillcontainalistofpositiveintegers,oneperline.Theendoftheinputwillbeindicatedbyanintegervalueofzero.OutputForeachintegerintheinput,outputitsdig
28、italrootonaseparatelineoftheoutput.SampleInput24390SampleOutput63附录、VisualC+硼试环境的使用1、进入C+C作环境建立个人子目录先在可用硬盘上建立一个工作目录,如D:workspace。然后按以下步骤进行操作;2、启动VisualC+双击Windows桌面上的VisualC+图标或单击Windows桌面上开始“按钮,在程序”中选择“VisualC+6.01行即可。3、编译、运行C+源程序1)创建一个新的工程文件(Projectfile)启动VisualC+编译系统后,出现"MicrosoftDeveloperSt
29、udio窗白,该窗口菜单条有9个菜单项(如图1所示):单击“File菜单,在其下拉菜单中选择“NeW,屏幕上出现一个“New对话框,在该对话框中选择"Projects标签,出现"Project对话框。选择工程类型为“Win32ConsoleApplication,这时,在右边的Platforms选框中就会出现Win32。输入工程名字。在"Projectname'选框中输入所指定的工程文件名字,例如:first。输入路径名。在“Location选程中,输入你将要把所建立的工程文件放人何处的路径名。例如,要将工程文件放在D盘下已建立好的子目录D:workspa
30、ce子目录中,所以该选取路径为:D:worksplacefirst。选择"O侬钮,该工程文件已建立。Pri11glw£iii«ntft-?jadIAaJ1il1scCLlifi.did.ttMmIp目|胃口。感在e|q"e,|昭萌智喻FT3编图1创建新的工程文件2)建立源文件再次选择“File菜单中的“NeW选项,在四个标签中选择“File标签,在其对话框选项中,选择"C+SourceFile,并在右边的Addproject的选择框内打勾,激活其下面的选项,然后在File框内输入源文件名(如1st),单击“。侬钮,出现编辑屏幕,即可编写程序(如
31、图2和图3所示)。一】,-H,ru,”C图2建立源文件图3编辑源文件3)编译连接和运行源程序程序编好后要进行编译连接和运行,步骤如下:选择“Build菜单,单击下拉菜单中的“Compile”,这时系统开始对当前的源程序进行编译,在编译过程中,将所发现的错误显示在屏幕下方的“Build窗口中。根据错误提示,修改程序后再重新编译,如还有错误,再继续修改、编译,直到没有错误为止。编译无误后进行连接,这时选择“Build菜单中的“Build”选项。同样,对出现的错误要进行更改,直到编译连接无错为止。这时,在"Build窗口中会显示如下信息:0error(s),0warning(s),说明编译
32、连接成功,并生成以源文件名为名字的可执行文件()。运行程序,选择“Build菜单中的“Execute”选项。这时,会出现一个“M-DOS窗口,输出结果显示在该窗口中(如图4和图5所示)。运行结束后,可以回到"Filel。,点击“Closeworkspace”选项,关闭当前文件窗口。若要编辑新的源程序,可以再次打开“File菜单,重新建立工程文件,步骤如上所述;也可以点击“File单中的"OpenWorkspace选项,打开一个已经存在的源文件。图4编辑运行源程序图5显示输出结果、TC环境下的使用如上图是用户进入TC后的主菜单界面,下面是常用的命令及功能键:File菜单Fil
33、e的下拉菜单中有9个子命令,其功能是完成文件的创建、存、取、退出等。Load:该命令为装载命令,其功能是将已存盘的文件调入到当前所编辑环境中。Pick:选择最近已编辑过的源程序文件。New:创建一个新的文件。Save:保存当前所编辑的文件。Writeto:将当前的文件以另外一个文件名存盘。OSshell:从TurboC切换到命令提示符窗口状态下,可用EXIT命令返回。Quit:退出TurboC,回到DOS提示符下。常用的编辑键(在Edit状态下):<Del>:删除光标所在的字符。<Ins>:插入、改写转换键。<Home>:光标至ij行首。<End>
34、;:光标到行尾。<PgUp>:向上翻页<PgDn>:向下翻页<Ctrl>+N:插入一行<Ctrl>+Y:删除光标所在行<Ctrl>+KB:定义块首<Ctrl>+KK:定义块尾<Ctrl>+KV:块移动<Ctrl>+KC:块复制<Ctrl>+KY:块删除<Ctrl>+KH:块取消<Ctrl>+<Break>或<Ctrl>+C:中断程序的运行常用热键的使用用<Alt>加上TurboC菜单栏上所对应的第一个大写字母,方可进入对应菜单
35、<Alt>+F:进入文件菜单、<Alt>+E:进入编辑菜单、<Alt>+R:进入运行菜单<Alt>+C:进入编译菜单等。 <Ctrl>+F9运行程序(对应RUN菜单中的“Run令) <Alt>+F5从TC屏幕切换到用户屏幕(对应RUN菜单中的“Userscree命令') F1显示当前位置的帮助信息。 F2将当前所编辑的文件存盘(对应File菜单中的“sav瑜'令) 3:装入一个文件(对应File菜单中的“load令) F4程序运行到光标所在行。(对应RUN菜单中的"Gotocurso喻令)、程序调
36、试步骤1 .启动TC:在Windows环境下进入TC,屏幕将出现如下界面:图1TC界面2 .编辑源程序:进入TC菜单界面一在file主菜单中选择“new”按回车后即可一输入C程序,缺省文件名为:(图2所示)。(此步骤用于编辑一个新文件)r"翁一3口玉图固直国a理图2*用户可对文件名加以修改。3 .保存源文件在源程序输入完成后,最好先保存源程序,以免在编译运行时,出错而造成程序丢失。程序编辑完后,可按“F2®进行保存或选择“File菜单中的“save进行保存(图3)。口一3口|丁凰直后AJ迟)图3例如文件名为:。保存时注意文件保存的路径(A,C,D,E盘)以免在修改程序时,知
37、道C程序所存放的位置。4 .编译运行源程序可直接使用“Ru磔单中的“run命令或对应的键命令"Ctrl+F9系统自动执行对C程序的编译、运行,若程序编译成功,则产生目标文件和可执行文件,当编译时,程序出现错误,屏幕上会显示相应的错误信息及错误原因,这时,用户可对程序加以修改,再进行编译运行,得到正确的输出结果。(图4所示)图45 .查看结果可选择"Runi单中的"userscree喻吟或对应的键命令"ALT+F6如图四所示(黄色标记)6 .如何修改源程序当源程序出现错误时,需要修改,若程序已经存盘,这时可使用TC菜单“File甲的“load命令,将需要修
38、改的文件调入到当前屏幕上,若程序在当前屏幕上,则可直接修改,但修改后的程序必须重新存盘和编译运行。(图5所示)图5三、实验报告要求实验报告按以下格式书写,不用抄题,其中: 解题思路:解决问题的基本思想、数据组织方法及采用的算法描述。 调试分析:程序调试过程中遇到的主要问题,以及解决方法,收获等。 测试结果:对于可输入多组测试数据的程序要至少给出三组测试数据,以及对应的程序运行结果。例如:“C语言程序设计I”实验报告实验一简单程序设计班级:学号:姓名:目的及要求:1 .熟练掌握2 .3 .1010测试验证结果1)解题思路2)流程图3)源程序代码4)调试分析5)测试结果1011温度转换1)解题思路
39、2)流程图3)源程序代码4)调试分析5)测试结果1012计算书费1)解题思路2)流程图3)源程序代码4)调试分析5)测试结果1013时间相加1)解题思路2)流程图3)源程序代码4)调试分析5)测试结果四、C程序设计常见错误及解决方案1 .输入/输出控制与编程初步错误原因不例出错现象解决方案变量未定义就使用inta=3,b=4;temp=a;a=b;b=temp;系筑报错:'temp':undeclaredidentifier(temp是没有声明的标识符)增加艾童temp的正义,再使用该变量变量名拼写错误inttemp;tep=2;系统报错:'tep':undec
40、laredidentifier查看对应的变量及其定义,保证前后一致未区分大小写字母inttemp;Temp=2;系统报错:'Temp':undeclaredidentifier查看对应的变量及具定义,区别大小写字母变量定义位置错误intx=sizeof(int);printf("%d",x);inty=0;系统报错:missing''before'type'将变量集中在语句块开始处定义,变量定义不能放在可执行语句中间使用了未赋值的变量,其值不可预测inta;printf("%d",a);系统告警:local
41、variable'a'usedwithouthavingbeeninitialized养成对变量初始化的习惯,保证访问前有确定值不预先判断除数是否为0intdevide(inta,intb)returna/b;系统无报错或告警,但是当调用时第二实参为0时将出现意外终止对话框在函数定义时增加对除数为0的考虑并作处理,防止运行时出错未考虑数值溢出的可能inta=10000;a=a*a*a;printf("%d",a);系统无报错或告警,但是输出结果不正确预先估计运算结果的可能范围,采用取值范围更大的类型,如:double不用sizeof获得类型或变量的字长int
42、*p;p=(int*)malloc(4);系统无报错或告警,但是在平台移植时可能出现问题改为:p=(int*)malloc(sizeof(int);语句之后丢失分号inta,ba=3;b=4;系统报错:missing''beforeidentifier'a'找到出错位置,添加分号忘记给格式控制串加双引号intx=sizeof(int);printf(%d,x);系统报若干个错:missing')'before'%'等根据编译罂所指错误位置,将格式串两边加”库函数名拼写错误,大小写字母有区别intx=sizeof(int);Prin
43、tf("%d",x);'Printf'undefined;assumingexternreturningint根据编译器所指错误位置,检查函数名并修改未给scanf中的变量加取地址运算符&inty;scanf("%d",y);系统告警:localvariable'y'usedwithouthavingbeeninitialized根据编译器所指告警位置,检查并修改,增加取地址符&在printf中的输出变量前加上了取地址符&inty;scanf("%d",&y);print
44、f("%d",&y);系统无报错或告警,但是输出结果不正确先用调试器跟踪观察变量的当前值,如果变量值正确而输出结果不对,则检查printf中的各个参数,如果输入的数据与变量所获得的值不一致,则检查scanf中的各个参数漏写了printf中欲输出的表达式scanf("%d",&y);printf("%d");系统无报错或告警,但是输出结果不正确漏写了printf中与欲输出的表达式对应的格式控制串inty;scanf("%d",&y);printf("%d",y,y+3);系
45、统无报错或告警,但是缺少期望的输出结果输入/输出格式控制符与数据类型不一致inta=12,b;floatf=;scanf("%c",&a);printf("a=%f",a);printf("f=%d",f);系统无报错或告警,但是输出结果不正确scanf的格式控制串中含有n'等转义字符inty;scanf("%dn",&y);系统无报错或告警,但是输入数据时无法及时结束从格式控制串中去掉n'转义字符读入实型数据时,在scanf的格式控制串中规定输入精度floatx;scanf(&qu
46、ot;%5.2f",&x);printf("%f",x);系统无报错或告警,但是输出结果并不是输入时的数据从格式控制串中去掉精度控制,输入实型数不能控制精度在格式控制字符串之后丢失逗号printf("%d"n);系统报_错:missing')'beforeidentifier'n'不是在n之前加旨而应该在n之前加号在中文输入方式下输入代码或出现全角字符voidmain()inta=2;系统报错:unknowncharacter'0xa3'找到出错位置,改用英文方式输入。中文或全角字符只在注
47、释或串常量出现2 .流程控制相关错误原因不例出错现象解决方案混淆"&,|与“&&,|”intx,y;scanf("%d%d",&x,&y);if(x&y)printf("x!=0andy!=0");elseprintf("x=0ory=0");系统无报错或告警,但是当输入2和5时,输出结果却是x=0ory=0用调试器跟踪观察表达式x&&y的结果,以及与流程走向的矛盾,从而发现问题所在,将&改为&&即可解决。将“=嘤写成“=”intx=3,
48、y=4;if(x=y)printf("x=y");elseprintf("x!=y");系统无报错或告警,但是输出结果不正确,输出结果永远都是x=y用调试器跟踪观察变量的当前值,注意执行if语句的执行,从而找出逻辑错用“=比较两个浮点数floatx;scanf("%f",&x);if(x=printf("equal");elseprintf("unequal");系统无报错或告警,但是输出结果永远都是unequal,即使输入的x值为将变量类型改为double型以提高精度;更好的方法是以绝
49、对值之差在某一范围为相等。如:if(fabs<1e-5)单分支if条件表达式圆括号外加了分号intx,y;scanf("%d%d",&x,&y);if(x>y);x-=y;printf("%d",x);系统无报错或告警,但是无论输入的值大小关系如何,都执行x-=y输出改变后的x用调试器跟踪观察程序的执行过程,注意观察输入x<y这种情况下的执行语句,从而找出错误位置双分支if条件表达式圆括号外加了分号intx,y;scanf("%d%d",&x,&y);if(x>y);x-=y;e
50、lsey-=x;系统报错:illegalelsewithoutmatchingif根据出错位置和错误信息提示,删除多余的分号case分支未用break结束intx,y=0;scanf("%d",&x);switch(x)case1:y=1;case2:y=2;default:y=100;printf("y=%dn",y);系统无报错或告警,但是无论输入的x是多少,输出结果永远都是y=100用调试器跟踪观察程序的执行过程,发现对y做了多次赋值,及时在每个分支最后加上break结束。switch-case语句未提供default分支scanf(&qu
51、ot;%d",&x);switch(x)case1:y=1;break;case2:y=2;break;printf("y=%dn",y);系统无报错或告警,但是当输入的x不是1或2时,输出结果是y=-0(一个随机数)用调试器跟踪观察程序的执行过程,当输入的x不是1或2时直接执行了输出语句而未对y作任何处理。力口上default分支。while语句条件表达式圆括号外加了分号intx=1,y=0;while(x<=5);y+=x+;printf("%d",y);系统无报错或告警,但却是死循环用调试器跟踪观察程序的执行过程,发现陷入死
52、循环而无法执行到语句y+=x+去掉多余分号while循环体内缺少改变循环控制变量值的语句导致死循环intx=1,y=0;while(x<=5)y+=x;printf("%d",y);系统无报错或告警,但却是死循环用调试器跟踪观察程序的执行过程,观察变量值的变化情况,发现x值一直不变,增加对x的修改for语句圆括号内的3个表达式未用分号分隔intx=1,y=0;for(x=1,x<=5,x+)y+=x;系统报错:missing''before')根据出错位置和错误信息提示,找到for语句,将逗号改为分号for语句后误加分号inti,sum=
53、0;for(i=1;i<=5;i+);sum+=i;printf("sum=%dn",sum);系统无报错或告警,但是输出结果是sum=6而不是sum=15用调试器跟踪观察程序的执行过程,找到未重复执行sum+=i;的原因,去掉for后的分号累加器未事先清零intx=1,y;for(x=1;x<=5;x+)y+=x;printf("%d",y);系统无报错或告警,但是输出结果错误用调试器跟踪观察变量y的值,y值一开始就是随机数,增加初始化清零if、while、for的控制语句中未用在括号构成复合语句intx,y,t;scanf("%
54、d%d",&x,&y);if(x>y)t=x;x=y;y=t;系统无报错或告警,但是当输入的x<y时,输出的y是一个随机数用调试器跟踪观察程序的执行过程及变量y的值,在x<y时执行了x=y;y=t;加大括号构成复合语句printf("%d%dn",x,y);3 .函数相关错误原因不例出错现象解决万案使用了库函数但未包含相应的头文件intx,y;scanf("%d",&x);y=(int)sqrt(x);printf("%d%dn",x,y);系统报错:'sqrt'un
55、defined;assumingexternreturningint根据错误提示,增加相应的文件包含函数原型定义末尾未加分号intf(inta,intb)voidmain()intf(inta,intb)returna+b;系统报错:'main':notinformalparameterlist等3处错误仔细检查错误提示位置及前后相邻位置,在原型声明最后补加分号函数定义首部末尾加了分号intf(inta,intb);returna+b;voidmain()系统报错:found''atfilescope(missingfunctionheader)等2处错误仔细检
56、查错误提示位置及前后相邻位置,将函数定义首部最后的分号去掉将形参又定义为本函数内的局部变量intf(inta,intb)inta;returna+b;系统报_错:redefinitionofformalparameter'a'根据错误提示,修改局部变量名,不能与形参同名类邸相同的形式参数共用了类型标识符intf(inta,b)returna+b;系统报错:'b':nameinformalparameterlistillegal根据错误提示,修改形式参数表,每个形参单独给一个类型标识,不可共用从返回值类型为void的函数中返回一个值voidf(inta)retur
57、na*10;系统告警:'f':void'functionreturningavalue根据告警提示,删除return语句,修改函数有返回值的函数不用return指明返回值intf(inta)a=a+100;系统告警:'f':mustreturnavalue根据提示增加return语句返回指向局部变量的指针int*f(inta)ints=a;s*=10;return&s;系统告警:returningaddressoflocalvariableortemporary直接返回数值而不是指针,也可以定义一个指针形参,将实参变量的地址传入不定义函数返回值类型或函数参数类型,编译器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海东消防培训题库及答案
- 2025年飞行员招聘面试参考题库及答案
- 2025年认证咨询师招聘面试题库及参考答案
- 2025年作业分析师招聘面试题库及参考答案
- 2025年驾驶员招聘面试题库及参考答案
- 2025年若干产品专员招聘面试题库及参考答案
- 2025年母婴产品销售专员招聘面试参考题库及答案
- 2025年医疗行业项目经理招聘面试题库及参考答案
- 2025年营销副总裁招聘面试参考题库及答案
- 2025年基本面分析师招聘面试参考题库及答案
- 2025亚洲五国纺织制造业市场需求和供给分析及发展策略规划分析研究报告
- 万寿菊黄酮的提取工艺、生物活性及其在畜牧业中的应用
- 2025河南省农业信贷担保有限责任公司秋季专场招聘28人考试笔试参考题库附答案解析
- 2025年党的二十届四中全会精神宣讲稿及公报解读辅导报告
- 统编语文四年级上册第六单元教材解读及集体备课
- 中级无机化学答案版
- 道德与法治教研活动记录
- 完全平方公式(课件)
- 烟台中集来福士海洋工程有限公司授信方案(国内证、福费廷)
- 混凝土防渗墙施工作业指导书
- PRO系列焊机使用说明书
评论
0/150
提交评论