计算机二级 南开百题程序改错题要点
- 格式:doc
- 大小:158.50 KB
- 文档页数:10
计算机二级上机考试程序修改题常见应试技巧
计算机二级上机考试,题库每年都有,如果你的记忆力足够好,再加上那么一点
点运气的话,把每年的100题目全部都背下来,还是可以顺利通过上机考试的(或者
说是应付…)。
但是,一百套题,背着背着就会混淆,所以光背是远远不够的,所以,本人在这里把最容易拿分的程序修改题的应试技巧总结下来,分享给大家。
上机之后,针对程序修改题,首先单击F7,进行Build操作。
步骤如下:
1、单击“F7”
2、出现这个对话框后单击“是”
3、程序最下方会出现这样的显示:MODI1.exe - 1 error(s), 0 warning(s)。
当
提示“MODI1.exe - 1 error(s)”中“”error(s)不为零时,即为程序有
错误,无法执行。
在这个框中我们向上看出现错误的信息。
4、在程序修改题中,题目中所有的错误都出现在
“/************found************/”的下方,换句话说,就是
有几个“/************found************/“,其下方就有几处
错误。
5、各种错误信息的出现形式、修改方法参见下表:
上面介绍的是C语言上机考试程序修改题目中最常见的错误类型,总结出来供大家参考,希望对大家有所帮助,谢谢!。
第一套1. 程序填空程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。
第一处struct student t;第二处for(i=0;i<n-1;i++)第三处if(strcmp(a[i]. name,a[j]. name)>0)2 程序修改/**fou nd**/q=p+i;/**fou nd**/while(q>p)3程序设计int fun(STREC *a,STREC *b,intl,i nt h){int i,j=0;for(i=0;i<N;i++)if((a[i].s>=1 &&a[i].s<=h) b[j++]=a[i]; return j;}第二套1. 程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处free(q);第二处q=p->next; 第三处q=q_>next;2. 程序修改/**fou nd**/p=j;/**fou nd**/p=i;3. 程序设计void fun (i nt m,i nt *a,i nt *n){int i;*n=0;for(i=7;i<=m;i++)if((i%7==0)||(i%11==0)) a[(* n)++]=i;}第三套1. 程序填空函数fun的功能是:逆置数组元素是的值。
例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。
形参n给出数组中数组中数据的个数。
第一处for(i=0;i<n/2;i++) 第二处a[i]=a[n-1-i];第三处a[n-i-1]=t;2程序修改/**fou nd**/ n=*p_ ‘0';/**fou nd**/n=n*8+*p- ‘O';3.程序设计STREC fun (STREC*a,char *b){STREC c;Int i;c.num[0]= ' \0 ';c.s=-1; for(i=0;i<N;i++) if(strcmp(a[i]. num,b)==0) {strcpy(c. nu m,a[i]. nu m);c.s=a[i].s;break;} return c;}第四套1. 程序填空Z |给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。
改错题1、给定程序中fun函数的功能是:根据整型形参m的值,计算如下公式的值:例如,若m中的值为5,则应输出0.536389。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <stdio.h>double fun ( int m ){ double y = 1.0 ;int i ;/**************found**************/for(i = 2 ; i < m ; i++) 改为:for(i = 2 ; i <= m ; i++)/**************found**************/y -= 1 /(i * i) ; 改为:y -= 1.0 /(i * i) ;return( y ) ;}main( ){ int n = 5 ;printf( "\nThe result is %lf\n", fun ( n ) ) ;}2、给定程序中fun函数的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。
例如,当s所指字符串为“ABCD”时,则t所指字符串的内容应为“ABCDDCBA”#include <stdio.h>#include <string.h>/************found************/void fun (char s, char t) 改为:void fun (char * s, char * t) { int i, d;d = strlen(s);for (i = 0; i<d; i++) t[i] = s[i];for (i = 0; i<d; i++) t[d+i] = s[d-1-i];/************found************/t[2*d-1] = '\0'; 改为:t[2*d] = '\0';}main(){ char s[100], t[100];printf("\nPlease enter string S:"); scanf("%s", s);fun(s, t);printf("\nThe result is: %s\n", t); }3、给定程序中fun函数的功能是:将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。
1、改错:将P所指字符串中每个单词的最后一个字母改成大写if(p==’’)改为if(*p==’’)*(p-1)=toupper(*(p-1))改为*(p-1)=toupper(*(p-1));2、改错:函数fun的功能是:根据形参m(2=<m<=9)在二维数组中存放一张m行m列的表格fun(int *a int m)改为fun(int (*a)[M] int m)a[i][k]=k*j改为a[j][k]=k*j3、改错:函数fun的功能:求K!(k<13)所求阶乘作为函数值返回if k>0改为if(k>0)else if(k=0)改为else if(k==0)4、改错:函数fun的功能:根据形参m的值,计算如下公式的值。
int k改为int iy=i**i改为y-=i*i5、改错:程序运行时,输入一串字符,程序查找每一个“str”子串将其换为buf[j]=buf[j+3]改为buf[j+3]=buf[j]printf(“%c\n”,buf)改为printf(“%s\n”,buf)6、改错:统计字符串s中各原音字母(即:A、B、C、D、E)的个数,注意:不分大小写写出。
switch (*s)case’a’:’A’:改为case’a’:case’A’7、改错:求整数X的Y次方的低3位值for(i=1;i<y;i++)改为for(i=1;i<y+1;i++)t=t/1000改为t=t%10008、改错:将一无序数a1,a2,a3……a10由小到大的顺序进行排序for(i=0;i<9;i--)改为for(i=0;i<9;i++)if(a[i]<a[j])改为if(a[i]>a[j])9、改错:MODI,C程序的功能是:读入两个字符串str1和str2for(j=0;t[j]==0;j++)改为for(j=0;t[j]!=0;j++)if(s[i]=t[j])改为if(s[i]==t[j])10、改错:函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,若未找到,则函数值为NULLa=Null改为a=NULLif(r==p)改为if(*r==*p)11、改错:读入n(<=20)个只含字母和数字的字符串s(长度<20),将其中长度最大的字符串找出来并返回其首地址。
程序编程题目1、第一大类(交换类)共7道2. 程序修改(第3套)给定程序中函数fun 的功能是:通过某种方式实现两个变量的交换,规定不允许增加语句和表达式。
例如变量a中的值原为8,b中的值原为3,程序运行后a中值为3,b 中的值为8./**found**/t=*x; *x=y;/**found**/return(t);2. 程序修改(第60套)给定程序中函数fun的功能是:实现两个整数的交换。
例如给a和b分别输入60和65,输出为:a=65 b=60/**found**/void fun(int *a,int *b)/**found**/t=*b;*b=*a;*a=t;2. 程序修改(第88套)给定程序中函数fun的功能是:将主函数中两个变量的值进行交换。
例如,若变量a中的值为8,b中的值为3,则程序运行后,a中的值为3,b中的值为8。
/**found**/void fun(int *x, int *y)/**found**/t=*x,*x=*y,*y=t;2、第二大类(计算类)共22道2. 程序修改(第1套)给定程序中函数fun的功能是:求出以下分数序列的前n项之和。
2/1+3/2+5/3+8/5+13/8+21/13+……和值通过函数值返回main函数。
例如n=5,则应输出:。
/**found**/double fun(int n)/**found**/s=s+(double)a/b;2. 程序修改(第6套)给定程序中函数fun的功能是:用递归算法计算列中第n项的值。
从第一项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……/**found**/switch(g)/**found**/case 1:case 2:return 1;2. 程序修改(第13套)给定程序中函数fun的功能是:求 s=aa…aa—…—aaa—aa—a(此处aa…aa表示n个a,a和n的值在1至9之间)。
例如,a=3,n=6,则以下表达式为:S=333333-33333-3333-333-33-3其值是296298。
计算机等级考试二级C语言上机改错题考点汇总改错题的错误主要分为以下几类:1、if或while语句若错误行是if或者while语句,则要注意以下点:1)首先判断是否正确书写if或while关键字;2)然后看有没有用小括号把while或者if后面的条件表达式括起来,若没有则加上小括号;3)若条件表达式中有指针变量而且没有指针运算符时,则加上指针运算符; int *p;* 指针运算符4)若if条件表达式中只有一个等于号即数学等号(=),则要改写成两个等于号即逻辑等号(= =);5)若if条件表达式为其他的比较运算符,则一般是进行逆转或加一个等于号;2、for语句若错误行是for语句,则要注意以下几点:1)首先判断for有没有书写正确;2)然后看for中的表达式是不是用分号(;)隔开,不是则改为分号。
记住是分号(;),不是逗号(,)!3) 再者,分析for中的三个表达式,是否符合题意;第一个表达式表示起始条件,第二个表达式表示终止条件,第三个表达式表示循环变量的变化。
3、return语句若错误为return语句,则要注意以下几点:1)首先看是不是正确书写return关键字;2)然后看是不是缺少分号,若是则加上分号即可;3)再者判断return后的变量或表达式是否正确;4)函数开头的返回值类型与return 返回类型一致,这种错误需要根据题意来分析,分析返回变量或表达式的值和类型。
4、赋值语句若错误行是赋值语句,则要看赋值是否正确,然后看赋值运算符是否写正确。
5、定义语句若错误行是定义语句,则要注意:1)首先分析变量类型名是否写对, 前后对应;2)然后分析给变量赋初值是否正确;3)若以上均不是,则看是不是少定义了某个变量或少了花括号;int i,sum;6、表达式错误问题:若错误行中有整数1除以某个表达式或变量时,需要double或float类型结果时必须把整数1改为1.0; double a=1/b; b int若变量或表达式是整型时,进行强制类型转换。
二级计算机改错技巧今天来聊聊二级计算机改错的一些实用技巧,相信对于那些经常在编程或者计算机等级考试中被bug折磨的小伙伴们来说,这可是个宝贵的话题。
最近在研究这块儿,发现了一些简单却有效的方法,能帮大家快速定位问题,提高改错效率,咱们就一边聊一边分享吧。
众所周知,二级计算机改错最头疼的就是面对错综复杂的代码,往往看了半天也找不到问题的源头。
我刚开始也是,面对满屏幕的代码像看天书一样,但后来通过实践总结出了几个小窍门。
首先,别一上来就埋头苦改,先大体浏览一遍整个程序结构,这就像搬家前要先规划好怎么摆家具一样,心里有数才能下手。
对了,还有个事儿要说,编码规范超级重要!很多人可能觉得这只是形式上的东西,但实际上它能帮你减少很多不必要的错误。
比如,坚持使用统一的代码缩进,变量命名要有意义,注释要写清楚——这些都是能让你在后期改错时省很多事的好习惯。
你可能会问,那具体到改错过程呢?这时,你可以利用IDE自带的调试功能,设置断点一步步执行,看是哪个环节出了问题。
这就像是侦探查案,一步步追踪线索。
有个小遗憾是,不是所有错误都能轻易通过IDE捕捉到的。
有时候,逻辑错误很难一眼看穿。
这时,我就把代码简化到一个最小可复现问题的版本,这样更容易聚焦问题本身。
讲真,一开始我也不知道这招,走了不少弯路。
还有啊,别忘了检查边界条件和特殊情况,比如除数为零、数组越界之类的,这些往往是第一个被排除但又是最容易出错的环节。
说到这里,我想起有个经典的改错案例是关于字符串拼接的错误。
原代码中直接将两个有null可能性的字符串进行"+"操作,导致运行时错误。
我当时的处理方式是先检查每个字符串是否为空,或者使用更安全的字符串操作方法,比如利用"StringBuilder"。
这些技巧虽然简单,但效果杠杠的,能大大提升程序的健壮性。
老实说,计算机改错没有一劳永逸的方法,每个错误都有其独特性。
但掌握一些基本原则和工具使用,会让你在改错的路上更加得心应手。
1.调试C程序时常见的错误类型分析一般情况下,错误主要分为两大类:一、语法错误。
对于这种错误,用编译器很容易解决。
所以,改错题的第一步是先编译,解决这类语法错误。
下面总结了二级C 语言上机改错题中常见的语法错误:(1)丢失分号,或分号误写成逗号。
(2)关键字拼写错误,如本来小写变成大写。
(3)语句格式错误,例如for语句中多写或者少写分号。
(4)表达式声明错误,例如:少了()(5)函数类型说明错误。
与main()函数中不一致。
(6)函数形参类型声明错误。
例如:少*等。
(7)运算符书写错误,例如:/写成了\。
二、逻辑错误,或者叫语义错误,这和实现程序功能紧密相关,一般不能用编译器发现。
对于逻辑错误可以按这样的步骤进行查找。
(1)先读试题,看清题目的功能要求。
(2)通读程序,看懂程序中算法的实现方法。
(3)细看程序,发现常见错误点。
2.改错题的改错方式总结,当然这些总结只能对大部分改错行有效。
1、若错误行是函数首部,可分为以下几种情况:A、该行最后若有分号则删除,中间若有分号则改成逗号B、形参类型不一致的问题,特别是指针类型,若后面用到某形参时有指针运算则该形参必为指针类型;若形参是二维数组或指向m个元素的指针变量,则第二维的长度必须与main中对应数组的第二维长度相同C、函数类型不一致的问题,若函数中没有return语句则函数类型为void,若有return语句则函数的类型必须与return 后变量的类型一致。
2、若错误行是if或while语句,则首先看有没有用小括号将整个表达式括起,若没有则加上小括号。
3、若错误行中有if、while、for则要特别注意条件表达式的错误问题:A、指针变量的应用,若表达式中有指针变量且没有指针运算符,则加上指针运算符B、若条件表达式中只有一个等于号,则改成两个等于号,若为其它比较运算符则一般是进行逆转或加一个等于号C、for中要用分号分隔表达式,而不是用逗号4、语法错误A、语句缺少分号,若错误行中有语句没有用分号结束,则加上分号。
计算机等级考试改错题的常见错误类型及应试技巧文 静一、概述由于V isual Basic语言的界面友好、功能强大,很多学校都选择其作为二级考试的语种,作为检验非计算机专业学生编程能力的一个手段。
江苏省计算机二级考试分为理论考试和上机考试两个部分。
上机考试包含两道题目,改错题重在考察考生程序的阅读理解能力及各知识点的掌握,编程题侧重程序的结构与算法。
二、解题步骤首先将试题给出的代码原样输入到计算机中。
输入代码时采用缩进格式。
考试并不对代码做格式上的具体要求,但缩进格式显得程序代码条理清晰、结构明确,有助于考生阅读理解并检查程序代码。
代码输入完毕后,按照题目所给出的工程名和窗体名保存至指定路径。
上机考试采用按步给分,即使最后考生不能完全找出所有错误并给予正确修改,评卷老师也会根据代码的完整性、整洁性及保存情况适当给分。
然后阅读考题要求,了解本程序需要完成的功能,考生自己心中形成初步的算法和结构。
再仔细阅读原程序。
先阅读!通用声明∀段,然后根据事件发生先后及通用过程的调用顺序通读程序。
运行程序,可以先将一些语法错误检查出来并加以改正。
另外,在考试过程中,考生应该养成及时保存的好习惯,单击工具栏上的保存图标即可。
三、语法错误和运行错误所谓语法错误是指由于违反了语言有关语句形式或使用规则而产生的错误。
所谓运行错误是由于试图执行一个不可进行的操作而引起的。
这两类错误在程序运行时,都会被系统检测出来。
(一)定义语句选择错误。
在2002年(春)上机试卷(02)的改错题中,原程序在窗体的!通用声明∀段有如下代码: Op tion Exp licitPub lic a(9)A s Integer由于Pub lic关键字只能在标准模块的声明段中定义全局级数组,此处应改为Pr ivate关键字或者D i m关键字。
(二)变量或数组的重复声明。
如2001年(秋)上机试卷(01)的改错题中,在名为change的子程序过程中,定义了动态数组A,与形参数组A同名,产生了在同一范围重复声明的错误。
二级考试机试个人心得第一的填空题:应当注意填写的答案尽量简洁,并且要标准。
因为电脑改试卷是看你的答案是否和标准答案一样,是一样就可以都分。
有一点不一样就算错的。
有时候我们把空填完后编译运行结果能对的上,但是交卷却是错的。
所以填写答案一定要注意简洁,标准。
第二的改错题:有很多时候改错题就是语法错误,所以我建议做改错的第一步就是编译运行。
如果语法没有错误,再读题。
第三的程序设计题:这一题电脑是这样改答案的:当把程序设计好保存之后,计算机就会将文件夹里面的IN文件里的数据一一的对你设计好程序进行测试,在这里就会出来一些结果并保存在OUT文件里面,这时电脑就将OUT里面的文件和答案对比如果是一样的,就认为你把这题做对了。
所以如果我们对程序设计题实在不会做的时候就可以用用这方法:(说明:这是在实在不会做的情况下使用!!!!而且我只是在模拟二级光盘上能这样做出来,不知道在真正考试中是否可以,我们班有同学在E座补二级课的,应该听过那老师说吧,听那老师说09年能用,10年又用不了,在这里这方法只能算偏方吧,不像那老师说的什么万能钥匙,)1:登录本题为光碟上55套题。
这就是程序设计题了!接着双击C:WEXAM\33150001;就会出现如下:注意第三行的IN文件:并打开:这就是验证数据了,当你的程序设计好了,计算机就用这些数据对你设计的程序进行验证。
现在开始讲解方法(这方法只能针对部分题):首先找到prog1.c并以VC++方式打开。
打开结果如图:然后进行编译运行,结果如图,这时我们打开文件C:WEXAM\33150001。
可以看到生成了一OUT文件,将它打开;这里就结果数据,如果这里的数据和答案一样,计算机就认为你做对了。
本题所要设计的程序的功能就是输出最高分数,所以我们江IN文件的数据进行比较,并将结果直接在OUT文件里面填写保存,注意填写的格式得和题目要求相符合。
这里的填写格式其实你打开OUT文件是就有提示了.然后对数据处理如图;程序功能是找到最高分,所以将IN文件里的数据的最高分找到并写在OUT文件里面。
计算机二级C语言程序修改题解题思路计算机二级C语言程序修改题解题思路12通信3班盛伟上次计算机二级缺几分及格,所以只能参加今年3月份的二级考试了。
我认认真真的做了50套程序改错题,这里我总结了一些对于此题解题的经验与想法,过级的略过,没过级的大家不妨看看,希望对大家有用哦!首先大家有没有注意到每套程序改错题中到底哪里错了,在哪里改,这是个关键,也是我们需要思考的驻点。
我可是真的发现了规律,当然这个规律我去年9月份备考二级的时候就已经发现了。
请看下面。
(每套题都是这样)例如:/***************found***************/d=d\10;(这就是错误的所在处,改错就在此处改)改为d=d/10;在这里我们将/***************found***************/称为错误栏,那么每道题的错误处就在这个错误栏的下面,改正就好了。
当然到底怎么改,改的过程我们需要注意什么问题,我想这是我们大家都很关心的问题,那就由我为大家说说解题思路吧。
我觉得第一步大家还是得锁定错误所在处,接着就应该看是否出现那些不易发现的“低级错误”,其实往往就是这些错误却很容易被我们忽略。
这点我为大家总结了一些,供大家复习所用。
我以例子的形式给大家展现出来:(1)符号错误:1.if(t==0)被写成if(t=0) 2.d=d/10;被写成d=d\10;(2)大小写混乱:3.if(*a)被写成If(*a) 4. s=s+(double)a/b;被写成s=s+(Double)a/b; 5.前文定义了int y,而下文却写成了Y=1;(3)漏加标点符号:6.printf(“%c” *a);错误在于没有加上逗号,应该改为printf(“%c”,*a);7.for语句中有两个分号,但是题目往往会写成两个逗号,这是大家需要注意的地方。
8.漏加分号如:result *=n-- 错误就在于末尾没有加上分号,应该改为result *=n--;9.多加分号如在if语句后面加上分号也是错误的。
全国计算机等级考试题型复习资料一、程序填空题【解析】该类型主要考察学员对一个C程序的整体把握能力。
首先须通读整个源程序,了解程序的功能后试着边填空边调试,分析输出结果,以找到正确答案。
因此,不像程序修改题那么简单。
【程序填空题的特点和注意事项】(1)程序填空的试题中通常包含三个空需要填写。
(2)试题中用"******found******/"来提示在下一行或下二行注明填空的位置及编号,如___1___。
(3)程序填空考核对程序的整体把握,出题点可能是:for循环语句的初始化或条件判断、函数返回值、if语句的条件判断、链表中指针如何移动、文件操作相关函数的参数等。
(4)特别要注意的是:只能在填空的位置填写语句或表达式,不要增行或删行,不要改动程序行的顺序,更不要改动程序的结构。
【建议答题步骤】(1)首先仔细审题,了解试题的要求,看清题目给出的输入和输出例示,以便检验程序运行的结果是否正确。
(2)审视"/******found******/"所在函数,根据题义理解程序所采用的基本算法,做到心里有数。
(3)填好空后对测试程序进行检查是否有语法错误。
当编译提示有语法错时,可参考编译提示来查找并改正错误。
(4)当不再出现语法错时,执行程序,按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。
(5)修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。
二、程序修改题【解析】该类型主要考察学员对C程序部分结构或算法的分析和理解能力。
因此,对学员的知识把握能力要求不高,通常可以借助计算机帮我们改错(仅限语法错误)。
若非语法错误,则需对程序边调试边找错,分析输出结果,找出错误所在并改正。
【程序填空题的特点和注意事项】(1)改错的试题中通常包含两个(或三个)错误需要修改。
(2)试题中用"******found******/"来提示在下一行(或下面第二行)有错。
计算机二级C语言上机(南开大学)100题程序填空题1 补充fun函数,fun函数的功能是求10的阶乘。
n>1 n-1 n==12 在函数fun的横线上填写若干表达式,使从键盘上输入一个整数n,输出数列是一种整数数列,其中每数等于前面两数之和n==o n==1 fun(n-1)+fun(n-2)3 补充函数fun(char*s),该函数的功能是把字符串中的内容逆置s+i<s+n-1-i*(s+i)=(s+n-1-i) *(s+n-1-i)=t4 补充函数fun,他的功能是计算并输出n(包括n)以内能被3或7整除的所有自然数的倒数之和i<=ni%3==0||i%7==0 1.0/i5 功能是求1/2的圆面积,函数通过形参得到圆的半径,函数返回1/2的圆面积r r*r &x6 功能是计算并输出下列级数的前N项合Sn,直到Sn大于q为止,q 的值通过形参传入<= n++return s7 函数fun的功能是统计长整数n的各个位上出现数字1.2.3的次数,并通过外部(全局)变量c1.c2.c3返回主函数n%10 break break8 补充main函数,功能是从键盘输入一组整数,使用条件表达式找出最大的整数,当输入的整数为0时结束&num[i]max<num[i]? num[i]!=09 给定程序的功能是分别统计字符串中大写字母和小写字母的个数(*a)++ (*b)++ upper,lower10 补充main函数,功能是从键盘输入3个整数,然后找出最大的数并输出。
max=a max=b max=c11 函数fun的功能是把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动1 s[k] c12 补充fun函数,功能是字符串tt中的大写字母都改为对应的小写字母,其他的字符不变。
tt[i]<='Z'tt[i]+=32 tt13 补充fun函数,功能是判断一个数是否为素数。
1. 程序修改题给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值:y=1+1/(2*2)+1/(3*3)+1/(4*4)+…+1/(m*m)例如:若m中的值为5,则应输出1.463611。
请改正程序中的错误,使其能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <stdio.h>double fun(int m){double y=1.0;int I;/**********found**********/for(i=2;i<m;i++)/**********found**********/y+=1/(i*i);return(y);}main()y+=1/(i*i)没有改正for(i=2;i<m;i++)没有改正2.程序修改题给定程序中,函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
例如,当字符串中的内容为“abcdabfabcdx”、t中的内容为“ab”时,输出结果应是abcdx。
当字符串中的内容为“abcdabfabcdx”、t中的内容为“abd”时,则程序输出未找到信息not be found!。
请改正程序中的错误,使其能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <stdio.h>#include <string.h>char *fun(char *s,char *t){char *p,*r,*a;/**********found**********/a=NULL;while(*s){p=s;r=t;while(*r)/**********found**********/if(*r==*p){r++;p++;}else break;if(*r=='\0') a=s;s++;}return a ;}main(){char s[100],t[100],*p;printf("\nPlease enter string S :");scanf("%s",s);printf("\nPlease enter substring t :");scanf("%s",t);p=fun(s,t);if(p) printf("\nThe result is :%s\n",p);else printf("\nNot found !\n");}3.程序修改题给定程序中,函数fun的功能是:计算正整数num的各位上的数字之积。
程序改错题一.数学问题用递归算法计算斐波拉契数列中第n项的值。
从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……例如:若给n输入7,该项的斐波拉契数值为13。
{/**********found**********/switch(g);/*改为;去掉*//**********found**********/case 1 ;case 2 : return 1 ;/*改为case 1:*/ }二.一维数组给定程序MODI1.C中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求复制三个字符之后插入一个空格/**********found**********/b[k]=p;/*改为b[k]=*p*//**********found**********/b[k++]=" "; }/改为b[k++]=‟‟;3.给定程序MODI1.C中函数fun的功能是:找出一个大于形参m且紧随m的素数,并作为函数值返回。
/**************found**************/if (i % k != 0)/*改为if(i%k==0)*//**************found**************/if (k<i)/*改为(k==i)*/4.给定程序MODI1.C中函数fun的功能是:删除p所指字符串中的所空白字符(包括Tab字符、回车符及换行符)。
输入字符串用‟#‟结束输入/************found************/For (i = 0,t = 0; p[i] ; i++)/*改为for(i=0,t=0;p[i];i++)*//************found************/c[t]="\0";/*改为c[t]=‟\0‟*/5.给定程序MODI1.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回.#include <stdio.h>/**********found**********/char fun(char *s, char *t)/*改为char *fun(char *s,char *t) *//**********found**********/(*ss)++;/*改为ss++ *//**********found**********/(*tt)++;/*改为tt++ */ }6.给定程序MOID1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。
/**********found***********/p=(NODE )malloc(sizeof(NODE));/*改为(NODE *)*/ /**********found***********/return p;/*改为return h*/}printf("\n");}main(){ NODE *head;head=Creatlink(8,22);outlink(head);}7.给定程序MODI1.C中函数fun的功能是:利用插入排序对字符串的字符按从小到大的顺序进行排序。
插入法的基本算法是:先对字符串中的头两个元素进行排序。
然后把第三个字符插入到前两字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。
待排序的字符串已在主函数中赋予。
/**********found**********/n=strlen[ aa ];/*改为n=strlen(aa)*//**********found**********/c=aa[i];/*改为ch=aa[i]*/8.给定程序MOID1.C中函数fun的功能是:求出两个非零整数的最大公约数,并作为函数值返回。
例如,若给num1和num2分别输入49和21,则输出的最大公约数为7/************found************/t=a; b=a; a=t;/*改为t=a;a=b;b=t*/ }/************found************/return(a);/*改为return (b);*/}9.给定程序MODI1.C中函数fun的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。
例如,若输入2 则输出1 22 4/**************found**************/fun(int **a, int m)/*改为fun(int (*a)[10],int m)*//**************found**************/a[j][k] = k * j ;/*改为a[j][k]=(k+1)*(j+1)*/}10.给定程序MODI1.C中函数fun的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+…+f(n)的值。
例如:当n为5时,函数值为:10.407143。
f(x)函数定义如下:┌(x+1)/(x-2) x>0且x≠2f(x)= ┤0 x=0或x=2└(x-1)/(x-2) x<0/************found************/f( double x)/*改为double f(double x)*//************found************/return s }/*改为return s;*/11.给定程序MOID1.C中函数fun的功能是:找出100至n(不大于1000)之间三位数字相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。
/**************found**************/k=n;/*改为k=i*//**************found**************/c=k%10/*改为c=k%10;*/12.给定程序MODI1.C中函数fun的功能是:交换主函数中两个变量的值。
例如:若变量a中的值原为8,b中的值为3。
程序运行后a中的值为3,b中的值为8。
/*********found**********/int fun(int x,int y)/*改为int fun(int *x,int *y) *//*********found**********/t=x;x=y;y=t;/*改为t=*x;*x=*y;*y=t */}13.给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s 中的数为:7654321,t中的数为:642。
/************found************/void fun (long s, long t)/*改为void fun(long s,long *t) *//************found************/while ( s < 0)/*改为while(s>0)*/14.给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。
函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来并且作为函数值返回。
/***********found**********/p=h;/* 改为p=h->next *//***********found**********/p=h->next;/*改为p=p->next */ }15.给定程序MODI1.C中函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。
例如:若k=10,则应输出:3628800。
long fun ( int k){/************found************/if k > 0 /*改为if(k>0) *//************found************/else if ( k=0 )/*改为else if( k==0) */16.给定程序MODI1.C中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。
(这里的”单词”是指由空格隔开的字符串)。
例如,若输入”I am a student to take the examination.”,则应输出”I aM A studenT tO takE thE examination.”{/**********found***********/if( p == ' ' )/*改为if(*p==‟ ‟) *//**********found***********/* (p-1) = toupper( *( p - 1 ) ) /* 改为此句末尾加; */ 17.给定程序MODI1.C中函数fun的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。
例如:当字符串中的内容为:”abcdabfabcdx”,t中的内容为:”ab”时,输出结果应是:abcdx。
当字符中内容为:”abcdabfabcdx”,t中的内容为:”abd”时,则程序输出未找到信息:not be found!。
/************found************/a = Null;/*改为a=NULL *//************found************/if ( r == p ) { r++; p++; }/*改为if(*r==*p) {r++;p++;} */18.给定程序MODI1.C中函数fun的功能是:求整数x 的y次方的低3位值。
例如:整数5的6次方为12625,此值的低3位值为625。
/**************found**************/for(i=1; i<y; i++)/*改为for(i=1;i<=y;i++) *//**************found**************/t=t/1000;/*改为t=t%1000; */19.给定程序MODI1.C中函数fun的功能是:由形参给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数的个数。
例如,n=8时,输入:193.199,195.673,195.757,196.051,196.092,196.596,196.5 79,196.763所得平均值为:195.838745,在平均值以上的实数个数应为:5/************found************/int j, c=0; float xa=0.0;/*改为{ int j,c=0;float xa=0.0;*//************found************/if (x[j] => xa)/*改为if(x[j]>=xa) */20.给定程序MODI1.C中函数fun的功能是:将tt所指字符串的小写字母都改为对应的大写字母,其它字符不变。