程序改错--答案版

程序改错--答案版
程序改错--答案版

程序改错--答案版

12592 '题目:编程求一个十进制整数n的各位数字之和,设n为小于或等于5位的数。

'------------------------------------------------ Option Explicit Private Sub Form_Click()

Dim N As Integer, Sum As Integer, S1 As String, S2 As String

Dim i As Integer, Ch As String

Sum = 0

N = InputBox("输入整数n")

S1 = Str(N)

S1 = Trim(S1)

For i = 1 To Len(S1) '**********ERROR* *********

Ch = Mid(N, i, 1)

'**********ERROR* *********

Sum = Val(Ch)

Next i

Print "该整数的各位数之和是:"; Sum End Sub

12610'题目:程序功能根据输入的学习成绩,分别显示优秀(90分以上), 良好(75分以上),及格(60分以上)不及格

四个等级.

'------------------------------------------------ Option Explicit Private Sub Form_Click()

Cls

Dim i As Integer

i = InputBox("请输入学习成绩")

Select Case i

'**********ERROR* *********

Case 0 < i < 100

MsgBox "成绩应该在0--100之间""" '**********ERROR* *********

Case 90

Print "优秀"

Case 75 To 89

Print "良好"

Case 60 To 74

Print "及格"

'**********ERROR* *********

Case

MsgBox "不及格", vbCritical End Select

End Sub

12616.题目:求s=1!+3!+5!+7!,阶乘的计算用Function过程fact实现.

'------------------------------------------------ Option Explicit Private Sub Form_Click()

Dim i As Integer, s As Integer

'**********ERROR* *********

For i = 1 To 7

s = s + fact(i)

Next i

Print s

End Sub

'**********ERROR* *********

Public Function fact() Dim t As Integer, i As Integer

t = 1

For i = 1 To n

t = t * i Next i

'**********ERROR* *********

fact = i

End Function

12620题目:编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。

'------------------------------------------------ Option Explicit Private Sub HScroll1_Scroll()

'**********ERROR* *********

Timer1.Interval = HScroll1.Min - HScroll1.Value

End Sub

Private Sub Timer1_Timer()

'**********ERROR*

*********

If Label1.Left <= Form1.Width Then

'**********ERROR* *********

Label1.Left = Label1.Width

Else

Label1.Left = Label1.Left + 100

End If

End Sub 12624.题目:程序功能:求1+2+3……,直到其和超出3000为止,并输入结果。

'------------------------------------------------ Option Explicit Private Sub Form_Click()

Cls

Dim i As Integer

Dim s As Single

i = 1

'**********ERROR*

*********

s = 0

Do

'**********ERROR* *********

i = i + 2

s = s + i

'**********ERROR* *********

Loop s > 3000

Print "从1 到:"; i; "的和是"; s

End Sub

12629.题目:下面的程序段用于实现以下功能:建立一顺序文件,存放10名同学的学号和三门功课成绩,显示该文件内所有记录,并同时显示其总分和平均分。

'------------------------------------------------ Option Explicit Private Sub Form_Click()

Dim no%, c1%, c2%, c3%, i As Integer

'**********ERROR* *********

Open "c:\2.txt" For Input As #1

For i = 1 To 10

no = InputBox("请输入学号")

c1 = InputBox("请输入数学成绩")

c2 = InputBox("请输入语文成绩")

c3 = InputBox("请输

入外语")

Write #1, no, c1, c2, c2

Next i

Close #1

'**********ERROR* *********

Open "c:\2.txt" For Output As #1

For i = 1 To 10

'**********ERROR* *********

Print #1, no, c1, c2, c3

Print no, c1, c2, c3, c1 + c2 + c3, (c1 + c2 + c3) / 3

Next i

Close #1

End Sub 12677.题目:求s=72+102+132+……832的值。

'------------------------------------------------ Option Explicit Private Sub Form_Click()

Cls

Dim s As Long

Dim i As Integer

'**********ERROR* *********

s = 1

'**********ERROR* *********

For i = 7 To 832

s = s + i

'**********ERROR* *********

loop 30

Print s

End Sub

12683.题目:产生30个小于100的成绩随机数,并统计出优、良、中等、及格、不及格数的个数,并计算出成绩属于优秀段的成绩平均分。

'------------------------------------------------ Option Explicit Private Sub Form_Click()

Dim k%, a%, bjg%, jg%, zd%, lh%, yx As Integer

Dim pjf As Integer

Randomize

pjf = 0

For k = 1 To 30

'**********ERROR* *********

a = Int(Rnd())

Select Case a

Case 0 To 59

bjg = bjg + 1 '不及格

Case 60 To 69

jg = jg + 1 '及格

Case 70 To 79

zd = zd + 1 '中等

Case 80 To 89

lh = lh + 1 '良好

Case 90 To 100

yx = yx + 1 '优秀

'**********ERROR* *********

pjf = pjf + 1

End Select

Next k

'**********ERROR* *********

If yx > 0 Then pjf = pjf / 30

Debug.Print "不及格" + Str$(bjg) + "人,及格" + Str$(jg) + "人,中等" + Str$(zd) + "人";

Debug.Print "良好" + Str$(lh) + "优秀" + Str$(yx) + "人"

Debug.Print "优秀分数段成绩平均分" & pjf

End Sub

12687.'题目:使用顺序文件读写方式编写一个简单的记事本应用

程序,

' 基本逻辑是:假设在考生目录中有一个名为exam.txt的文本文件。当点击"打开"按钮(Command1)时,程序将exam.Txt文件中的内容显示在文本框(Text1)中,当点击"新建"按钮(Command2)时,清空Text1中的内容;用户可以在Text1中进行编辑操作,当点击"保存"按钮(Command3)时,将Text1中的内容保存在exam.txt文件中。当点击"退出"按钮(Command4)时关闭本窗体。

'------------------------------------------------ Option Explicit Private Sub Command1_Click()

Dim A As String

Text1 = ""

Open "exam.txt" For Input As #1

Do While Not EOF(1)

'**********ERROR* *********

Input #0, A

Text1 = Text1 + A

Loop

'**********ERROR* *********

Close #0

End Sub

Private Sub

Command2_Click()

Text1 = ""

End Sub

Private Sub Command3_Click()

Open "exam.Txt" For Output As #1

'**********ERROR* *********

Input #1, Text1

Close #1

End Sub

Private Sub Command4_Click()

Unload Me

End Sub

12697.'题目:以下程序段用于打印如图1所示的九九乘法表:

'------------------------------------------------ Option Explicit Private Sub Form_Click()

Dim i As Integer, j As Integer, k As Integer Print Tab(30); "9*9 table"

Print: Print

Print " * ";

For i = 1 To 9

'**********ERROR* *********

Print Tab(i * 6); i Next i

Print

For j = 1 To 9

Print j; " ";

'**********ERROR*

*********

For k = 1 To 9

'**********ERROR* *********

Print Tab(j * 6); j * k; " ";

Next k

Print

Next j

End Sub

12701.'题目:用辗转相除法求两个整数的最大公约数。

'------------------------------------------------ Option Explicit Function gcd(ByVal m As Integer, ByVal n As Integer) As Integer Dim r As Integer

r = m Mod n

Do While r <> 0

'**********ERROR* *********

n = m

n = r

r = m Mod n Loop

'**********ERROR* *********

gcd = r

End Function

Private Sub Form_Click()

Dim a As Integer, b As Integer, c As Integer

a = InputBox("输入一个整数")

b = InputBox("输入一个整数")

a = Val(a)

b = Val(b)

'**********ERROR* *********

Call gcd(a, b)

Print a, b, c

End Sub

12710.'题目:输出40以内能够被3整除的数,要求输出结果为5个数一行。

'------------------------------------------------ Option Explicit Private Sub Form_Click()

Cls Dim x As Integer

Dim i As Integer

'**********ERROR* *********

i = 1

For x = 1 To 40

If (x / 3) = (x \ 3) Then '**********ERROR* *********

Print x

i = i + 1

End If

If i Mod 5 = 0 Then

Print

End If

'**********ERROR* *********

step i

End Sub

12720.题目:请根据下列描述编写购物优惠程序。某商场为了

' 加速促成商品流通,采用购物打折的优惠办法,每

' 位顾客一次购物(1)在100元以上者,按九五折优惠;

' (2)在200元以上者,按九折优惠;(3)300元以上

' 者,按八折优惠;(4)500元以上者按七折优惠。

'------------------------------------------------ Option Explicit Private Sub Command1_Click()

Dim x As Single, y As Single

x = Val(Text1.Text)

If x < 100 Then

'**********ERROR* *********

x = y

Else

If x < 200 Then

y = 0.95 * x

Else

If x < 300 Then

y = 0.9 * x

Else

If x < 500 Then

y = 0.8 * x

Else

y=0.7*x

'**********ERROR* *********

Else If

End If

End If

End If

'**********ERROR* *********

Text2.Text = x End Sub

12728.题目:下面的程序段用于删除数组中指定位置的数字,如果位置错误给出提示,否则分别显示删除前后的数组元素

'------------------------------------------------ Option Explicit Private Sub Form_Click()

Dim a(10) As Integer, x As Integer, i As Integer, k As Integer

For i = 1 To 10

a(i) = Int(Rnd * 90) + 10

Print a(i);

Next i

Print

x = InputBox("请输入要删除第几位数字")

If x > 0 And x <= 10 Then

'**********ERROR* *********

For k = x To 10

'**********ERROR* *********

a(k) = a(k -1)

Next k

Print "删除后的数组:"

For i = 1 To 9

Print a(i);

Next i

Else

Print "删除位置错误"

'**********ERROR* *********

End

End Sub

1、题目:下面程序的作用是产生100以内的全部素数,并按每行5个数据输出。

Private Function prime(ByVal n As Integer)

Dim i As Integer prime = 1

If n <= 1 Then prime = 0

'**********ERROR*** *******

For i = 2 To n - 1 If n Mod i = 0 Then prime = 0

Next i

End Function

Private Sub

Form_Click()

Dim i As Integer, k As Integer

k = 0

For i = 1 To 100 If prime(i) = 1 Then

'**********ERROR*** *******

Print Tab((k Mod 5) * 8); i;

k = k + 1

'**********ERROR*** *******

If k Mod 5 = 0 Then Print ;

End If

Next i

End Sub

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

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

计算机专业模拟试卷(程序填空和程序改错)

一、程序填空 1、有学生表ST,其中“编号”(N,2,0) 字段值从1开始连续排列。以下程序欲 按编号1,9,17,25……的规律抽取学 生参加比赛,并在屏幕上显示参赛学生 的编号,请填空。 USE ST DO WHILE NOT EOF() IF MOD__________ ??编号 ENDIF SKIP ENDDO 2、通过键盘输入读者的借书证号,在“读 者”表和“借阅”表中查找该读者及借 书的有关信息。 OPEN DATABASE BOOKS DO WHILE ___________ ACCEPT”请输入借书证号:” TO ZH SELECT * FROM 读者,借阅WHERE 读者.借书证号=借阅.借书证号AND ; 读者.借书证号=ZH WAIT“继续查询(Y/N)?”TO YN IF UPPER(Y/N)<>“Y” _______________________ ENDIF ENDDO _______________________ 3、将“借阅”表中借书日期超过一年且还 没有归还的记录的“标记”字段填充“*”。USE 借阅 DO WHILE _________ IF 还书日期={/} AND DA TE()—借书日期>365 REPLACE ___________ ENDIF SKIP ENDDO USE RETURN 4、一个自定义函数FX,计算F(X) =EX+3X+10的值,并编写一个主程序调 用FX函数,分别计算变量X由5到10 (步长为1)的函数值 *FX.PRG FOR I=5 TO 10 ?“X=”,I,“F(X)=”,_________ NEXT RETURN FUNCTION FX(X) ________________ RETURN F 5、下列程序根据输入的学生成绩,来判断 学生成绩等级,其中成绩大于或等于90分 的为优秀,75-90的为良好,60-74为及格, 小于60分的为不及格,请正确补充程序运 行。 Clear Set talk off ____________(“请输入成绩:”) to cj Do case Case cj<60 Dj=”不及格” Case cj<75 Dj=”及格” Case cj<90 Dj=”良好” ____________ Dj=”优秀” Endcase ? Dj Set talk on 6、设表STU.DBF中有“学号、姓名、性别、 出生日期、班级”等字段,程序完成根据姓 名进行的查询: Set talk off Use stu Store space(6) to xm Index on 学号to xh accept “输入姓名:” to xm locate for 姓名=xm display else ?“查无此人” Endif Wait “继续吗?”to yn If upper(yn)=”N” Exit Else Loop Endif Enddo Use Set talk off 7、请阅读下列判断一个自然数是否为质数 的程序,并将程序填空完整. Set talk off Input”请输入一个大于1的自然数:” to n K=0 &&K的值为0表示所输入的自然数是 质数, 为1表示不是质数 j=2 Do while j

程序改错题

程序改错题 (注意:每小题只有1行有错误,答题时请指出错误位置并给出改正结果)1. 输出计算结果。 main() { int a=b=10; a+=b+5; b*=a+=10; printf("%d%d\n",a,b); } 2. 输出计算结果。 #include 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 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 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); }

程序改错基本题

程序改错 一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。 1.求1?2?3?4? ?n 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

程序改错1

第1题(10.0分)题号:421 /*-------------------------------- 【程序改错】 -------------------------------- 功能:给一个不多于5位的正整数,要求: 一、求它是几位数, 二、逆序打印出各位数字。 --------------------------------*/ #include"stdio.h" main( ) { /**********FOUND**********/ long a,b,c,d,e,x, scanf("%ld",&x); a=x/10000; /**********FOUND**********/ b=x/10000/1000; c=x%1000/100; d=x%100/10; e=x%10; /**********FOUND**********/ if (a==0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c); else if (d!=0) printf("there are 2, %ld %ld\n",e,d); else if (e!=0) printf(" there are 1,%ld\n",e); getch(); } 答案: 1). long a,b,c,d,e,x; 2). b=x%10000/1000; 3). if (a!=0) 或 if (!a) 第2题(10.0分)题号:417 /*-------------------------------- 【程序改错】 -------------------------------- 功能:下题是一段有关结构体变量传递的程序. --------------------------------*/ #include "stdio.h" struct student { int x; char c; } a; main() { a.x=3; /**********FOUND**********/ a.c='a' f(a); /**********FOUND**********/ printf("%d,%c",a.x,b.c); getch(); } f(struct student b) { b.x=20; /**********FOUND**********/ b.c=y; } 答案: 1). a.c='a'; 2). printf("%d,%c",a.x,a.c); 3). b.c='y'; 第1题(10.0分)题号:440 /*-------------------------------- 【程序改错】 --------------------------------

C语言程序改错及填空题

下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0 struct stud { long num; char name[10]; float score; struct stud *next; }; /* …………… comment …………… */ int n; struct stud create() 序中有两处错误代码,请改正.注意,不得改变程序结构。 #include <> main() { int a[8],*p=a; int i,j; int tempmin,tempcode; printf("\n input the numbers:\n"); for (i=0;i<8;i++) scanf("%d",p+i);

tempmin=*p; for (i=0;i<7;i++) { for (j=i;j<8;j++) if (j==i||*(p+j)

程序改错包括答案版本.docx

12592 '题目 : 编程求一个十进制整数n 的各位数字之和,设n 为小于或等于 5 位的数。'------------------------------------------------ Option Explicit Private Sub Form_Click() Dim N As Integer, Sum As Integer, S1 As String, S2 As String Dim i As Integer, Ch As String Sum = 0 N = InputBox(" 输入整数n") S1 = Str(N) S1 = Trim(S1) For i = 1 To Len(S1) '**********ERROR********** Ch = Mid(N, i, 1) '**********ERROR********** Sum = Val(Ch) Next i Print " 该整数的各位数之和是: "; Sum End Sub 答案: Ch=Mid(S1 , i , 1) Sum = Sum + Val(Ch) 12610'题目:程序功能根据输入的学习成绩, 分别显示优秀 (90 分以上 ), 良好 (75 分以上 ), 及格 (60 分以上 )不及格四个等级 . '------------------------------------------------ Option Explicit Private Sub Form_Click() Cls Dim i As Integer i = InputBox(" 请输入学习成绩") Select Case i '**********ERROR********** Case 0 < i < 100 MsgBox " 成绩应该在0--100 之间 """ '**********ERROR********** Case 90 Print " 优秀 " Case 75 To 89 Print " 良好 " Case 60 To 74 Print " 及格 " '**********ERROR********** Case MsgBox " 不及格 ", vbCritical End Select End Sub 答案: Case 100 < x or x < 0 Case 90 to 100 Case Else 12616.题目:求 s=1!+3!+5!+7! ,阶乘的计算用Function 过程 fact 实现 . '------------------------------------------------ Option Explicit Private Sub Form_Click() Dim i As Integer, s As Integer '**********ERROR********** For i = 1 To 7 s = s + fact(i) Next i Print s End Sub '**********ERROR********** Public Function fact() Dim t As Integer, i As Integer t = 1 For i = 1 To n t = t * i Next i '**********ERROR********** fact = i End Function 答案: For i = 1 To 7 Step 2 Public Function fact%(n%) fact = t 12620 题目 :编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。 '------------------------------------------------ Option Explicit Private Sub HScroll1_Scroll() '**********ERROR********** Timer1.Interval = HScroll1.Min - HScroll1.Value End Sub Private Sub Timer1_Timer() '**********ERROR********** If Label1.Left <= Form1.Width Then '**********ERROR**********

VB程序设计例题-程序改错程序填空程序设计

'以下程序段用于输出杨辉三角:结果样式如图1 ' Private Sub Form_Click() Const n = 10 Dim arr(n, n) As Integer For I = 1 To n arr(I, I) = 1 '**********SPACE********** 【arr(I, 1) = 1】 Next I For I = 3 To n For j = 2 To I - 1 '**********SPACE********** arr(i, j) =arr(i-1,j-1)+arr(i-1,j) Next j Next I For I = 1 To n For j = 1 To I '**********SPACE********** 【print arr(I,j)】 Next j Print Next I End Sub Option Explicit '------------------------------------------------ '【程序改错】 '------------------------------------------------ '题目:用自定义函数的方法求sum(x),求当-1≤x≤1时,' sum(x)=x/2!+x^2/3!+x^3/4!+……+x^n/(n+1)!, ' 当x〉1或x〈-1时,函数值为0。当n〈=0时,输入数' 据错误。X、N都是由用户输入。 '------------------------------------------------ '注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click() Dim s As Single Dim n As Integer, x As Single, k As Integer n = Val(InputBox("Please input a integer value:"))

c语言程序设计第五版习题答案

c语言程序设计第五版习 题答案 Prepared on 24 November 2020

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、dowhile语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { inta1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main()

{ inta1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* IloveCprograms! ************************* 【分析与提示】 ①要有文件包含语句#include<>。C语言中没有数据的输入、输出等功 能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf 等来实现的。这些函数的说明都包括在文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干 条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include<> main() { printf("************************\n"); printf("IloveCprograms!\n"); printf("************************\n"); } 第2章数据类型及其运算一.简答题 1.C语言中的数据类型主要有哪几类 【解答】短整型(shortint) 整型整型(int) 长整型(longint) 基本类型字符型(char)(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组类型

程序改错完整版---C语言

(一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。#include "stdio.h" #define N 20 void fun(int a[], int n) { int i, j, t, k; for (j = 0 ;j < n-1 ;j++) { /**********ERROR**********/ k = j for (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

程序改错2

【程序改错-1】 题目:在一个一维整型数组中找出其中最大的数及其下标。程序中共有4条错误语句,请改正错误。『错误答案』: 1 int fun(int *a,int *b,int n) 2 *b=c-a;} 3 scanf("%d",&a[i]); 4 max=fun(a,&p,N); 【程序改错-2】 题目:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出数组元素。程序中共有4条错误语句,请改正错误。 『错误答案』: 1 scanf("%d",p++); 2 max=p; 3 if(★max★==★arr ★) 4 for(i=0;ii;i++) 或 for(p=arr;pj;j++) 或 for(j=0;jj;j++) 3 if(x[j]>x[★j★+★1★]) 或 if(x[★j★+★1]★ =0;i--) 或 for(i=N-2;0<=i;i--) 3 a[★i★+★1 ★]=a[i]; 4 break;} 『Turbo C——程序改错』【程序改错-5】 题目:将一个字符串中第m个字符开始的全部字符复制成为另一 个字符串。 程序中共有4条错误语句,请改正错误。 『错误答案』: 1 { char *p1,*p2; 或{ char *p2,*p1; 2 p1= ★str1★+★m★ -1; 或 p1=-1+★str1★+★m★; 3 while(*p1) 4 strcopy(str1,str2,m); 【程序改错-6】 题目:以下程序的功能是求如下表达式:请改正程序中的错误,使程序能得到正确的运行结果。 『错误答案』: 1 scanf("%d",&n); 2 float fun(int n) 3 for(i=1;i<=n;i++) 或 for(i=1;n>=i;i++) 或 for(i=1;ii;i++) 4 s+=1.0/t 或 s=★s★+★1.0★/(float)t; 或 s=★s★ +★1.0★/t; 或 s+=1.0/(float)t 【程序改错-7】 题目:下面程序的功能是利用二维数组输出如图所示的图形。请改正程序中的错误,使程序能得到正确的运行结果。『错误答案』: 1 #define N 7 2 a[i][j]=' '; 3 z=z-1; 或 z--; 或 z=-1+z; 或 z=(n+1)/2-1; 或 z=(1+n)/2-1 4 printf("%c",a[i][j]); 【程序改错-8】 题目:输入一行英文文本,将每一 个单词的第一个字母变成大『错误 答案』: 1 fun(char *p) 或 fun(char p[]) 2 while(*p!='\0') 或 while(*p) 3 k=1;} 4 p++; 或 p=1+p; 或 ++p; 或 p=p+1; 【程序改错-9】 题目:将一个字符串中的大写字母 转换成小写字母。 例如:输入aSdFG输出为 asdfg。 『错误答案』: 1 char fun(char *c) 2 return *c; 或 return (*c); 或 return(*c); 3 { char s[81],*p=s; 4 putchar(*p); 或 printf("%c",*p); 【程序改错-10】 题目:将若干学生的档案存放在一 个文件中,并显示其内容。错误答 案』: 1 { struct student *p 2 FILE *fp; 3 for(p=stu;p<★stu★ +★3★;p++) 或 for(p=stu;★ stu★+★3★>p;p++) 或 for(p=stu;p<=★stu★+★2 ★;p++) 或 for(p=stu;★stu★+ ★2★>=p;p++) 4 printf("%4d %-10s %4d\n",(*p) .num ,p->name,(*p).age); 【程序改错-11】 题目:下列给定程序中,函数fun 的功能是:判断m是否为素数,若 是返回1,否则返回0。主函数的 功能是:按每行5个输出1-100 之间的全部素数。『错误答案』: 1 int fun( int m) 或 fun( int m) 2 for(i=2;ii;i++) 或 for(i=2;i<=m-1;i++) 或 for(i=2;m-1=>i;i++) 3 if(★m%i★==★0★) k=0; 4 return k; 或 return(k); 【程序改错-12】 题目:函数fun的功能是:用下面 的和式求圆周率的近似值。直 到最后一项的绝对值小于 等于0.0001。 错误答案』: 1 #include "math.h" 2 float s=0,t=1,p=1; 或 float s=0,p=1,t=1; 或 float p=1,s=0,t=1; 或 float p=1,t=1,s=0; 或 float t=1,p=1,s=0; 或 float t=1,s=0,p=1; 3 while(fabs(t)>1e-4) 或 while(0.00010.0001) 4 printf("pi=%f\n",★ s★*★4★); 【程序改错-13】 题目:下列给定程序中,函数fun 的功能是:求1到10的阶乘的 和。主函数和fun函数中, 各有两个错误,\『错误答案』: 1 for(i=1;i<=10;i++) 或 for(i=1;10>=i;i++) 或 for(i=1;i<11;i++) 或 for(i=1;11>i;i++) 2 s=★s★+★fac(i)★; 或 s+=fac(i); 3 float y=1.0; 或 float y=1; 4 return y; 或 return(y); 或 return (y); 【程序改错-14】 题目:函数fun的功能是:求1到 20的阶乘的和。请改正程序中的错 误,使它能得出正确的结果。 『错误答案』: 1 t=1; 或 t=1.0; 2 t=★t★*★j★; 或 t*=j; 3 s=★s★+★t★; 或 s+=t; 4 printf("jiecheng=%f\n",s); 【程序改错-15】 题目:函数fun的功能是:输出 Fabonacci数列的前20项,要求变 量类型定义成浮点型,输出 时只输出整数部分,输出项 数不得多于或少于20。 『错误答案』: 1 printf("%8.0f",f1); 或 printf("%f",f1); 2 for(i=1;i<20;i++) 或 for(i=1;20>i;i++) 或 for(i=2;i<=20;i++) 或 for(i=2;20>=i;i++) 或 for(i=1;i<=19;i++) 或 for(i=1;19>=i;i++) 3 f1=f2; 4 f2=f3; 【程序改错-16】 题目:函数fun的功能是:根据整 型形参m的值,计算如下公式的值。 1 1 1 t = 1- —— - —— - ... - —— 2x2 3x3 mxm 『错误答案』: 1 for(i=2;i<=m;i++) 或 for(i=2;m>=i;i++) 或 2 y-=1.0/(i*i); 或 y=y-1.0/(i*i); 或 3 return y; 或 return (y); 【程序改错-17】 题目:函数fun的功能是:实现交 换两个整数的值。例如给a和b 分别输入3和6 ,输出为 a=6 b=3『错误答案』: 1 void fun (int *a,int *b) 或 fun (int *a,int *b) 2 t=*a; 3 *a=*b; 4 *b=t; 【程序改错-18】 题目:函数fun的功能是:计算并 输出k以内最大的10个能被13 或17整除的自然数之和。k 的值由主函数传入,若k的值 为500,则函数值为4622。 请更改程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 while (★(2<=k)★&& ★(mc<10)★) 或 while (★(k>=2) ★&&★(10=k;k++) 【程序改错-21】 题目:函数fun的功能是:根据以 下公式求π值,并作为函数值 返回。例如,给指定精度的 变量eps输入0.0005时,应当 输出Pi=3.140578。 『错误答案』: 1 t=1; 或 t=1.0; 2 while (t>eps) 或 while (eps=eps) 或 while (eps<=t) 3 t=t*n/(2*n+1); 或 1.0*n/(2*n+1)*t 4 return (2*s); 或 return(2*s); 或 return (s*2); 或 return(s*2); 【程序改错-22】 题目:函数fun的功能是:求出两 个非零正整数的最大公约数, 并作为函数值返回。例如, 若给num1和num2分别输入49 和21,则输出的最大公约数 为7。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 a=b; 2 b=t; 3 r=a%b;} 4 return b; 或 return (b); 或 return(b); 【程序改错-23】 题目:在主函数中从键盘输入若干 个数放入数组中,用0结束输 入并放在最后一个元素中。 下列给定程序中,函数fun的 功能是:计算数组元素中值 为正数的平均值(不包括0)。 例如,数组中元素的值依次 为39,-47,21,2,-8,15, 0,则程序的运行结果为 19.250000。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 double sum=0.0; 2 while(★s[i]★!=★0 ★) 或 while!(s[i]==0) 或 while!(0==s[i]) 3 sum/=c; 或 sum=sum/c; 4 return sum; 或 return (sum); 【程序改错-24】 题目:fun函数的功能是:先从键 盘上输入一个3行3列矩阵的各 个元素的值,然后输出主对 角线上的元素之和sum。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 sum=0; 2 scanf("%d",&a[i][j]); 3 sum=★sum★+★ a[i][i]★; 或 sum+=a[i][i]; 4 printf("sum=%d\n",sum); 【程序改错-25】 题目:fun函数的功能是:给定n 个实数,输出平均值,并统计 在平均值以下(含平均值) 的实数个数。例如,n=6时, 输入23.5, 45.67, 12.1, 6.4,58.9, 98.4所得平均值 为40.828335,在平均值以 下的实数个数应为3。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 float xa=0; 或 float xa=0.0; 2 for(j=0;jj;j++) 或 for(j=0;n-1>=j;j++) 或 for(j=0;j<=n-1;j++) 3 for(j=0;jj;j++) 或 for(j=0;j<=n-1;j++) 或 for(j=0;n-1>=j;j++) 4 return c; 或 return (c); 【程序改错-26】 题目:fun函数的功能是:找出大 于m的最小素数,并将其作为 函数值返回。 请改正程序中的错误,使它 能得出正确的结果。 『错误答案』: 1 for(k=2;kk;k++)

有目录-程序改错部分试题及答案(2015-2016-1)

目录 功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。 (1) 功能:求如下表达式: (2) 功能:判断m是否为素数,若是返回1,否则返回0。 (4) 功能:用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于0.0001。 (5) 功能:求1到20的阶乘的和。 (6) 功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出 整数部分,输出项数不得多于或少于20。 (7) 功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的 元素之和sum。 (8) 功能:找出大于m的最小素数,并将其作为函数值返回。 (9) 功能:有一数组内放10个整数,要求找出最小数和它的下标,然后把它和数组中最前 面的元素即第一个数对换位置. (10) 功能:一个已排好序的一维数组,输入一个数number,要求按原来排序的规律将 它插入数组中. (11) 第1题/*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。 ------------------------------------------------------*/ #include #define N 11 main() { 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

相关文档
最新文档