程序改错
考试程序改错常见错误
分语法错误和算法错误(思路错误)1、语法错误比如:实体名、结构体名、信号、变量、常量名不能用QARTUESII里面的关键字;变量只能在进程里面定义和使用;顺序语句(常用的IF、CASE语句都要放到PROCESS中)只能在进程和子程序中使用进程没有敏感信号表;没有打开库:比如:最常用的:IEEE.STD_LOGIC_1164.ALL;端口定义间没有加分号分开,括号少半边之类。
端口模式不对,输入可以给别的信号变量赋值,可以读进来比较之类,输出,只能被人给他赋值,不能读进来做比较,双向口,可以读入读出,但是描述是其输入输出要同时描述,一般不这么做,而是内部定义信号(代替)——他在芯片内部可读入读出(即可以给别人赋值,也可以接收别人的赋值,而且不要同时描述输入输出特性),缓冲端口,只能把自己的输出读进来,其输入特性与输入端口一样。
常量是全局变量,也要想信号一样不能在进程中定义等;调用底层设计实体,没有声明,或是例化时,管脚没有对准,或是管脚映射时,映射符号=>弄反了成<=符号了;赋值符号或方向搞错了,是有输入特性的赋值给有输出特性的,既信息传的方向出错。
在同一进程中,对同一信号多次赋值,只能是最后一次生效。
因为对信号的赋值不是立即完成的,而是在进程结束时完成。
IF、CASE 、PROCESS缺少收尾的END IF、CASE、PROCESS语句等等,特别是IF语句,多少个IF语句,就要多少个END IF;来结束,所以要看懂if语句常用类型和描述对应。
2.算法错误主要是要掌握常用数字电路模块,比如:数据选择器,译码器,全加器,计数器,移位寄存器等,题目:比如说是译码器,他描述是,数据端跟地址端弄反了。
算法错误,是积累的过程,不容易一下掌握。
程序改错题给学生登记成绩类似的题目
程序改错题给学生登记成绩类似的题目摘要:1.介绍程序改错题的背景和重要性2.分析程序改错题的类型和特点3.提供解题思路和方法4.总结注意事项和技巧正文:随着信息技术的发展,越来越多的高校和职业院校在计算机课程中引入了程序设计课程。
在这门课程中,程序改错题是一种常见的题型,它既能检验学生对编程语言的掌握程度,也能培养学生的逻辑思维能力和问题解决能力。
本文将分析程序改错题的类型和特点,并提供一些解题思路和方法。
一、程序改错题的类型和特点1.类型:程序改错题可以分为在线判题和人判两种类型。
在线判题是通过专门的评测系统进行自动评分,而人判则需要老师或同学相互检查代码并进行评分。
2.特点:程序改错题具有以下几个特点:(1)题目设置:题目通常包含一个或多个错误,要求学生在给定的时间内找出并修改错误。
(2)评分标准:题目一般会给出评分规则,如修正一个错误得一定分数,提交代码后即时显示得分。
(3)评分范围:题目难度可以涵盖基础到高级,适用于不同层次的学生。
二、解题思路和方法1.仔细阅读题目,理解题意。
在解题前,确保自己掌握了编程语言的基本语法和概念。
2.分析程序结构,从整体到局部。
首先了解程序的功能,然后分析各个模块的作用,最后关注每个变量的值和运算符的搭配。
3.调试代码:在编写代码时,充分利用调试工具,如编译器、调试器等,及时发现和修正错误。
4.善于查找资料:在解题过程中,遇到不懂的地方,可以查阅相关资料,如编程手册、在线教程等。
5.多次尝试:遇到难题时,不要怕失败。
通过多次尝试和修改,逐步完善代码。
6.沟通与协作:与同学或老师分享解题经验,相互学习,共同进步。
三、注意事项和技巧1.熟悉编程语言的基本概念和语法,加强对数据结构与算法的掌握。
2.仔细审题,弄清楚题目的要求,避免盲目编写代码。
3.学会利用调试工具,提高编程能力。
4.保持良好的编程习惯,编写简洁、易懂的代码。
5.善于总结经验,不断提高自己的编程水平。
程序改错完整版---C语言
(一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。
#include "stdio.h"#define N 20void fun(int a[], int n){int i, j, t, k;for (j = 0 ;j < n-1 ;j++){/**********ERROR**********/k = jfor (i = j+1;i < n; i++)/**********ERROR**********/if(a[i] >a[k])/**********ERROR**********/k=j;t = a[k] ;a[k] = a[j] ;a[j] = t;}}main(){int a[N]={9,6,8,3,-1},i, m = 5;printf("排序前的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");fun(a,m);printf("排序后的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");}【参考答案】k = j;【参考答案】if(a[i] < a[k])if(a[k] > a[i])【参考答案】k = i;(二)功能:求广义菲玻那契级数的第n项。
广义菲玻那契级数的前n 项为: 1,1,1,3,5,9,17,31,……项值通过函数值返回 main ( )函数。
例如:若 n = 15,则应输出:The value is: 2209。
#include "conio.h"#include "stdio.h"long fun ( int n ){long a=1, b=1, c=1, d=1, k;/**********ERROR**********/for (k=4; k<n; k++){d = a+b+c;/**********ERROR**********/a=bb=c;c=d;}/**********ERROR**********/return k;}main( ){int n = 15;printf( "The value is: %ld\n", fun ( n ) );}【参考答案】for (k=4; k<=n; k++)【参考答案】a=b;【参考答案】return d;(三)功能:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
程序改错题
程序改错题(注意:每小题只有1行有错误,答题时请指出错误位置并给出改正结果)1.输出计算结果.main(){ int a=b=10;a+=b+5;b*=a+=10;printf(”%d%d\n",a,b);}2.输出计算结果。
#include <stdio。
h〉main(){ float x,y;scanf("%f",x);y=x*56/97;printf("%f\n",y);}3.输出计算结果.main(){ int x=2,y=3;z=(x++,y++);printf("%d”,z);}4.输出运行结果。
main(){ float a,b,c,v;a=2。
0;b=3.0;c=4.0;v=a*b*c;printf("%f\n" ,v)}5.输出运行结果.#include “stdio.h”main(){float r,s;r=5。
0;s=3.14159*r*r;printf("%d\n”,s);}输出程序运行结果。
#include 〈stdio。
h〉main(){ char ch;scanf("%c”,ch);printf(”%d\n",ch);}7.输入一整数判断是否能被13整除。
main(){ int i;scanf(“%d”,i);if(i%13==0) printf(”yes”);else printf("no");}8.输出程序运行结果。
main(){ int a,b;float x,y,z;scanf(”%f%f%f”,&x,&y,&z); a=b=x+y+z;c=a+b;printf("%d%d%d",a,b,c);}9.输出程序运行结果。
#include 〈stdio。
h>main(){ float x,y;scanf("%f",&x);y=2x+10;printf("%f\n",y);}10.输出程序运行结果.main(){ int a,b='B';scanf(”%d”,a);printf("%c,”,b++);printf(”%d\n”,b-a);}下列程序的功能是计算字符串的字符个数.#include ”stdio.h"main(){ char str[80];int s,i=0;gets(str);for(;str[i]!=‘\0’;i++)s++;printf(”%4d\n”,s);}12.给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数. main(){float x[]={23。
程序改错
发生错误后都要回到编辑阶段,分析错误原因,修改C源程序,再重复上述操作,直到程序能得到正确的运行结果,程序才算调试成功。程序发生错误,其原因很复杂。学会调试程序,也是学习C程序设计的重点和难点之一,必须多练、多分析,积累经验。
scanf(“%d”,&n);
while(i<n)
i+=2;
sum+=i;
if(n%2==0) n--;
printf(“输出1+3+5+……+%d=%ld\n”,n,sum);省略号是在中文状态下输入的。
}
第四题:程序功能:定义计算三角形面积的函数。计算公式:
s=(a+b+c)/2
a、b、c为三角形的边长。
{
char str[80]="a*b$c(d!EEE !!a.";
fun(str[80]);
printf("\n");
puts(str);
}
4、下列程序,其功能是:从s所指向的串中,找出包含有t所指字符串的个数。例如:s所指向的串为abcdabfab,t所指字符串为ab,则所求个数为3。请改正程序中的错误,使程序能输出正确的结果。
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
int a[]={1,2,3,4,5,6,7,8,9,10},i=10,n;
if((fp=fopen(“file6.txt”,”w”))==NULL)
程序改错
【程序改错】
功能:求1到20的阶乘的和。
答案:
1). t=1; 或 t=1.0;
2). t=t*j; 或 t*=j; 或 t=j*t;
3). s=s+t; 或 s+=t; 或 s=t+s;
4). printf("jiecheng=%f\n",s);
一半;再落下,求它在第10次落地时,共经过多少米?
第10次反弹多高?
答案:
1). float sn=100.0,hn=sn/2;
2). for(n=2;n<=10;n++) 或 for(n=2;n<11;n++)
3). hn=hn/2;
3). if (i!=k&&i!=j&&j!=k)
【程序改错】
功能:某个公司采用公用电话传递数据,数据是四位的整数,在
传递过程中是加密的,加密规则如下:每位数字都加上5,
然后除以10的余数代替该位数字。再将新生成数据的第一
位和第四位交换,第二位和第三位交换。
x*x+x x<0且x≠-3
f(x)= x*x+5x 0≤x<10且x≠2及x≠3
x*x+x-1 其它
答案:
1). float y;
2). if (x<0 && x!=-3.0)
A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …,
A[n]=1/(1 + A[n-1])
例如:若 n=10,则应输出:a10=0.617977。
48—81套程序改错答案(伍老师)
天天向上班基本讲义(一)程序改错(45—81套)45.12i=5DO WHILE i>=1??ii=i-1ENDDO45.21&&下句有错误CREATE TABLE 工资表(职工号C(8) primary KEY,姓名C(6) ,工资N(10,2)) &&下句有错误INSERT in TO 工资表VALUES ("11020034","宣喧",4500)USE 工资表APPEND FROM 教师表&&下句有错误UPDATE 工资表set工资=工资*1.1 WHERE 工资<3000&&&&下句有错误DELETE FROM 工资表where姓名="Thomas"PACK48.22OPEN DATABASE 宾馆SELECT 客户.客户号,身份证,姓名,工作单位;FROM 客户JOIN 入住on客户.客户号=入住.客户号;WHERE 入住日期IN;( SELECT 入住日期;FROM 客户,入住;WHERE 客户.客户号=入住.客户号and姓名= "姚小敏");in TO TABLE TABC49.3set relation to 商品号into goods_t &&语句1set relation to 订单号into orderitems additive &&语句2if 数量>goods_t.库存量&&语句3skip -n &&语句4replace 库存量with 库存量-orderitems.数量&&语句555.22CLOSE DBFPRIVATE no,moneyUSE scust*下面的一行语句有错误SELECT 顾客号,sum(数量*单价)应付款;FROM order JOIN comm ON order.商品号= comm.商品号; GROUP BY 顾客号;INTO CURSOR lsSELECT scust*下面的一行语句有错误DO WHILE !EOF()no = 顾客号SELECT lsLOCAT FOR 顾客号= nomoney = 应付款SELECT scust*下面的一行语句有错误REPLACE 应付款with moneySKIP +1ENDDOCLOSE TABLERETURN61.13i=2DO WHILE i<=10??ii=i+2ENDDO61.21SELECT 系名,avg(工资) as 平均工资,max(工资) as 最高工资; FROM 教师表,学院表WHERE 教师表.系号= 学院表.系号; group BY 学院表.系号;order BY 3 DESC,2 DESC;INTO table three63.21SELECT 零件名称FROM 零件信息WHERE 零件号IN ; (SELECT 零件号FROM 使用零件;GROUP BY 零件号HAVING COUNT(项目号) = 3) ;ORDER BY 零件名称;TO FILE results66.22*在第2行有一处错误,第3行有两处错误,请改正select p.组别,c.姓名组长,p.姓名组员;from employee p inner join employee c ;on p.组别=c.组别where c.职务="组长" and c.姓名<>p.姓名;order by p.组别68.21&&下句只有一处有错误SELECT 系号FROM 学院表WHERE系名="信息管理" INTO ARRAY a &&下句只有一处有错误USE教师表STORE 0 TO sumSTORE 0 TO num&&下句只有一处有错误SCAN FOR系号=asum=sum+工资&&下句缺少一句num=num+1ENDSCAN?sum/num69.21***在下一行添加一条打开customer表的语句, 然后把"(此处空行)"删除use customer***表没有索引,修改如下语句使之能显示所有“北京”客户的信息SCAN for所在地='北京'? 客户编号,公司名称,联系人姓名ENDSCAN71.22**在下面的程序中,第3、4、12行语句不正确,请修改!*注意:修改时不允许增加或删除行,只能在错误行上进行修改!*USE passKey1 = ALLTRIM(ThisForm.text1.value)Key2 = ALLTRIM(ThisForm.TEXT2.VALUE)LOCATE FOR USER = Key1IF FOUND() AND PASS = Key2WAIT "欢迎使用本系统!" WINDOW TIMEOUT 1thisform.releaseELSEnum = num + 1IF num = 3WAIT "用户名或口令不对,登录失败!" WINDOW TIMEOUT 1THISFORM.RELEASEELSEWAIT "用户名或口令不对,请重输入!" WINDOW TIMEOUT 1ENDIFENDIF73.14i=10DO while i>=1? Ii=i-1ENDDO73.21&&下句只有一处有错误SELECT 课程号FROM 课程表WHERE 课程名="数据结构" in TO ARRAY a&&下句有错误use教师表STORE 0 TO sum&&下句两处有错误SCAN for课程号=a and工资>=4000&&下句有错误sum=sum+1ENDSCAN?sum76.14select 职称级别,基本工资from 职称表where 职称名="教授" IN to dbf prof.dbf ORDER by 基本工资76.21create table职称系数表(职称名c(6),职称系数f(10,2)) &&有错误insert into 职称系数表value ("教授" ,1.4)insert into 职称系数表value ("副教授" ,1.3) &&有错误insert into 职称系数表value ("讲师" ,1.2)insert into 职称系数表value ("助教" ,1.0)SELECT 姓名, 系号,课时*80*职称系数+基本工资as 应发工资;FROM 职称系数表,职称表,教师表; &&有错误WHERE 职称表.职称级别= 教师表.职称级别;and职称表.职称名= 职称系数表.职称名; &&有错误into dbf salary.dbf;order by 系号desc,应发工资三、机考相关命令1、创建数据库:Create Database 数据库名2、修改数据库:Modify Database 数据库名(打开数据库设计器)3、打开数据库:Open Database 数据库名(可以直接用上一条命令)4、关闭数据库:Close Database5、删除数据库:Delete Database 数据库名6、创建表:Create Table 表名(字段结构)7、创建自由表:Create Table 表名Free (字段结构)8、添加表:Add Table 表名(自由表变数据库表)9、移去表:Remove Table 表名(数据库表变自由表)10、打开表设计器:Modify Structure11、增加表中字段:Alter Table 表名Add 字段名12、删除表中字段:Alter Table 表名Drop 字段名13、修改字段名:Alter Table 表名Rename 原字段To 新字段14、修改字段类型及宽度:Alter Table 表名Alter 字段名类型(宽度)15、字段有效性规则:Alter Table 表名alter 字段set check 表达式error ”信息”16、默认值:Alter table 表名alter 字段set default 值17、建立主索引:Alter Table 表名Add Primary Key 字段名Tag 索引名18、建立候选索引:Alter Table 表名Add Unique 字段名Tag 索引名19、建立普通索引:Index on字段名tag 索引名20、打开表:Use 表名21、浏览,修改表:Browse22、关闭表:Use23、插入记录:Insert Into 表名Values (值)24、更新记录:Update 表名Set 字段= ?Where 条件25、逻辑删除(只在记录前加标记,不删除):Delete From 表名Where 条件26、恢复逻辑删除:Recall27、物理删除:①.Pack 只删除带标记的记录②.Zap 物理删除表中全部记录28、追加记录:append from 表名(将结构相同的表的记录追加到另一张表)29、删除表:drop table表名(将表删除)30、建立候选索引:index on字段名tag 索引名candidate31、关闭所有对象:close all32、建立试图:create view 视图名as select……四、表单一、特殊属性46.12:TAB键的次序(Tabindex)49.13:InputMask(输入掩码)数字和正负号用9表示49.14:wait命令格式wait 字符windows timeout 秒数wait str(thisform.text1.value,8,2) window50.12:表单模式(windowstye)50.14:表单数据环境中的表间关联,直接将主表的字段拖动到子表54.13:对齐方式,使用布局工具栏54.14:表单居中:AutoCenter56.11:菜单项间的分割线(在两个菜单项之间插入一个新项,把名字改为\-)列表狂的属性51.22:ColumnCount:列数51.22:Rowsourcetype:文件Rowsource:*.扩展名58.11:对齐方式,使用布局工具栏58.12:Enter键回应(default)58.14:thisform.height = val(thisform.text1.value)59.11:对齐方式,使用布局工具栏59.14:控件无效(enabled)if thisform.text1.value<0mand1.enabled=.f.elsemand1.enabled=.t.endif64.21:计时器的使用66.21:表格控件的使用70.1:对齐方式、Tab键次序71.21:密码掩盖(passwordChar:*)74.174.14:类的使用77.12:Load事件use employee order xm77.13:列表框多重选择(multiSelect)77.14:列表框显示数据78.14:enabled80.1:访问键:(\<C)二、事件和方法、类46.13:新建方法46.14:调用方法47.21:InteractiveChange 事件56.21:新建方法56.21:调用方法57.22:类的创建59.21:类的创建76.22:类的创建和使用三、表单与查询的结合52.22、62.2163.2265.2272.2175.21:日期的处理四、表单与菜单结合1、快捷菜单45.31、顶层表单。
程序改错技巧
为了帮助大家更好地解答程序改错题,在这里对程序中经常出现的错误进行了总结:1、循环条件错误;2、循环变量修改公式错误,即步长错误;以上两种错误见下例:程序功能:求s=1+3+5+7+...直到s>2000为止。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
源程序:Private Sub Command1_Click()Dim I As Integer, s As Longs = 0I = 1Do Until s < 2000s = s + II = I + 1LoopPrint sEnd Sub正确程序:Private Sub Command1_Click()Dim I As Integer, s As Longs = 0I = 1Do Until s > 2000 '循环条件错误s = s + II = I + 2 '步长错误LoopPrint sEnd Sub3、循环语句配套错误;程序功能:计算s=2!+4!+8!。
程序中有两行有错误。
改正错误,使它能输出正确的结果。
源程序:Private Sub Command1_Click()Dim k As Integer, I As IntegerDim s As Long, t As Longs = 0I = 1Do While I <= 3t = 1k = 1While k <= 2 * It = t * kk = k + 1Wends = s + tI = I + 1WendPrint sEnd Sub正确程序:Private Sub Command1_Click()Dim k As Integer, I As IntegerDim s As Long, t As Longs = 0I = 1Do While I <= 3t = 1k = 1While k <= 2 ^ I '循环条件错误。
C语言改错题-含答案
第1题【程序改错】功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。
------------------------------------------------------*/#include <conio.h>#include <stdio.h>#include <string.h>void fun (char *s, char *t){/**********FOUND**********/int i;sl = strlen(s);for (i=0; i<sl; i++)/**********FOUND**********/t[i] = s[sl-i];for (i=0; i<sl; i++)t[sl+i] = s[i];/**********FOUND**********/t[2*sl] = "0";}main(){char s[100], t[100];printf("\nPlease enter string s:"); scanf("%s", s);fun(s, t);printf("The result is: %s\n", t);}答案:1). int i,sl;2). t[i] = s[sl-i-1];3). t[2*sl] = '\0'; 或 t[2*sl] = 0;第2题【程序改错】功能:求出以下分数序列的前n项之和。
和值通过函数值返回main 函数。
2/1+3/2+5/3+8/5+13/8+21/13 ……例如:若n = 5,则应输出:8.391667。
------------------------------------------------------*/#include <conio.h>#include <stdio.h>/**********FOUND**********/fun ( int n ){int a, b, c, k; double s;s = 0.0; a = 2; b = 1;for ( k = 1; k <= n; k++ ){/**********FOUND**********/s = (double)a / b;c = a;a = a + b;b = c;}/**********FOUND**********/return c;}main( ){int n = 5;printf( "\nThe value of function is: %lf\n", fun ( n ) );}答案:1). double fun(int n)2). s = s + (double)a / b; 或 s += (double)a / b; 或 s += a /(double)b; 或s=s+a/(double)b;3). return s;第3题【程序改错】功能:读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。
程序改错示例
程序改错示例(总8页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--程序改错:在修改程序时,不允许修改程序的总体框架和算法,不允许增加或减少语句数目。
练习1:下列程序是将“China”编成密码,规律是:如是大写字母,用原字母后面第4个字母代替原字母,例字母“A”后面第4个字母是“E”,用“E”代替“A”;小写字母用原字母后面第2个字母代替原字母,例如字母“a”后面第2个字母是“c”,用“c”代替“a”。
因此,“China”密码为“Gjkpc”。
SET COLLATE TO "MACHINE"LOCAL mSting,cString,chmString=SPACE(0)cString="China"FOR i=1 TO VAL(cString) ***FOR i=1 TO Len(cString) ch=SUBSTR(cString, 1, i) ***ch=SUBSTR(cString, i,1)IF BETWEEN(ch,"a","z")mString=mString+CHR(ASC(ch)+2)ELSEmString=mString+CHR(ASC(ch)+4)ENDIFENDFORWAIT WINDOW cString+"密码为"+mString练习2:下列程序中的过程(过程名为ren)用来产生n个a~b之间的随机整数,然后将它们以从大到小的顺序存储在数组X中,并分别输出n=10、a=5、b=25和n=20、a=50、b=80时数组X的值。
=ren(10,5,25)=ren(20,50,80)PROC renPARA a,b,n ***PARA n,a,bDIME x(n)x = 0FOR i = 1 TO nx(i) = INT((b-a)*RAND() + a)ENDFORFOR j = 1 TO n-1FOR k = j+1 TO nIF x(k) > x(j)t = x(j)x(k) = x(j) ***x(j) = x(k)x(k) = tENDIFENDFORENDFORFOR i = 1 TO nx(i)ENDFORENDPROC练习3:下列程序用来产生10个30~50之间的随机整数,并将它以从大到小的顺序存储在数组X中。
java程序改错12道及答案
{
/***********FOUND***********/
if(i%2==0)
s=s+i;
i=i+2;
}
/***********FOUND***********/
product=i;
}
System.out.println("偶数之和是 : "+sum);
System.out.println("奇数之积是 : "+product);
3)while(i<=10)或while(i<11)
4)}
/*-------------------------------------------------------
【程序改错】
---------------------------------------------------------
题目2:计算 1/1+1/2+1/3+...+1/100 的值
-------------------------------------------------------*/
public class Prog1
{
public static void main( String args[ ])
{
/***********FOUND***********/
public static void main (args[])
{
/***********FOUND***********/
int n=100,sum=1;
while(n>0)
程序改错题(17道)
程序改错(共17道题)1.求1~100之间数的和。
Private Sub Form_Click()Dim i As Integer, sum As Integersum = 1i = 1Do Until i >= 100sum = sum + ii = i + 1LoopPrint "1-100之间和:"; sumEnd Sub答案:sum=0Do Until i > 1002.求1~100之间数的和。
Private Sub Form_Click()Dim i As Integer, sum As Integersum = 1i = 1Do While i < 100sum = sum + ii = i + 1LoopPrint "1-100之间和:"; sum End Sub答案:sum=0Do While i <= 1003.求1~10之间数的和。
Private Sub Form_Click()Dim i As Integer, sum As Integer sum = 1i = 1Do Until i >= 10sum = sum + ii = i + 1LoopPrint "1-10之间和:"; sumEnd Sub答案:sum=0Do Until i > 104.求1~10之间数的和。
Private Sub Form_Click()Dim i As Integer, sum As Integersum = 1i = 1Do While i < 10sum = sum + ii = i + 1LoopPrint "1-10之间和:"; sumEnd Sub答案:sum=0Do While i <= 105.求4!(4!=1×2×3×4)。
-程序改错部分试题及答案
第1题/*i【程序改错】功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
------------------------------------------------------------------------------------ * #include <stdio. h>ttdefine N 11main(){int i,number,a[N] = {l,2,4,6,8t9t12,15,149,156);printf(^please enter an integer to insert in the array:\n n):/**********FOUND**********/scanf(”%d&number)printf("The original array:\rT);for(i=0;i<N-l;i++)printf (^%5(1 M,a[i]);printf(*\n n);/**********FOUND**********/for(i=N-l;i>二0;i--)if(number<=a[il)/**********FOUND**********/a[i]=a[i-l]:else{a[i+l]=number;/**********FOUND**********/exit;}if(number<a[0]) aL0]二number;printf(^The result array:\n”);for(i=0;i<N;i++)printf(n%5d w,a[il);printf(H\n H);}第2题/♦ ------------------------------------------------------------------------------------ 【程序改错】功能:求如下表达式:S = 1 + ——+ ——+ .................. + ------------1+2 1+2+3 1+2+3+ ......... +n------------------------------------------------------------------------------------ */ #include <stdio.h>main()int n;double fun ();printf ("Please input a nilmber:R):/**********FOUND**********/print("^d^.n);printf(H%10. 6f\n w,fun(n));}/♦♦********FOUND**********/fun(int n){int i,j,t;double s;s=0;/**********POUND**********/while(i=l;i<=n;i++);{t=0;for(j=l;j<=i;j++)t=t+j;/ **********P*OL1ND**********/=s+l/t;}return s;}第3题/* ---------------------------------------------------------- 【程序改错】功能:判断m是否为素数,若是返回1,否则返回0。
第四课:如何修改程序中的错误
二、程序中的常见错误
7、变量名写错
二、程序中的常见错误
8、逻辑错误
第五课 如何修改程序中的错误
本次课程目标
一、学习查找程序中的错误 二、程序中的常见错误分析
一、学习查找程序中的错误
一、学习查找程序中的错误
1. 运行>编译时,系统会帮我们找出程序中的语法错误(书写错误) 2. 系统会指出出错的大致位置(本行,或上一行,或附近位置) 3. 要学会看错误提示(可以借助翻译软件或者搜索引擎)
二、程序中的常见错误
1、语句末尾丢分号
二、程序中的常见错误
2、英文单词包括大小写
二、程序中的常见错误
ቤተ መጻሕፍቲ ባይዱ3、使用了中文(全角符号)
二、程序中的常见错误
中 文
3、使用了中文(全角符号) 的
: “” ()
二、程序中的常见错误
4、<<或>>方向错误
二、程序中的常见错误
5、{ }不配对
二、程序中的常见错误
计算机二级C上机:程序改错题
计算机二级C上机:程序改错题计算机二级C上机:程序改错题为了使广大考生在备战计算机等级考试时,更快的掌握相应知识点,下面是店铺搜索整理的计算机二级C上机:程序改错题,供参考练习,预祝考生们考出自己理想的成绩!程序改错题使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为150200注意:错误的语句在//******error******的下面,修改该语句即可。
提示:定义Numl为一个整型数据位长的`变量。
试题程序:#include//******error******struct{//******error******intNuml:1;intNum2;}MyStruct;voidmain(){MyStructmstr;mstr.Num1=150;mstr.Num2=15;//******error******int*ptr=&mstr.Numl;cout<<*ptr<<endl;*ptr=200;cout<<*ptr<<endl;}答案:(1)“typedefstruct”。
(2)“intNuml:32;”或“intNuml;”。
(3)“int*ptr=(int*)&mstr;”。
【解析】第1处是定义结构体,结构体定义的一般形式为struct(结构体名>{<成员列表>}(变量名列表);程序当中定义结构体名放在后面,MyStruct为结构体变量类型,相当于typedef为已有的类型定义一个新的类型,第1处应改为“typedefstruct”。
第2处是定义Numl为一个整型数据变量,整型数据位数为32(4字节),因此第2处应改成“intNuml:32;”或“intNuml;”。
ptr为整型数据指针,mstr为MyStruct类型结构变量,两者类型不一致应该做强制类型转换,第3处应改成“int*ptr=(int*)&mstr;”,表示将mstr的地址给ptr,ptr指向MyStruct的第一个域Numl,Numl也是整型,类型一致,故可通过ptr指针来改变Numl的值。
程序改错题答案
}
}
7循环输入x,n,调用递归函数计算,显示x的n次方。
当输入n小于0时,结束循环。
#include <stdio.h>
float f(float x,int n)
{ /******* 1 ******/
if(n==0)
return 1;
else
/****** 2 ******/
scanf("%d",&mm);
for(i=0;a[i]!='\0';i++) /*各字符与mm作一次按位异或*/
a[i]=a[i]^mm;
puts(a);
/*** 各字符与mm再作一次按位异或 ***/
/******** 3 *******/
for(i=0;a[i]!='\0';i++)
/****** 4 ******/
void main()
{ int i,n;
struct axy { float x,y;};
/***** 1 *****/
struct axy*a;
/***** 2 *****/
scanf("%d",&n);
a=(struct axy*) malloc(n*sizeof(struct axy));
for(i=0;i<n;i++)
/******** 3 *******/
if(a[i]==b[j]) break;
/******* 4 ********/
if(j<7)
printf("%d ",a[i]);
复习资料_程序设计改错
程序改错题一个程序可能有多个方面的错误,此处仅归在一个出错的地方语法错误,书写错误/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:输入两个实数,按代数值由小到大输出它们,并在fun() 函数中输出。
(输出的数据都保留2位小数)------------------------------------------------------*/#include <stdio.h>fun(){/**********FOUND**********/float tfloat a, b ;scanf("%f %f",&a,&b);/**********FOUND**********/if(a<b){t=a;a=b;b=t;}/**********FOUND**********/printf("%5.2f ,%5.2f\n",&a,&b);}main(){fun();}答案:1、float t;2、if(a>b)3、printf("%5.2f, %5.2f\n",a,b);/*------------------------------------------------【程序改错】---------------------------------------------------功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
------------------------------------------------------*/#include <stdio.h>#define N 11main(){int i,number,a[N]={1,2,4,6,8,9,12,15,149,156};printf("please enter an integer to insert in the array:\n");/**********FOUND**********/scanf("%d",&number)printf("The original array:\n");for(i=0;i<N-1;i++)printf("%5d",a[i]);printf("\n");/**********FOUND**********/for(i=N-1;i>=0;i--)if(number<=a[i])/**********FOUND**********/a[i]=a[i-1];else{a[i+1]=number;/**********FOUND**********/exit;}if(number<a[0]) a[0]=number;printf("The result array:\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}答案:1、scanf("%d",&number);2、for(i=N-2;i>=0;i--)3、a[★i★+★1★]=a[i];4、break;/*-------------------------------------------【程序改错】----------------------------------------------功能:以下程序把两个数按由大到小的顺序输出来.------------------------------------------------------*/#include <stdio.h>/***********FOUND***********/swap( int *p1,*p2){int p;p=*p1;*p1=*p2;*p2=p;}main( ){int a,b, *p,*q;printf("input a,b:");/***********FOUND***********/scanf("%d%d",a,b);p=&a;q=&b;if(a<b)swap(p,q);printf("a=%d,b=%d\n",a,b);/***********FOUND***********/printf("max=%d,min=%d\n",p,q);}答案:1、swap( int *p1,int *p2)2、scanf("%d%d",&a,&b);3、printf("max=%d,min=%d\n",*p,*q);输入、输出语句错误/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:在一个一维整型数组中找出其中最大的数及其下标。
C语言程序改错题
C语言程序改错一、程序改错共 138 题(共计 1380 分)━━━━━━━━━━━━━━━━━━第 1 题(10.0 分)/*------------------------------------------------------ 功能:根据整型形参 m,计算如下公式的值:y=1+1/3+1/5+1/7+...+1/(2m-3)------------------------------------------------------*/ #include "stdio.h"double fun(int m){/**********FOUND**********/double y=1int i;/**********FOUND**********/for(i=3; i<m; i++)/**********FOUND**********/y+=1.0/(2i-3);return(y);}void main(void){int n;clrscr();printf("Enter n: ");scanf("%d", &n);printf("\nThe result is %1f\n", fun(n));getch();}答案:1). double y=1;2). for(i=3; i<=m; i++) 或 for(i=3; i<m+1;i++)3). y+=1.0/(2*i-3);第 2 题(10.0 分)/*------------------------------------------------------ 功能:用选择法对数组中的 n 个元素按从小到大的顺序进行排序。
------------------------------------------------------*/ #include <stdio.h>#define N 20void fun(int a[], int n){int i, j, t, p;for (j = 0 ;j < n-1 ;j++){/**********FOUND**********/p = jfor (i = j;i < n; i++)/**********FOUND**********/if(a[i] >a[p])/**********FOUND**********/p=j;t = a[p] ;a[p] = a[j] ;a[j] = t;}}main(){int a[N]={9,6,8,3,-1},i, m = 5; printf("排序前的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");fun(a,m);printf("排序后的数据:") ;for(i = 0;i < m;i++)printf("%d ",a[i]);printf("\n");getch();}答案:1). p = j;2). if(a[i] < a[p]) 或 if(a[p] > a[i])3). p = i;第 3 题(10.0 分)/*------------------------------------------------------ 功能:编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。
程序阅读、改错并调试出正确结果
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、语句缺少分号,若错误行中有语句没有用分号结束,则加上分号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
********FOUND*******
x = y y = x
Else
********FOUND*******
else if end if
********FOUND*******
For x=3 To n\2 Step 2
********FOUND*******
If x=0 Then If nflag(x) Then
y=n-x
********FOUND*******
If nflag(x) Then If nflag(y) Then
1 下面函数的功能是:求变量s(s=a+aa+aaa+aaaa+…….)的值。其中,a是一个0-9的数字,总共累加a项。例如,当a=3时,s=3+33+333(共累加3项)。
s=a
********FOUND*******
t=1 t=a
For i=2 To a
Private Sub Form_load()
********FOUND*******
Cmdend.Enabled=True Cmdend.Enabled= False
End Sub
********FOUND*******
For I =0 To n-1 For I =1 To n-1
Input#1,Text1 Write#1,Text1
5 本程序将一个大于100的偶数n分解为两个素数之和,其中nflag逻辑函数用于判断自然数x是否为素数
Private Sub Form_Click()
Dim n As Integer, x As Integer ,y As Integer
n=Val(InputBox(“请输入一个大于100的偶数”,”输入数据”,100))
For i =1 To 7 For i=1 To 7 Step2
s=s+fact(i)
********FOUND*******
Public Function fact() Public Function fact(ByVal n As Integer )
********FOUND*******
If List1.ListIndex=0 Then Exit Sub If List1.ListIndex=-1Then Exit Sub
********FOUND*******
Command3.Caption=”修改” Command3.Caption=”修改确认”
For j =1 To 5 For j = 1 To i
Print”*”
********FOUND*******
Next I Next j
Next i
End Sub
4 在窗体上有两个命令按钮和一个文本框,名称分别为村民dstart(“开始”),cmdend(“结束”)和Text1.文本框Text1中的字符个数不超过200个.程序刚开始运行时,”结束”按钮成灰色,单击”开始”按钮后,将文本框Text1.Text中的字符按其ASCII码值由大到小自左而右重新组合,并在窗体上输出 重组后的字符串,同时使”结束”按钮能响应而”开始”按钮不能响应.
Command4.Caption=”退出”
Sy=List1.ListIndex
********FOUND*******
If sy >0 Then If sy>=0 Then
********FOUND*******
List1.RemoveItem List1.RemoveItem sy
********FOUND*******
t=t+a t=t*10+a
s=s+t
********FOUND*******
Calc(i) Calc i
2 下面程序的功能是将一个整数转化为数值字符串,例如123,转化为“+123”,-123转化为“-123”。
Private Sub Form_Click()
Cls
Dim i As Integer
Dim j As Integer
********FOUND*******
For i = 1 To 7 For i =1 To 5
********FOUND*******
n=n\10
********FOUND*******
count =1 count = count + 1
3 请根据下列描述编写购物优惠程序。某商场为了加速促成商品流通,采用购物打折的优惠办法,每位顾客一次购物(1)在100元以上者,按九五折优惠;(2)在200元以上者,按九折优惠;(3)300元以上者,按八折优惠;(4)500元以上者按七折优惠。在窗体上添加两个文本框和一个命令按钮,要求在Text1中输入购物商品总金额,单击命令按钮,在Text2中输出优惠价。
Loop
6 本程序功能用于将学生学过得单词在列表框中显示出来。现要完成:
单击“增加单词”按钮,将文本框Text1.Text中“删除单词”按钮,删除列表框中被选中的项并显示列表框中的单词数;
单击“全部清除”按钮,删除列表框的全部选择项并显示列表框中的单词数;
Dim t as Integer,i as Integer
********FOUND*******
Fact=I fact=t
2 求s=2!+4!+6!+8!,阶乘的计算用Function过程fact实现
Private Sub Form_Click()
Dim as Long
********FOUND*******
fact=I Fact=t
End Function
3 程序功能为打印下列图形:
*
**
***
****
程序改错
有情提示 I的大写 自己在VB中改下本人建议尽量别粘贴复制
1 求s=1!+3!+5!+7!,阶乘的计算用Function过程fact实现
Private Sub Form_Click()
Dim i as Integer, s as Integer
********FOUND*******
p=I
For j=I+1 To n
********FOUND*******
If a(p)<a(j) Then j=p If a(p)<a(j) Then p=j
Next j
If p<> Then t=a(I): a(I)=a(p): a(p)=t
Dim i as integer, s as Long
********FOUND*******
For i=2 To 8 For i=2 TO 8 Step 2
s=s+fact(i)
********FOUND*******
Public Function fact() Public Function fact(ByVal n As Integer )
Text2.Text=x Text2.Text=y
4 列表框应用程序。要求从文本框中输入课程名称,然后按“添加”按钮,把姓名添加到列表框中;当选择列表框中某一项后,按“删除”按钮,则从列表框中删除该项;当选择列表框中某一项后,按“修改”按钮,把列表框中选取的项送往文本框且“修改”按钮变为“修改确认”。在文本框的内容修改好后,按“修改确认”按钮,再把文本框中修改后的信息送到列表框且“修改确认”按钮变为“修改”。
********FOUND*******
Input#0,A Input#1,A
Text1=text1+A
********FOUND*******
Close#0 Close#1
********FOUND*******
Text2.Text=Str(List1.ListCount)
********FOUND*******
List1.RemoveItem List1.Clear
Text2.Text=CStr(List1.ListCount)
7 本程序求3~100之间的所有素数学(质数)并统计个数;同时将这些素数从小到大一次写入顺序文件E:\dataout.txt;素数的个数显示在窗体Form1上。
********FOUND*******
Command3.Caption=”修改确认” Command3.Caption=”修改”
5 使用顺序文件读写方式编写一个简单的记事本应用程序,基本逻辑是:假设在考生目录中有一个名为exam.txt的文本文件。当点击“打开”按钮(Command1)时,程序将exam.txt文件中的内容显示在文本框(Text1)中,当点击“新建”按钮(Command2)时,清空Text1中的内容;用户可以再Text1中进行编辑操作,当点击“保存”按钮(Command3)时,将Text1中的内容保存在exam.txt文件中。当点击“退出”按钮(Command4)时关闭本窗体。
Form1.Print n;”=”;x;”+”;y
Exit For
End If
********FOUND*******
If x Mod k=0 Then flag = True If x Mod k=0 Then flag= False
K= k+1
********FOUND*******
If Flag =False Then Count=Count+1 If Flag Then Count= Count +1