计算机程序改错题,及答案
11
*程序名:TEST.prg
*检索选修课程门数等于3门或3门以上,每门课程成绩大于或等于70分的每个学生的
*学号,姓名,性别,平均成绩,最低分和选课门数,并将结果存储到表NEW_TEST中.
*以下程序有三处错误,请改正
OPEN DA TABASE SDB
SELECT STUDENT.学号,姓名,性别,A VG(成绩) 平均成绩,MIN(成绩) 最低分,COUNT(*) 选课门数;
FROM STUDENT,SC;
WHere STUDENT.学号= SC.学号AND 成绩>= 70 ; &&**********Error**********
GROUP BY STUDENT.学号HA VING count(课程号) >= 3; &&**********Error**********
inTO table NEW_TEST &&**********Error********** CLOSE ALL
9
*程序名:dbtest3.prg
*定义一个视图VS1,
*检索选课门数是3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系编号,
*并按平均成绩降序排序.
*以下程序有三处错误,请改正
SET TALK OFF
SET SAFETY OFF
open DATABASE SDB &&****Error***修改本行的语法错误,不许注释掉本行或删除本行
CREATE VIEW VS1
SELECT STUDENT2.学号, 姓名, A VG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数, 院系编号;
FROM STUDENT2, sc; &&*************Error*************
WHERE STUDENT2.学号= SC.学号;
GROUP BY SC.学号HA VING COUNT(课程号) > 3;
ORDER BY 平均成绩desc &&*************Error*************
CLOSE DATABASE
RETURN
i=2
create table four(结果I)
do while i<=1000
if i%3=0
insert into four values(i) &&错误语句请修改
endif
i=i+1 && 请增加一条语句
enddo
create database 学习情况
create table 学生(姓名C(20),学号C(10) primary key) &&有错误
alter table 学生add总分I &&有错误
alter table 学生alter总分set check 总分<=800 and 总分>=0 &&有错误
insert into 学生values ("林红","20100808",788) &&有错误
update 学生set 总分=786 where 学号="20100808"&&有错误
alter table employee alter 性别set check 性别="男" or 性别="女"
SELECT Department.部门名, count(*) as 总人数;
FROM employee_m!department INNER JOIN employee_m!employee ;
ON Department.部门号= Employee.部门;
group by 部门号;
INTO TABLE tone.dbf
SELECT Department.部门名, count(*) as 人数_男;
FROM employee_m!department INNER JOIN employee_m!employee ;
ON Department.部门号= Employee.部门;
where 性别="男";
group by 部门号;
INTO TABLE ttwo.dbf
SELECT tone.部门名, ttwo.人数_男, 总人数-人数_男as 人数_女, tone.总人数;
FROM tone INNER JOIN ttwo ;
on tone.部门名=ttwo.部门名;
order by tone.部门名desc;
INTO TABLE tableone
12
*程序名:dbtest61.prg
*检索同时选修课程号c1和c2的学生的学号
*以下程序有三处错误,请改正
SELECT 学号;
FROM SC ;
WHERE 课程号= 'c1' AND 学号in ; &&************Error************ ( SELECT 学号FROM SC ; &&************Error************
WHERE 课程号= 'c2' ) &&************Error************
CLOSE DATABASE
*程序名:dbtest4.prg
*检索选课门数大于或等于3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系,
*并按平均成绩降序排序,将结果存储到表TEST1中.
*以下程序有三处错误,请改正
SET TALK OFF
SET SAFETY OFF
SELECT STUDENT.学号, 姓名, A VG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数,院系院系;
FROM STUDENT, SCORE;
WHERE STUDENT.学号= SCORE.学号;
GROUP BY STUDENT.学号HA VING count(课程编号) >= 3; &&*********Error************ ORDER BY 平均成绩desc; &&*********Error************
INTO table TEST1 &&*********Error************
RETURN
18 $$75
所有器件的单价增加5元
UPDATE order_detail1 SET 单价=单价+ 5
计算每种器件的平均单价
SELECT 器件号,A VG(单价) AS 平均价FROM order_detail1 group BY 器件号INTO CURSOR lsb
&&查询平均价小于500的记录
SELECT * FROM lsb where平均价< 500
19
&&功能:如果用户输入的用户名和口令一致,则在提示信息后关闭该表单;
&&否则重新输入用户名和口令。
&&**********Error**********************
if thisform.text1.text = thisform.text2.text
wait "欢迎使用……" window timeout 1
&&**********Error**********************
thisform.release
else
wait "用户名或口令不对,请重新输入……" window timeout 1
endif
20
&&使表单的标题为:简单应用
thisform.caption="简单应用"
&&在表格控件中显示order_list表的记录
thisform.grid1.recordsource="order_list.dbf"
&&关闭表单
thisform.release
32
open database 外汇数据
use currency_sl
&&***********Error*****************
locate for 姓名="林诗因"
summ=0
&&***********Error*****************
do while not eof()
select 现钞买入价from rate_exchange ;
where rate_exchange.外币代码=currency_sl.外币代码into array a &&***********Error*****************
summ=summ+a[1] * currency_sl.持有数量
continue
enddo
?summ
37
***在下一行添加一条打开customer表的语句, 然后把"(此处空行)"删除use customer
***表没有索引,修改如下语句使之能显示所有“北京”客户的信息SCAN for所在地='北京'
? 客户编号,公司名称,联系人姓名
ENDSCAN
38
SELECT 零件名称FROM 零件信息WHERE 零件号in ;
(SELECT 零件号FROM 使用零件;
GROUP BY 零件号HA VING COUNT(项目号) = 3) ;
ORDER BY 零件名称;
to FILE results
45(15)
*下面的程序在第1行、第2行和第5行有错误,请直接在错误处修改。
*修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。
open database sdb
CREATE VIEW s_view as ;
SELECT Class.班级号, 班级名, 姓名, 性别, 教师名AS 班主任名;
FROM Student,Class,Teacher ;
WHERE Student.班级号= Class.班级号and Teacher.教师号= Class.班主任号
46(15)
*下面的程序在第5行、第6行、第8行和第9行有错误,请直接在错误处修改。
*修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。
OPEN DATABASE SELLDB
SELECT S_T.部门号,部门名,年度,;
一季度销售额+ 二季度销售额+ 三季度销售额+ 四季度销售额AS 全年销售额,;
一季度利润+ 二季度利润+ 三季度利润+ 四季度利润AS 全年利润,;
(一季度利润+ 二季度利润+ 三季度利润+ 四季度利润)/ (一季度销售额+ 二季度销售额+ 三季度销售额+ 四季度销售额)AS 利润率;
FROM S_T,DEPT;
WHERE S_T.部门号= DEPT.部门号;
order BY 年度,利润率DESC;
INTO table S_SUM
49
*本程序的功能为输入圆柱体的半径和高,计算圆柱体表面积。
*请将程序修改为函数调用方式(注意不得增删语句行)。
SET TALK OFF
CLEAR
LOCAL carea
INPUT "请输入圆柱体的半径" TO r
INPUT "请输入圆柱体的高" TO h
carea=cya(r,h)
?"圆柱体的表面积为:",carea
RETURN
PROCEDURE cya
PARAMETERS a,b,c
LOCAL pai
pai=3.14159
c=2*(pai*a^2)+2*pai*a*b
RETURN c 只填加一个c
ENDPROC
53
SET TALK OFF
USE STUDENT
LOCATE FOR 政治面目="群众"
******ERROR FOUND******
DO WHILE found() 这一行去掉一个.not.
IF 性别="女"
CONTINUE
******ERROR FOUND******
loop
ENDIF
? 姓名,班级
******ERROR FOUND******
Continue 改skip
ENDDO
USE
SET TALK ON
54(10)
INPUT "请输入圆柱体的高" TO h
carea=cya(r,h)
?"圆柱体的表面积为:",carea
RETURN
FUNCTION cya
**********found***********
PARAMETERS a,b
LOCAL pai
pai=3.14159
c=2*(pai*a^2)+2*pai*a*b
**********found***********
return c (改的是endfunc)
56(14)
*本题目需要在基本操作题的基础上完成。本程序在表ORDERS.DBF的基础上完成如下功能:
*(1)创建视图viewes,视图内容为按职工号统计订单金额(每个职工经手的订单总金额),统计结果包括:职工号、总金额;
*(2)从视图viewes中查询订单总金额在30000以上(含30000)的职工信息(职工号,总金额),查询结果按总金额降序排序并存入表newtable.dbf。
OPEN DATABASE ordersmanage
CREATE view viewes AS SELECT 职工号,SUM(金额) AS 总金额FROM orders GROUP BY 职工号
SELECT * FROM viewes WHERE 总金额>=30000 ORDER BY 总金额DESC into table newtable
61*********
USE 用户表
GO TOP
flag=0
do while not eof() &&添加一条语句
IF Alltrim(用户名)==Alltrim(Thisform.Text1.Value)
IF Alltrim(口令)==Alltrim(Thisform.Text2.Value)
W AIT "欢迎使用" WINDOW TIMEOUT 2
ELSE
W AIT "口令错误" WINDOW TIMEOUT 2
endif &&添加一条语句
flag=1
EXIT
ENDIF
skip &&添加一条语句
ENDDO
if flag=0 &&添加一条语句
W AIT "用户名错误" WINDOW TIMEOUT 2
ENDIF
62******
*该命令文件用来查询与"姚小敏"同一天入住宾馆的每个客户的客户号、身份证、姓名、
*工作单位。查询结果输出到表TABC中。
*该命令文件在第3行、第5行、第7行和第8行有错误,打开该命令文件,直接在错误处修改,不可
*改变SQL语句的结构和短语的顺序,不允许增加、删除或合并行。
OPEN DATABASE 宾馆
SELECT 客户.客户号,身份证,姓名,工作单位;
FROM 客户JOIN 入住on 客户.客户号=入住.客户号;
WHERE 入住日期IN;
( SELECT 入住日期;
FROM 客户,入住;
WHERE 客户.客户号=入住.客户号and姓名= "姚小敏");
in TO TABLE tabc
64*******反复练习
&&根据"歌手表"计算每个组的歌手人数
CLOSE DA TA
USE one
GO TOP
do WHILE.NOT. EOF() &&错误
zuhao=组号
SELECT COUNT(*) FROM 歌手表WHERE left(歌手表.歌手编号,2)=zuhao INTO ARRAY A &&错误
REPLACE 歌手人数with A &&错误
SKIP
ENDDO
68(10)背
*
*在下面的程序中,第2、3、4、7和12行语句不正确,请修改!
*注意:修改时不允许增加或删除行,只能在错误行上进行修改!
*
USE pass
Key1 = ALLTRIM(ThisForm1.text1.value)
Key2 = ALLTRIM(ThisForm2.text2.value)
locate ALL for USER = Key1
IF FOUND() AND PASS = Key2
W AIT "欢迎使用本系统!" WINDOW TIMEOUT 1
thisform.release
ELSE
num = num + 1
IF num = 3
WAIT "用户名或口令不对,登录失败!" WINDOW TIMEOUT 1
thisform.release
ELSE
WAIT "用户名或口令不对,请重输入!" WINDOW TIMEOUT 1
ENDIF
ENDIF
69(13)背
*******************found********************
store 0 to x,s1,s2,s3
*******************found********************
x=val(thisform.text1.value)
do while x>0
if int(x/2)=x/2
s1=s1+1
else
s2=s2+1
endif
*******************found********************
if mod(x,3)=0
s3=s3+1
endif
x=x-1
enddo
thisform.text2.value=s1
thisform.text3.value=s2
thisform.text4.value=s3
thisform.text5.value=s1+s2+s3
70
&&根据"教师表"计算每个系的教师人数并将数据填入"学院表"
CLOSE DATA
USE 学院表
GO TOP
DO while .NOT. EOF() &&错误
xihao=系号
SELECT COUNT(*) FROM 教师表WHERE 教师表.系号=xihao INTO array A &&错误REPLACE 教师人数WITH A[1]
skip&&错误
ENDDO
$$94
create table prime(dat f) &&建表表名为prime
n=11
do while n<=2011
f=0
i=2
do while i<=int(sqrt(n))
if mod(n,i)<>0
i=i+1
loop &&继续内循环
else
f=1
exit &&跳出内循环
endif
enddo
if f=0
insert into prime values(n) &&插入满足条件的数据到表中endif
n=n+1
enddo
72
* 请改正以下语句代码中的错误,然后运行程序。
SELECT 部门表.部门号, 部门名, 销售表.商品号, 商品名,一季度利润+ 二季度利润+ 三季度利润+ 四季度利润as 年销售利润;
FROM 部门表,销售表,商品代码表;
where销售表.商品号= 商品代码表.商品号;
and部门表.部门号= 销售表.部门号;
and销售表.年度= "2006";
ORDER by 1, 5 desc;
in TO TABLE TABA
** 请改正以下语句代码中的错误,然后运行程序。
SELECT 销售表.部门号, 部门名, 一季度利润+ 二季度利润+ 三季度利润+ 四季度利润AS 年销售利润;
FROM 销售表,部门表;
WHERE 销售表.部门号= 部门表.部门号AND 年度= "2005";
group BY 销售表.部门号in TO cursor temp
SELECT temp.部门号, 部门名, 年销售利润, 工资支出, 办公支出, 年销售利润- 工资支出- 办公支出AS 纯利润;
FROM temp, 部门成本表;
WHERE 部门成本表.部门号= temp.部门号AND 年度= "2005";
in TO TABLE account
73
* 下面代码的功能是根据用户对列表框的选择结果构建字段列表,然后进一步构建select语句并据此为表格的相关属性设值。
* 修改所有*** FOUND ***下面的一条语句。
* 不能修改其他语句。不能增加语句,也不能删除语句。
s=""
f=.T.
*** FOUND ***
FOR i=1 TO thisform.List1.list Count
IF thisform.List1.Selected(i)
IF f
*** FOUND ***
s=thisform.List1.list(i)
f=.F.
ELSE
*** FOUND ***
s=s+","+thisform.List1.list(i)
ENDIF
ENDIF
ENDFOR
st="select &s from orders into cursor tmp"
thisform.Grid1.RecordSource=st
74
* 下面代码的功能首先将年份设置为用4位数字表示,然后根据文本框Text1的值构建SQL 语句,并设置表格Grid1的相关属性。
* 修改所有*** FOUND ***下面的一条语句。
* 不能修改其他语句。不能增加语句,也不能删除语句。
*** FOUND ***
set century on
*** FOUND ***
va=thisform.text1.value
st="select 订单号,签订日期,金额from orders where 签订日期>=va order by 签订日期into cursor tmp"
*** FOUND ***
this form.grid1.Record Source=st
75
* 下面代码的功能是读取所选职员的职员号,然后计算该职员所签订单的平均金额,并显示在文本框内。
* 修改所有*** FOUND ***下面的一条语句。
* 不能修改其他语句。不能增加语句,也不能删除语句。
dime a(1,1)
a(1,1)=0
m1=employee.职员号
select avg(金额) from orders where 职员号=m1 into array a
m2=a(1,1)
*** FOUND ***
thisform.text1.value=m2
78
SELECT sum((现价-买入价)*持有数量);
FROM stock_sl ;
WHERE 股票代码;
in;
(SELECT 股票代码FROM stock_name ;
WHERE 股票简称LIKE "%银行")
79
CLOSE ALL
OPEN DATABASE 成绩管理
USE 选课IN 0
USE 学生EXCL IN 0
***********Error***********
alter TABLE 学生ADD 平均成绩N(6,2)
SELECT 学生
***********Error***********
DO WHILE not EOF()
SELECT A VG(成绩) FROM 选课WHERE 学号=学生.学号INTO ARRAY cj ***********Error***********
REPLACE 平均成绩with cj[1]
cj[1]=0
SKIP
ENDDO
CLOSE DATABASE
81
use db!taba in 0
select taba
do while !eof()
sele a,b,c,x1,x2,note from taba into array aa
a=aa(1)
b=aa(2)
c=aa(3)
IF a<>0
delta=b^2-4*a*c
re=-b/(2*a)
im=SQRT(ABS(delta))/(2*a)
IF delta>=0
root1=re+im
root2=re-im
replace x1 with root1
replace x2 with root2
&&? "两个根为:",root1,root2 && 写入到数据库表的X1 和X2 中
ELSE
repl note with "无实数解"
ENDIF
ENDIF
skip
enddo
close database
51移动欢迎使用考试系统标签
IF https://www.360docs.net/doc/24337400.html,bel1.Left+https://www.360docs.net/doc/24337400.html,bel1.WIDTH<0
https://www.360docs.net/doc/24337400.html,bel1.Left=THISFORM.WIDTH
ELSE
https://www.360docs.net/doc/24337400.html,bel1.Left=https://www.360docs.net/doc/24337400.html,bel1.Left-10
ENDIF
注:计时器interval属性设置为200
47
SELECT 外汇代码.外币代码AS 币种1代码,;
外汇代码_a.外币代码AS 币种2代码, 外汇汇率.买入价, 外汇汇率.卖出价;
FROM 外汇!外汇代码INNER JOIN 外汇!外汇汇率;
INNER JOIN 外汇!外汇代码外汇代码_a ;
ON 外汇汇率.币种2 = 外汇代码_a.外币名称;
ON 外汇代码.外币名称= 外汇汇率.币种1;
INTO array kk
Insert into rate from array kk
82
&&下句只有一处有错误
SELECT 课程号FROM 课程表WHERE 课程名="数据结构" in TO ARRAY a
&&下句有错误
use教师表
STORE 0 TO sum
&&下句两处有错误
SCAN for课程号=a and工资>=4000
&&下句有错误
sum=sum+1
ENDSCAN
?sum
83
&&下句有错误
CREATE TABLE 工资表(职工号C(8) primary KEY,姓名C(6) ,工资N(10,2))
&&下句有错误
INSERT in TO 工资表V ALUES ("11020034","宣喧",4500)
USE 工资表
APPEND FROM 教师表
&&下句有错误
UPDATE 工资表set工资=工资*1.1 WHERE 工资<3000
&&&&下句有错误
DELETE FROM 工资表WH ere姓名="Thomas"
PACK
84
*在第2行有一处错误,第3行有两处错误,请改正
select p.组别,c.姓名组长,p.姓名组员;
from employee p join employee c ;
on p.组别=c.组别where c.职务="组长" and c.姓名<>p.姓名;
order by p.组别
$$91
select 部门.部门号,count(*) as 人数;
from 职工,部门where 部门.部门号=职工.部门号and year(出生日期)>=1980 and year(出生日期)<=1990;
order by 人数desc;
group by 部门.部门号into dbf new
$$89
select 职称级别,基本工资from 职称表where 职称名="教授" into dbf prof.dbf order by 基本工资
$$89
create 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,应发工资
$$84
CLOSE DBF
PRIVA TE no,money
USE scust
*下面的一行语句有错误
SELECT 顾客号,sum(数量*单价)应付款;
FROM order JOIN comm ON order.商品号= comm.商品号;
GROUP BY 顾客号;
INTO CURSOR ls
SELECT scust
*下面的一行语句有错误
DO WHILE not EOF()
no = 顾客号
SELECT ls
LOCAT FOR 顾客号= no
money = 应付款
SELECT scust
*下面的一行语句有错误
REPLACE 应付款with money
SKIP +1
ENDDO
CLOSE TABLE
RETURN
$$79
*该命令文件用来查询所有成绩都高于或等于平均分的学生的考生号和姓名。并将查询结果存储到表THREE中。
*该命令文件在第3行、第6行、第9行有错误,打开该命令文件,
*直接在错误处修改,不可改变SQL语句的结构和短语的顺序,不允许增加、删除或合并行。SELECT A VG(成绩);
FROM kscjb;
INTO array tem
SELECT 考生号,姓名;
FROM ksb;
WHERE not EXISTS ;
( SELECT *;
FROM kscjb;
WHERE 成绩< tem(1) and 考生号= ksb.考生号);
INTO TABLE three
$$78
*该命令文件在第3行、第6行、第7行有错误,打开该命令文件,
*直接在错误处修改,不可改变SQL语句的结构和短语的顺序,不允许增加、删除或合并行。
SELECT 会员号,会员名,单位,电话;
FROM cus;
WHERE性别="女" and会员号=ANY ;
( SELECT 会员号;
FROM cbc;
WHERE 数量>= 10 and 性别= 女;
GROUP BY 会员号HA VING sum(数量*单价) >=5000);
INTO TABLE THREE
$$76
*下面的程序在第2行、第3行、第4行、第5行有错误,请直接在错误处修改。*修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。OPEN DATABASE sdb
SELECT student.学号,姓名,A VG(成绩) 平均成绩,COUNT(成绩) 选课门数; FROM student JOIN sc on student.学号= sc.学号;
WHERE 性别= "女" AND A VG(成绩) >= 75;
GROUP BY student.学号having avg(成绩)>=75;
ORDER BY 4 desc ;
INTO TABLE three
大学计算机二级考试试题及其答案 !!!
全国计算机二级考试试题 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123 C) %d D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。A) print B) i\am C) Pxq D) str_l _3d one_half My->book Cpp ??? oodbs tart$it line#pow ??? aBc 3pai His.age while 【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。 A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始 B) 程序文件的最后 C) 它所调用的函数的前面 D) 程序文件的任何位置
【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是。 A) 32768 B) 0 C) 037 D) 0xAF 【1.9】执行语句 printf("%x",-1);屏幕显示____。 A) -1 B) 1 C) -ffff D) ffff 【1.10】已知 long i=32768;执行语句printf("%d",i);屏幕显示____。 A) -1 B) -32768 C) 1 D) 32768 【1.11】已知 long i=65539;执行语句printf("%d",i);屏幕显示____。 A) 65539 B) -3 C) 3 D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A) 1111 1111 1111 1000 B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。 A) 原码 B) 补码
最新二级C语言考试题库及答案程序改错专项练习 精华版
1 / 4 程序改错题(共15题) 1、在考生文件夹下,给定程序MODI.C 的功能是: 求一维数组a 中所有元素的平均值,结果保留两位小数。 例如,当一维数组a 中的元素为:10,4,2,7,3,12,5,34,5,9 程序的输出应为:The aver is: 9.10 。 #include
计算机二级上机考试(程序改错题)1
计算机二级上机考试(程序改错题)1 https://www.360docs.net/doc/24337400.html,work Information Technology Company.2020YEAR
程序编程题目 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,则应输出:8.391667。 /**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。 /**found**/ long s=0,t=0; /**found**/ t=t/10; 2. 程序修改(第21套) 给定程序中函数fun的功 能是:计算s=f(-n)+f(- n+1)+……+f(0)+f(1)+f (2)+……f(n)的值。例 如,当n为5时,函数值应 该是:10.407143。 f(x)=(x+1)(x-2) x>0且x!=2 f(x)=0 f(x)= (x-1)(x-2) x<0 /**found**/ double f(double x) /**found**/ return s; 2. 程序修改(第27套) 给定程序中函数fun的功能 是:用递归算法求形参a的 平方根。求平方根的迭代公 式如下:x1=1/2(x0+a/x0)例 如:a为2时,平方根值为 1.414214 /**found**/ double fun(double a,double x0) /**found**/ if(fabs(x1-x0)>0.00001) 2 程序修改(第29套) 给定程序中函数fun的功能 是:计算函数值,F(x,y,z) =(x+y)/(x-y)+(z+y)/(z-y)的值 得。其中x和y的值不等,z 和y的值不等。例如,当x 的值为9、y的值为11、z的 值为15时,函数值为-3.50。 /**found**/ #define FU(m,n) (m)/(n) /**found**/ return (value); 2. 程序修改(第33套) 给定程序中函数fun的功能 是:根据整形形参m=1,计算 如下公式的值。 m=1+1/2*2+1/3*3+1/4*4+..+1 /m*m例如,若m中的值为 5,则应输出1.463611 /**found**/ for (i =2 ; i<= m; i++) /**found**/ y+=1. 0/ ( i* i) ; 2. 程序修改(第37套) 给定程序中函数fun的功能 是:用下面的公式求π的近 似值,知道最后一项的近似 值小于指定数(参数num) 为止:例如程序0.0001,则 程序输出3.1414。 /**found**/ while((fabs(t))>=num) /**found**/ t=s/n 2. 程序修改(第45套) 给定程序中函数fun的功 能是:根据以下公式求π 值,并作为函数值返回。例 如,给指定精度的变量eps 输入0.0005时,应当输出 Pi=30140578.。 /**found**/ t=1.0; /**found**/ return(s*2); 2. 程序修改(第47套) 给定程序中函数fun函数功能 是:计算n!。例如,给n输 入5,则输出120.000000。 /**found**/ if (n==0) /**found**/ result *=n--; 2. 程序修改(第48套) 给定程序中函数fun的功能 是:根据整形形参m=1,计算 如下公式的值。 m=1+1/2*2+1/3*3+1/4*4+..+1 /m*m例如,若m中的值为 5,则应输出1.463611 /**found**/ for (i =2 ; i<= m; i++) /**found**/ y+=1. 0/ ( i* i) ; 给定程序中函数fun的功能 是:计算并输出下列级数的 前n项的和Sn,直到Sn+1大 于q为止,q的值通过形参传 入。 Sn=2/1+3/2+4/3+…+(N+1)/N /**found**/ s=s +(double)(n+1)/n; /**found**/ return t; 2. 程序修改(第52套) 下列给定程序中函数fun的 功能是:按以下递推公式求 函数的值。 Fun=10 (n=1),fun(n-1)+2 (n>1) 例如,当给n输出5时,函 数值为18;当给n输入3 时,函数值为14. /**found**/ int fun(int n) /**found**/ if(n==1) 2. 程序修改(第58套) 给定程序中函数fun的功能 是:求K!
2012计算机国二C语言等级考试题库(内部资料)程序改错
1.给定程序MODI1.C中函数fun的功能是:根据以下公式求π值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=30140578.。(1)“t=0;”改为“t=1;”。(2)改成“return(2*s);” 2.给定程序MODI1.C中函数fun的功能是:将长整型中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如:当s中的数为:7654321时,t中的数为:7531。(1)“void fun (long s, long *t)”(2)“sl = sl*10;” 3.给定程序MODI1.C中函数fun的功能是:用下面的公式求π的近似值,知道最后一项的近似值小于指定数(参数num)为止:例如程序0.0001,则程序输出 3.1414。(1) “while(t>=num)”改为 “while(fabs(t)>=num) ”。(2)“t=s%n;”改为 “t=s/n;”。 4.给定程序MODI1.C中函 数fun的功能是:把主函 数中输入的三个数,最大 的放在a中,最小的放在 c中,中间的放在b中。 例如a=55.0 b=34.0 c=12.0。(1)“float k;”。 (2)“if(*a<*c)”。 5. 给定程序MODI1.C中 函数fun的功能是:为一 个偶数寻找两个素数,这 两个素数之和等于该偶 数,并将这两个素数通过 形参指针传回主函数。(1) “y=1;”。(2)“d=a-i;”。 6. 给定程序MODI1.C中 函数fun的功能是:由形 参给定n个实数,输出平 均值以上(含平均值)的 实数个数。所的平均值为: 195.838745,在平均值以 上的实数个数应为:5。(1) “int j, c=0; double xa=0.0;”。(2)“if (x[j]>=xa)”。 7.例如:当s中的数为: 7654321时,t中的数为: 7531。(1)“*t=0;”(2) “if(d%2!=0)” 8.函数功能是:求出 以下分数序列的前n项 和。 2/1,3/2,5/3,8/5/13/ 8,21/13,…...。和值 通过函数值返回到 main函数。例如,n=5, 则应输出:8.391667。 (1)“fun(int n)”改为 “double fun(int n)”。 (2)“b+=c;”改为“b=c;”。 9.函数fun的功能是: 判断一个整数是否是 素数,若是返回1,否 则返回0。(1)“k++” 改为“k++;”(2) “if(m=k)”改为 “if(m==k)” 10.给定程序MODI1.C 中函数fun的功能是: 从整数1到55之间,选 出能被3整除、且有一 位上的数是5的那些 事,并且把这些数放 在b所指的数组中,这 些数作为函数值返回。 规定,函数中a1放个 位数,a2放十位数。 (1)“a2=k/10;”。(2) “return i;”。 11.给定程序MODI1.C 中函数fun的功能是: 计算小于形参k的最大 的10个能被13或17整 除的自然数之和。K的 值由主函数传入,若K 的值为500.则主函数 为4622。(1) “if((k%13==0)||(k%17 ==0))”。(2)“______” 填“}”。 12.已知一个数列从第 0项开始的前三项分别 是0、0、1以后的各项 都是它相邻的前三项 之和。给定程序 MODI1.C中函数fun的 功能是:计算并输出该 数列前n项的平方根之 和。n的值通过形参传 入。(1)“double fun(int n)”。(2)“return sum;”。 13.函数fun的功能是: 根据整形形参m的值: 计算如下公式的 值……例如:若m中的 值为5,则应输出: 0.536389。(1) “for(i=2; i<=m; i++)”(2) “y-=1.0/(i*i);”。 14.函数的功能是:将 字符串中的字符按逆 序输出,但不改变字符 串中的内容。例如字符 串abcd,则应输出dcba。 (1)“void fun(char *a)”。(2)“printf("%c", *a);”。 15.函数fun的功能是:求 三个数的最小公倍数。 X1=15 x2=11 x3=2(1) 改成“int fun(int x, int y, int z )”。(2)return j 16.函数fun的功能是:根 据整型形参m计算如下 公式的值。若主函数中输 入5,则应输出-0.283333。 (1)“t=t-1.0/i;”。 (2)填空“return t;” 17. 例如,若输入:edcba, 则应输出:abcde。(1) “for( i=strlen( t )-1; i; i- - )” (2)“if(t[j]>t[j+1])” 18.函数fun的功能是: 根据形参m的值 (2<=m<=9),在m行m 列的二维数组中存放 如下所示规律的数据, 由main函数输出。(1) “void fun(int a[][M], int m)”。(2) “a[j][k]=(k+1)*(j+1);”。 19.函数fun的功能是: 先从键盘上输入一个3 行3列矩阵的各个元素
C语言程序改错题
第1题【程序改错】 欧阳学文 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的 字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为: “EDCBAABCDE”。 */ #include /**********FOUND**********/ t[i] = s[sli]; for (i=0; i 第2题【程序改错】 功能:求出以下分数序列的前n项之和。和值通过函数值返回main 函数。 2/1+3/2+5/3+8/5+13/8+21/13 …… 例如:若n = 5,则应输出:8.391667。 */ #include C语言程序改错基本 题库 北京石油化工学院 12级复习题 程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1234n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(i main() { int a,c; c=a+b; printf(“c=%d”); } 4.用一个函数求两个数之和。 sum(x,y) { float z; z=x+y; return; } main() { float a,b; int c; scanf("%f,%f",&a,&b); c=sum(a,b); printf("\nSum is %f",sum); } 5.用指针作函数参数,对输入的两个整数按大小顺序输出。 swap(int *p1,*p2) { int *p; *p=*p1;*p1=*p2;*p2=*p; } main() { int a,b; int *q1,*q2; scanf("%d,%d",&a,&b); &q1=a,&q2=b; if(a 11 *程序名:TEST.prg *检索选修课程门数等于3门或3门以上,每门课程成绩大于或等于70分的每个学生的 *学号,姓名,性别,平均成绩,最低分和选课门数,并将结果存储到表NEW_TEST中. *以下程序有三处错误,请改正 OPEN DA TABASE SDB SELECT STUDENT.学号,姓名,性别,A VG(成绩) 平均成绩,MIN(成绩) 最低分,COUNT(*) 选课门数; FROM STUDENT,SC; WHere STUDENT.学号= SC.学号AND 成绩>= 70 ; &&**********Error********** GROUP BY STUDENT.学号HA VING count(课程号) >= 3; &&**********Error********** inTO table NEW_TEST &&**********Error********** CLOSE ALL 9 *程序名:dbtest3.prg *定义一个视图VS1, *检索选课门数是3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系编号, *并按平均成绩降序排序. *以下程序有三处错误,请改正 SET TALK OFF SET SAFETY OFF open DATABASE SDB &&****Error***修改本行的语法错误,不许注释掉本行或删除本行 CREATE VIEW VS1 SELECT STUDENT2.学号, 姓名, A VG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数, 院系编号; FROM STUDENT2, sc; &&*************Error************* WHERE STUDENT2.学号= SC.学号; GROUP BY SC.学号HA VING COUNT(课程号) > 3; ORDER BY 平均成绩desc &&*************Error************* CLOSE DATABASE RETURN i=2 create table four(结果I) do while i<=1000 if i%3=0 insert into four values(i) &&错误语句请修改 endif 全国计算机等级考试二级教程C语言程序设计课后习题答案 《全国计算机等级考试二级教程--C语言程序设计》课后习题答案 第一章 1.1 EXE 1.2 C OBJ EXE 1.3 顺序选择循环 第二章 一. 选择题 2.1 B 2.2 D 2.3 B 2.4 A 2.5 C 2.6 A 2.7 B 2.8 B 2.9 D 2.10 C 2.11 B 2.12 B 2.13 A 二. 填空题 2.14 11 12 2.15 4.2 4.2 2.16 { } 定义执行语句 2.17 关键字用户标识符 2.18 int float double 2.19 float a1=1; float a2=1; 2.20 存储单元 2.21 3.5 2.22 (a*b)/c a*b/c a/c*b 2.23 把常量10赋给变量s 2.24 位1或0 2.25 8 127 0111111 -128 10000000 2.26 32767 -32768 0000 2.27 10 8 16 三. 上机改错题 2.28 #include "stdio.h"; 删除行尾的";" main(); / * main function * / 删除")"后的";",注释中的*要紧靠“/”,即应为“/*”和“*/” 函数开始处遗失了一个“{” float r,s ; /*/*r is radius*/,/* s is area of circuilar*/*/ 注释符号不可嵌套使用 r = 5.0 ; s = 3.14159 * r * r ; printf("%f\n",s) 行尾遗失了“;” 函数结束处遗失了一个“}” 2.29 #include "stdio.h" main /* main function */ main后遗失了“()” { float a,b,c,v; /*a,b,c are sides, v is volume of cube */ a=2.0; b=3.0; c=4.0 行尾遗失了“;” ? 第1题(分)题号:400 难度:中第2章/*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:编写函数fun求20以内所有5的倍数之积。 ------------------------------------------------------*/ 《 #define N 20 #include <> int fun(int m) { /**********FOUND**********/ int s=0,i; ; for(i=1;i s*=i; ) 第2题(分)题号:584 难度:中第1章/*-------------------------------------------------------【程序改错】 --------------------------------------------------------- 下列给定程序中函数fun()的功能是计算1/n!的值。 & 例如:给n输入5,则输出。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行, 也不得更改程序的结构。 , 试题程序: -------------------------------------------------------*/ #include <> #include <> /***********FOUND***********/ ~ int fun(int n) { double result =; if(n==0) return ; while(n>1 && n <170) /***********FOUND***********/ result *=n++ ; … result=1/result; return result; } void main() { 第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include 2015计算机二级考试试题及答案 1、设有表示公司和员工及雇佣的三张表,员工可在多家公司兼职,其中公司C(公司号,公司名,地址,注册资本,法人代表,员工数),员工S(员工号,姓名,性别,年龄,学历),雇佣E(公司号,员工号,工资,工作起始时间)。其中表C的键为公司号,表S的键为员工号,则表E的键(码)为______。 A、公司号,员工号 B、员工号,工资 C、员工号 D、公司号,员工号,工资 【评析】 本题考查知识点是关键字。 能唯一标识实体的属性集称为码(关键字)。码也称为关键字,是表中若干属性的属性组,其值唯一标识表中的一个元组。 本题答案:A。 3、下列叙述中正确的是______。 A、每一个结点有两个指针域的链表一定是非线性结构 B、所有结点的指针域都为非空的链表一定是非线性结构 C、循环链表是循环队列的链式存储结构 D、线性结构的存储结点也可以有多个指针 【评析】 本题考查知识点是线性表的线性结构与非线性结构。 线性表的链式存储结构称为线性链表。在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前件结点;另一个称为右指针,用以指向其后件结点。 本题答案:D。 4、在线性表的顺序存储结构中,其存储空间连续,各个元素所占的字节数______。 A、相同,元素的存储顺序与逻辑顺序一致 B、相同,但其元素的存储顺序可以与逻辑顺序不一致 C、不同,但元素的存储顺序与逻辑顺序一致 D、不同,且其元素的存储顺序可以与逻辑顺序不一致 【评析】 本题考查知识点是线性表的顺序存储结构。 线性表的顺序存储结构具有两个基本特点:1.线性表中所有元素所占的存储空间是连续的;2.线性表中各元素在存储空间中是按逻辑顺序依次存放的。 本题答案:A。 5、设循环队列为Q(1: m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=30,rear=10。现要在该循环队列中作顺序查找,最坏情况下需要比较的次数为______。 A、19 B、20 C、m-19 D、m-20 【评析】 本题考查知识点是循环队列的运算。 1改错题 下列给定程序的功能是:读入一个整数K(2〈=K 〈=10000),打印它的所有因子(即所有为素数的因子)。例如,若输入整数2310,则应输出:2、3、5、7、11。 第1处:Isprime(int n);应改为Isprime(int n) 第2处:if !(n%i)应该为if(!(n%i)) 2改错题 下列给定程序中,函数FUN的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH。 第1处:int k=1应改为int k=0; 第2处:while(*p!=*q)应改为while(*p||*q) 3改错题 下列给定的程序中,函数fun的功能是:依次取出字符串中所以数字字符,形成新的字符串,并取代原字符串。 第1处:s[j]=s[i];应改为s[j++]=s[i] 第2处:s[j]=”/0”;应改为s[j]=’\0’; 4改错题下列给定程序中,fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AaaaBBb123CCccccd,则应输出结果:upper=6,lower=8 第1处:void fun (char *s,int a,int b)应改为void fun(char *s,int *a,int *b) 第2处:a++;应改为(*a)++; 第3处:b++;应改为(*b)++; 5改错题 假定整数数列中的数不重复,并存放在数组中。下列给顶程序中,函数fun的功能是删除数列中值为x的元素,同时将其他元素前移。N中存放的是数列中元素的个数。 第1处:a[i+1]=a[i];应改为a[i]=a[i+1] 6改错题 下列给定程序中,函数fun的功能是:根据整型参m的值,计算如下公式的值。 例如,若m中的值为5,则应输出:0.536389 第1处:for (i=2;iC语言程序改错基本题库电子版本
计算机程序改错题,及答案
全国计算机等级考试二级教程C语言程序设计课后习题答案
计算机基础C++程序改错复习题
C语言程序改错题
计算机等级考试二级真题及答案
计算机二级改错