计算机程序改错题,及答案

计算机程序改错题,及答案
计算机程序改错题,及答案

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 #include void main() { int a[10]={10,4,2,7,3,12,5,34,5,9},i; int aver,s; s = 0; for ( i=1; i<10; i++) s += a[i]; aver = s / i; printf("The aver is: %.2f\n", aver); } 2、在考生文件夹下,给定程序MODI.C 的功能是: 求二维数组a 中的最大值和最小值。 例如,当二维数组a 中的元素为: 4 4 34 37 3 12 5 6 5 程序的输出应为:The max is: 37 The min is: 3 。 #include #include void main() { int a[3][3]={4,4,34,37,3,12,5,6,5},i,j,max,min; max = min = a[0][0]; for ( i=0; i<3; i++) for ( j=1; j<3; j++) { if ( max < a[i][j] ) max = a[i][j]; /************found************/ if (min < a[i][j]) min = a[i][j]; } printf("The max is: %d\n", max); printf("The min is: %d\n", min); } 3、在考生文件夹下,给定程序MODI.C 的功能是: 求一维数组a 中的最大元素及其下标。 例如,当一维数组a 中的元素为:1,4,2,7,3,12,5,34,5,9, 程序的输出应为:The max is: 34,pos is: 7 。 #include #include void main() { int a[10]={1,4,2,7,3,12,5,34,5,9},i,max,pos; max = a[0]; pos = 0; for ( i=1; i<10; i++) /************found************/ if (max > a[i]) { max = a[i]; /************found************/ i = pos; } printf("The max is: %d ,pos is: %d\n", max , pos); } 4、在考生文件夹下,给定程序MODI.C 的功能是: 求二维数组a 中的最小值。 例如,当二维数组a 中的元素为: 4 2 34 7 3 12 5 6 5 程序的输出应为:The min is: 2 。 #include #include void main() { int a[3][3]={4,2,34,7,3,12,5,6,5},i,j,min; min = a[0][0]; for ( i=1; i<3; i++) for ( j=0; j<3; j++) if (min > a[i][j]) { /************found************/ min == a[i][j]; } printf("The min is: %d\n", min); }

计算机二级上机考试(程序改错题)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!,所求阶乘 的值作为函数值返回。例 如,若K=10,则应输出 3628800。 /**found**/ if(k>1) /**found**/ else if(k= =0) 2. 程序修改(第63套) 给定程序中函数fun的功能 是:计算整数n的阶乘。 /**found**/ result *=n--; /**found**/ return result; 2. 程序修改(第65套) 给定程序中,函数fun的功能 是:根据形参m,计算下列 公式的值: t=1+1/2+1/3+1/4+… +1/m例如,若输入5,则应 输出2.28333 /**found**/ t+=1.0/i; /**found**/ return t; 2. 程序修改(第77套) 给定程序中函数fun的功能 是:根据整形形参m,计算如 下公式的值。 Y=1/(100*100)+1/(200*200) +1/(300*300)+L+1/(m*m) /**found**/ double fun(int m) /**found**/ for(i=100;i<=m;i+=100) 2. 程序修改(第78套) 给定程序中函数fun的功能 是:根据整型形参n计算如 下公式的值。A1=1, A2=1/(1+A1),A3=1/(1+A2),An= 1/(1+A(n-1))例如:若n=10, 则应输出:0.617977. /**found**/ float fun(int n) /**found**/ for(i=2;i<=n;i++) 2. 程序修改(第85套) 下列给定程序中,函数fun的 功能是:传入一个整数m, 计算如下公式的值。 t=1/2-1/3-…-1/m例如,若输 入5,则应输出-0.283333. /**found**/ 2

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 #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; sl = strlen(s); for (i=0; i

/**********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 #include /**********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语言程序改错基本题库电子版本

C语言程序改错基本 题库

北京石油化工学院 12级复习题 程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1234n main() { long int sum; int n,i=1; scanf("%d",n); printf(“\n”); while(ia[j]) { max=a[j]; m=j; } printf(“下标:%d\n最大值:%d”, j, max) } *3. 求 3+4 int a=3,b=4;

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语言程序设计课后习题答案

《全国计算机等级考试二级教程--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 行尾遗失了“;”

计算机基础C++程序改错复习题

? 第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() {

C语言程序改错题

第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include #include /**********FOUND**********/ double fun( r) double fun(double r) { double s; /**********FOUND**********/ s=1/2*3.14159* r * r; s=1.0/2*3.14159*r*r; /**********FOUND**********/ return r; return s; } main() { float x;

printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include #include #include void fun (char *s, char *t) { /**********FOUND**********/ int i; int sl,i; sl = strlen(s); for (i=0; i

计算机等级考试二级真题及答案

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;i0.001)15改错题 下列给定程序中,函数FUN的功能是:判断字符 CH是否与STR所指串中的某个字符相同:若相同,则 什么也不做,若不同,则将其插在串的最后。 16改错题 下列给定程序中的函数Creatlink的功能是:创 建带头结点的单向链表,并为各结点数据域赋0到M-1 的值。 17改错题 下列给定程序中,函数FUN的功能是:计算并输 出K以内最大的10个能被13或17整除的自然数之和。K 的值由主函数传入,若K的值为500,则函数值为4622。 第1处:if((k%13=0)||(k%17=0))应改为 if((k%13==0)||(k%17==0)) 第2处:应填} 18改错题 下列给定程序中,函数FUN的功能是:实现两个 整数的交换。例如给A和B分别输入60和65,输出为: A=65 B=60。 第1处:void fun(int a,int b)应改为void fun(int *a,int *b) 第2处:t=b;b=a;a=t;应改为t=*b;*b=*a;*a=t; 19 改错题 下列给定程序中函数FUN的功能是:从低位开始 取出长整型变量S中偶数位上的数依次构成一个新数 放在T中。例如,当S中的数为7654321时,T中的数 为642。 第1处:void fun(long s,long t) 应改为 void fun(long s,long *t) 第2处:while(s<0)应改为while(s>0) 20改错题 N个有序整数数列已放在一维数组中,给定下列 程序中,函数FUN的功能是:利用拆半查找算法查找 整数M在数组中的位置。若找到,则返回其下标值: 反之,则返回-1。 拆半查找的基本算法是:每次查找前先确定数组 中待查的范围:low和high(lowhigh,查找结束。 第1处:void fun(int a[],int m)应改为 int fun(int a[],int m) 第2处:if (m>=a[mid])应改为if(m>a[mid]) 21改错题 下列给定程序是建立一个带头结点的单向链表, 并用随机函数为各结点数据域赋值。函数FUN的作用 是求出单向链表结点(不包括头结点)数据域中的最 大值,并且作为函数值返回。 第1处:p=h;应改为p=h->next; 第2处:p=h->next;应改为p=p->next; 22改错题 下列给定程序中,函数FUN的功能是:根据整型 形参M,计算如下公式的值,y=1+ 例如,若M中的值为5,则应输出:1.463611。 23改错题 下列给定程序中,函数FUN的功能是:按以下递归 公式求函数值。 10 (n=1) FUN(n)= Fun(n-1)+2 (n>1) 例如,当给n输入 5时, 函数值为18,当给 n输入 3时, 函数值为14. 第1处:int fun(n)应改为int fun(int n) 第2处:if (n=1)应改为if(n==1) 24改错题 下列给定程序中,函数fun的功能是:从s所指 字符串中,找出t所指子串的个数作为函数值返回, 例如,当s所指字符串中的内容为abcdabfab,t 所指 字符串的内容为ab,则函数返回整数3。 第1处:if (r==p)应改为if(*r==*p) 第2处:if(r==’\0’)应改为if(*r==’\0’) 25改错题 下列给定程序中,函数fun的功能是:y计算n!. 例如给n输入5,则输出120.000000. 第1处:if n==0应改为if (n==0) 第2处:resylt =n--;应改为result *=n--; 26改错题 下列给定程序中,函数fun的功能是,先从键盘 上输入一个3行2列矩阵的各个元素的值,然后输出主 对角线元素之和。 27 下列给定程序中,函数fun的功能是:根据以下公 式求值,并作为函数值返回, 例如,给指定精度的变量eps输入0.005时应当输 出pi=3.140578。 第1处:t=0;应改为t=1.0; 第2处:while(t<=eps)应改为while(t>=eps) 28改错题 在字符串的最前端加入n个*号,形成新串, 注意:字符串的长度允许为79。 第1处:s=p;应改为p=s; 第2处:应填p++;或++p;或p+=1或p=p+1 第3处:a[i]=’0’;应改为a[i]=’\0’;或 a[i]=0; 29改错题 下列给定程序中,函数fun的功能是:求出两 个非0正整数的最大公约数并作为函数值, 例如num1 和um2分别输入49和21,则输出的 最大公约数为7,若给num1 和um2分别输入27和81, 则最大公约数为27。 30改错题 下列给定程序中,函数fun的功能是:计算正整 数num的各位上的数字之积,例如若输入252,则输 出应该是20,若输入202,则输出应该是0。 第1处:long k;应改为long k=1; 第2处:num\=10;应改为num/=10; 31改错题 下列给定程序中,函数fun的功能是:将字符串 tt中的小写字母都改成对应的大写字母,其他字符不 变,例如输入Ab,cD,则输出AB,CD。 第1处:if ((tt[i]>=’a’)||(tt[i]<=’z’))应改为if ((tt[i]>=’a’)&&(tt[i]<=’z’)) 第2处:tt[i]+=32;应改为tt[i]-=32; 32 改错题 下列给定程序中,函数fun的功能是:s所指数 组中的元素赋予从2开始的偶数,然后再按顺序对每 5个元素求一个平均埴,并将这些值依次存放在w所 指的数组中。若s所指数组中元素的个数下是5的倍 数,多余部分忽略下计。例如,s所指数组有14个元 素,则只对前10个元素进行处理,不对最后的4个元 素求平均值。 第1处:if (i+1%5 ==0)应改为if ((i+1)%5==0) 33改错题 下列给定程序中,函数fun的功能是:将s所指 字符串中的字母转换为按字母序列的后续字(但Z转 换为A,z转换为a),其他字符不变。 第1处:while(*s !=’@’)应改为while(*s) 或while(*s!=’\0’)或while(&s!=0) 第2处:(*s)++;应改为s++; 34改错题 下列给定程序中,函数fun的功能是:将长整型 数中每一位上为奇数的数依次取出,构成一个新数放 在t中,高位仍在高位,低位仍在低位,当s中的数 为87653142时,t 中的数为7531。 第1处:t =0;应改为*t =0; 第2处:if (d%2 ==0)应改为if(d%2!=0) 35改错题 下列给定程序中,函数fun的功能是:将p所指 字符串中每个单词的最后一个字母改成大写(这里的 “单词”是指由空格隔开的字符串)。例如,若输入: I am a student to take the examination. 则应输出:I aM A studenT tO takE thE examinatioN. 第1处:if (p==’ ’)应改为if(*p==’ ’) 第2处:*p=toupper(*(p-1));应改为 *(p-1)=toupper(*(p-1)); 36改错题 下列给定程序中,函数fun的功能是:求三个数 的最小公倍数。例如,给变量x1,x2,x3分别输入 15112,则输出结果应当是330。 37改错题 下列给定程序中,函数fun的功能是:计算s所 指字符串含有t所指字符串的数目,,并作为函数的值 返回。 第1处:*r=t;应改为r=t;或r=&t[0]; 第2处:应填r=t;或r=&t[0]; 38改错题 下列给定程序中,函数fun的功能是:通过某种 方式实现两个变量值的交换,规定下允许增加语句和 表达式。例如变量a中的值原为8,b中的值原为3, 程序运行后a中的值为3,b的值为8。 第1处:t=x;x=y;应改为t=*x;*x=y; 第2处:return(y);应改为return(t);或return t; 39改错题 下列给定程序中,函数fun的功能是,将s所指 字符串的正序和反序进行连接,形成一个新串放在t 所指的数组中,例如,当s所指这字符串为ABCD时, 则t所指字符串中的内容应为ABCDDCBA。 第1处:void fun(char s,char t)应改为 void fun(char *s;char *t) 第2处:t[2*d-1]=’\0’;应改为t[2*d]=’\0’; 或t[d+i]=’\0’;或t[2*d]=0;或t[d+i]=0; 40改错题 下列给定程序中,函数fun的功能是:将n个无 序整数从小到大排序。 第1处:for(i=j+1;iinext)应改为while(p!=NULL) 第2处:p=h->next;应改为p=p->next; 42改错题 下列给定程序中,函数fun的功能是:找出100 至n(不大于1000)之间三个位上的数字都相等的所 有整数,把这些整数放在s所指数组中,个数作为函 数值返回。 k=n;改为k=I; b=k/10;改为b=k%10; 43改错题 下列给定程序中,函数fun的功能是:将s所指 字符串中最后一次出现的t1所指子串替换成t2所指 子串,所形成的新串放在w所指的数据中。在此处, 要求t1和t2所指字符串的长度相同。 例如,当s所指字符串中的内容为abcdabfabc, t1所指子串的内容为ab,t2所指子串中的内容为99 时,结果,在w所指的数组中的内容为abcdabf99c。 1:void fun(char *s,t1,t2,w)应改为 void fun(char *s,char *t1,char *t2,char *w) 2:while(w)应改为while(*w) 44 已知一个数列从第0项开始的前三项分别为0、0、 1,以后的各项都是其相邻的前三项之和。下列给定程 序中,函数fun的功能是:计算并输出该数列前n项 的平方根之和sum。n的值通过形参传入。例如,当 n=10时,程序输出结果应为23.197745。 第一处fun(int n)应改为 double fun(int n) 第二处 return sum应改为 return sum; 45下列给定程序中,函数fun的功能是:求出数组中 最大数和次最大数,并把最大数和a[0]中的数对调、 次最大数和a[1]中的数对调。 第1处:void fun(int *a,int n);应改为void fun(int *a,int n) 第2处:m=o;应改为 m=i; 46改错题: 下列给定程序中,函数fun的功能是:从N个字 符串中找出最长的那个串,并将其地址作为函数值返 回。各字符串在主函数中输入,并放入一个字符串数 组中。 第一处:fun(char (*sq)[N]) 应改为 char * fun(char (*sq)[M]) 第二处:return sq;应改为 return sp;

相关文档
最新文档