程序改错--答案版

合集下载

C语言程序改错题及答案

C语言程序改错题及答案
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{ int n,i;
/***** 1 *****/
char str;// char*str
scanf("%d\n",&n); str=(char*)malloc(n); gets(str);
int a[N]={5,4,3,2,1,9,8,7,6,0};
printf("\nThe array is:\n"); /*输出数组元素*/
for (i=0;i<N;i++)
printf("%5d",a[i]);
for (i=0;i<N-1;i++ห้องสมุดไป่ตู้ /*排序操作*/
{
min = i;
for (j=i+1; j<N; j++)
/****** 2 *****/
putchar(\n);//‘\n’
}
}
12、在考生目录下,有Modify.c程序,该程序中“/***** N *****/”的下一行中有错误,
请改正(注意:不得加行、减//行、加句、减句,否则后果自负)。
该程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。
}
11、在考生目录下,有Modify.c程序,该程序中"/***** N *****/"的下
一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)

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

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

11*程序名:TEST.prg*检索选修课程门数等于3门或3门以上,每门课程成绩大于或等于70分的每个学生的*学号,姓名,性别,平均成绩,最低分和选课门数,并将结果存储到表NEW_TEST中.*以下程序有三处错误,请改正OPEN DA TABASE SDBSELECT 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 ALL9*程序名:dbtest3.prg*定义一个视图VS1,*检索选课门数是3门以上的每个学生的学号、姓名、平均成绩、最低分、选课门数和院系编号,*并按平均成绩降序排序.*以下程序有三处错误,请改正SET TALK OFFSET SAFETY OFFopen DATABASE SDB &&****Error***修改本行的语法错误,不许注释掉本行或删除本行CREATE VIEW VS1SELECT STUDENT2.学号, 姓名, A VG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数, 院系编号;FROM STUDENT2, sc; &&*************Error*************WHERE STUDENT2.学号= SC.学号;GROUP BY SC.学号HA VING COUNT(课程号) > 3;ORDER BY 平均成绩desc &&*************Error*************CLOSE DATABASERETURNi=2create table four(结果I)do while i<=1000if i%3=0insert into four values(i) &&错误语句请修改endifi=i+1 && 请增加一条语句enddocreate 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.dbfSELECT Department.部门名, count(*) as 人数_男;FROM employee_m!department INNER JOIN employee_m!employee ;ON Department.部门号= Employee.部门;where 性别="男";group by 部门号;INTO TABLE ttwo.dbfSELECT tone.部门名, ttwo.人数_男, 总人数-人数_男as 人数_女, tone.总人数;FROM tone INNER JOIN ttwo ;on tone.部门名=ttwo.部门名;order by tone.部门名desc;INTO TABLE tableone12*程序名: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 OFFSET SAFETY OFFSELECT 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************RETURN18 $$75所有器件的单价增加5元UPDATE order_detail1 SET 单价=单价+ 5计算每种器件的平均单价SELECT 器件号,A VG(单价) AS 平均价FROM order_detail1 group BY 器件号INTO CURSOR lsb&&查询平均价小于500的记录SELECT * FROM lsb where平均价< 50019&&功能:如果用户输入的用户名和口令一致,则在提示信息后关闭该表单;&&否则重新输入用户名和口令。

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

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

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

'------------------------------------------------Option ExplicitPrivate Sub Form_Click()Dim N As Integer, Sum As Integer, S1As String, S2 As StringDim i As Integer, Ch As StringSum = 0N = 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 iPrint " 该整数的各位数之和是: "; Sum End Sub答案: Ch=Mid(S1 , i , 1)Sum = Sum + Val(Ch)12610'题目:程序功能根据输入的学习成绩, 分别显示优秀 (90 分以上 ), 良好 (75 分以上 ), 及格 (60 分以上 )不及格四个等级 .'------------------------------------------------Option ExplicitPrivate Sub Form_Click()ClsDim i As Integeri = InputBox(" 请输入学习成绩")Select Case i'**********ERROR**********Case 0 < i < 100MsgBox " 成绩应该在0--100 之间 """ '**********ERROR**********Case 90Print " 优秀 "Case 75 To 89Print " 良好 "Case 60 To 74Print " 及格 "'**********ERROR**********CaseMsgBox " 不及格 ", vbCritical End SelectEnd Sub答案: Case 100 < x or x < 0Case 90 to 100Case Else12616.题目:求 s=1!+3!+5!+7! ,阶乘的计算用Function 过程 fact 实现 .'------------------------------------------------Option ExplicitPrivate Sub Form_Click()Dim i As Integer, s As Integer'**********ERROR**********For i = 1 To 7s = s + fact(i)Next iPrint sEnd Sub'**********ERROR**********Public Function fact()Dim t As Integer, i As Integert = 1For i = 1 To nt = t * iNext i'**********ERROR**********fact = iEnd Function答案: For i = 1 To 7 Step 2Public Function fact%(n%)fact = t12620 题目 :编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。

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

程序改错完整版---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个字符,以相反顺序打印出来。

C语言程序改错答案

C语言程序改错答案
4). s=s1+s2+s3+s4;
题目:编写函数fun计算下列分段函数的值:
x*x+x x<0且x≠-3
f(x)= x*x+5x 0≤x<10且x≠2及x≠3
x*x+x-1 其它
答案:
3). while(fabs(t)>1e-4) 或 while(0.0001<fabs(t)) 或 while(1e-4<fabs(t)) 或 while(fabs(t)>0.0001)
4). printf("pi=%f\n",★s★*★4★);
题目:给定程序MODI1.C中函数fun的功能是:将长整型
2). for( i = 100; i <= m; i += 100 )
3). y += 1.0 / d ;
题目:给定程序MODI1.C中函数fun的功能是:
将长整型数中每一位上为偶数的数依次取出,
构成一个新数放在t中。高位仍在高位,低位
仍在低位。
2 3 5 7
请改正程序中的错误,使它能得出正确的结果。
答案:
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). b.c='y';
题目:利用条件运算符的嵌套来完成此题:学习
成绩>=90分的同学用A表示,60-89分之间

大学C语言期末考试练习题程序改错(带详解答案)

大学C语言期末考试练习题程序改错(带详解答案)

y=3.5+x;
printf(“y=%d”);
}
正确的:
int x; float y;
printf(“y=%f”,y);
6 编程计算下面分段函数, 输入 x, 输出 y
x 1 x 0 y 2x 1 0 x 10
3x 11 x 10
main() { int x,y;
第三处改为:if(n%3==0)
第四处改为:sum=sum+n;
8. 求表达式 c ab 的值
#include <stdio.h>
#include <math.h>
int fun(int x, int y);
main()
{ int a,b; float f; scanf(“%d,%d”,a,b); //与改错第 1 题中的 scanf 错误相同 if(ab>0){ // C 语言中乘号不能省略,且用*表示乘法运算 fun(a,b); // 调用带有返回值的函数,应将函数的返回值保存在变量里
} 第四行改为:for(j=0;j<5;j++) 第五行改为:scanf(“%d”,&a[j]); 第七行改为:for(j=1;j<5;j++) 第八行改为:if(max<a[j]) 第十三行改为:printf(“下标:%d\n 最大值:%d”, m,max)
3.用一个函数求两个数之和。 sum(x,y) //函数定义的一般形式 p173-174 { float z; z=x+y; return; //return 语句后面可以返回 0、常量、变量和表达式的值。 } main() { float a,b; int c; / /若定义变量的语句有错误,常见考点有两个:(1)变量的类型,(2)在定

程序改错

程序改错

下面给定程序中,函数fun的功能是:判断用户输入的任意一个字符串是否为"回文串"。

所谓"回文串"是指从开头读和从末尾读均为相同字符,例如:"HELLEH"。

请改正程序中的错误。

注意:不得增行和删行,不得更改程序的结构。

【改错1】错误【参考答案】}while(a[num]!='\0');【改错2】错误【参考答案】if(a[i]!=a[num-1-i])if(a[i]!=a[num-i-1])【改错3】错误【参考答案】}while(i<num/2);【改错4】错误【参考答案】scanf("%s",a);gets(a);功能:用指针作函数参数,编程序求一维数组中的最大和最小的元素值.--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。

【改错1】错误【参考答案】void maxmin(int arr[ ],int *pt1,int *pt2,int n)maxmin(int arr[ ],int *pt1,int *pt2,int n)void maxmin(int *arr,int *pt1,int *pt2,int n)【改错2】错误【参考答案】*pt1=*pt2=arr[0];*pt1=*pt2=*(arr+0);*pt2=*pt1=arr[0];【改错3】错误【参考答案】if(arr[i]>*pt1) *pt1=arr[i];if(*(arr+i)>*pt1)) *pt1=arr[i];if(*pt1<*(arr+i))) *pt1=arr[i];if(*pt1<arr[i]) *pt1=arr[i];【改错4】错误【参考答案】p1=&a;p2=&b;功能:计算并输出k以内最大的10个能被13或17整除的自然数之和。

程序改错题-答案

程序改错题-答案
下列程序有3处错误请按题中的功能要求在不改变程序结构不增加删除语句不调整语句顺序的情况下调试并修改该程序在所修改语句后加字样的注释使其运行能得到正确的结果
1.程序调试题1(X_2_1.C)
调试要求:下列程序不能得到正确的结果,它包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括X_2_1.C文件和X_2_1.EXE文件)保存到目录C:\KS\中。
scanf("%d",&n);
for (r=1,r<=n;r++)
{
area=3.0) continue;
printf("r=%d,square=%d\n",r,area);
}
getch();
}
答案
#include <stdio.h>
main()
{
int r,n;
}
2.程序调试题2(X_2_2.C)
调试要求:下列程序不能得到正确的结果,它包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括X_2_2.C文件和X_2_2.EXE文件)保存到目录C:\KS\中。
功能说明:将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符串形式输出。
printf("\nupper=%d,lower=%d\n",upper,&lower);
getch();
}
答案
#include <stdio.h>
void fun(char *s, int *a, int *b)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

'------------------------------------------------ Option ExplicitPrivate Sub Form_Click()Dim N As Integer, Sum As Integer, S1 As String, S2 As StringDim i As Integer, Ch As StringSum = 0N = 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 iPrint "该整数的各位数之和是:"; Sum End Sub12610'题目:程序功能根据输入的学习成绩,分别显示优秀(90分以上), 良好(75分以上),及格(60分以上)不及格四个等级.'------------------------------------------------ Option ExplicitPrivate Sub Form_Click()ClsDim i As Integeri = InputBox("请输入学习成绩")Select Case i'**********ERROR**********Case 0 < i < 100MsgBox "成绩应该在0--100之间""" '**********ERROR**********Case 90Print "优秀"Case 75 To 89Print "良好"Case 60 To 74Print "及格"'**********ERROR**********CaseMsgBox "不及格", vbCritical End SelectEnd Sub12616.题目:求s=1!+3!+5!+7!,阶乘的计算用Function过程fact实现.'------------------------------------------------ Option ExplicitPrivate Sub Form_Click()Dim i As Integer, s As Integer'**********ERROR**********For i = 1 To 7s = s + fact(i)Next iPrint sEnd Sub'**********ERROR**********Public Function fact()Dim t As Integer, i As Integert = 1For i = 1 To nt = t * iNext i'**********ERROR**********fact = iEnd Function12620题目:编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。

'------------------------------------------------ Option ExplicitPrivate Sub HScroll1_Scroll()'**********ERROR**********Timer1.Interval = HScroll1.Min - HScroll1.ValueEnd SubPrivate Sub Timer1_Timer()'**********ERROR**********If Label1.Left <= Form1.Width Then'**********ERROR**********Label1.Left = Label1.WidthElseLabel1.Left = Label1.Left + 100 End IfEnd Sub12624.题目:程序功能:求1+2+3……,直到其和超出3000为止,并输入结果。

'------------------------------------------------ Option ExplicitPrivate Sub Form_Click()ClsDim i As IntegerDim s As Singlei = 1'**********ERROR**********s = 0Do'**********ERROR**********i = i + 2s = s + i'**********ERROR**********Loop s > 3000Print "从1 到:"; i; "的和是"; sEnd Sub12629.题目:下面的程序段用于实现以下功能:建立一顺序文件,存放10名同学的学号和三门功课成绩,显示该文件内所有记录,并同时显示其总分和平均分。

'------------------------------------------------ Option ExplicitPrivate Sub Form_Click()Dim no%, c1%, c2%, c3%, i As Integer'**********ERROR**********Open "c:\2.txt" For Input As #1For i = 1 To 10no = InputBox("请输入学号")c1 = InputBox("请输入数学成绩")c2 = InputBox("请输入语文成绩")c3 = InputBox("请输入外语")Write #1, no, c1, c2, c2Next iClose #1'**********ERROR**********Open "c:\2.txt" For Output As #1For i = 1 To 10'**********ERROR**********Print #1, no, c1, c2, c3Print no, c1, c2, c3, c1 + c2 + c3, (c1 + c2 + c3) / 3Next iClose #1End Sub12677.题目:求s=72+102+132+……832的值。

'------------------------------------------------ Option ExplicitPrivate Sub Form_Click()ClsDim s As LongDim i As Integer'**********ERROR**********s = 1'**********ERROR**********For i = 7 To 832s = s + i'**********ERROR**********loop 30Print sEnd Sub12683.题目:产生30个小于100的成绩随机数,并统计出优、良、中等、及格、不及格数的个数,并计算出成绩属于优秀段的成绩平均分。

'------------------------------------------------ Option ExplicitPrivate Sub Form_Click()Dim k%, a%, bjg%, jg%, zd%, lh%, yx As IntegerDim pjf As IntegerRandomizepjf = 0For k = 1 To 30'**********ERROR**********a = Int(Rnd())Select Case aCase 0 To 59bjg = bjg + 1 '不及格Case 60 To 69jg = jg + 1 '及格Case 70 To 79zd = zd + 1 '中等Case 80 To 89lh = lh + 1 '良好Case 90 To 100yx = yx + 1 '优秀'**********ERROR**********pjf = pjf + 1End SelectNext k'**********ERROR**********If yx > 0 Then pjf = pjf / 30Debug.Print "不及格" + Str$(bjg) + "人,及格" + Str$(jg) + "人,中等" + Str$(zd) + "人";Debug.Print "良好" + Str$(lh) + "优秀" + Str$(yx) + "人"Debug.Print "优秀分数段成绩平均分" & pjfEnd Sub12687.'题目:使用顺序文件读写方式编写一个简单的记事本应用程序,' 基本逻辑是:假设在考生目录中有一个名为exam.txt的文本文件。

当点击"打开"按钮(Command1)时,程序将exam.Txt文件中的内容显示在文本框(Text1)中,当点击"新建"按钮(Command2)时,清空Text1中的内容;用户可以在Text1中进行编辑操作,当点击"保存"按钮(Command3)时,将Text1中的内容保存在exam.txt文件中。

当点击"退出"按钮(Command4)时关闭本窗体。

'------------------------------------------------ Option ExplicitPrivate Sub Command1_Click()Dim A As StringText1 = ""Open "exam.txt" For Input As #1Do While Not EOF(1)'**********ERROR**********Input #0, AText1 = Text1 + ALoop'**********ERROR**********Close #0End SubPrivate Sub Command2_Click()Text1 = ""End SubPrivate Sub Command3_Click()Open "exam.Txt" For Output As #1'**********ERROR**********Input #1, Text1Close #1End SubPrivate Sub Command4_Click()Unload MeEnd Sub12697.'题目:以下程序段用于打印如图1所示的九九乘法表:'------------------------------------------------ Option ExplicitPrivate Sub Form_Click()Dim i As Integer, j As Integer, k As IntegerPrint Tab(30); "9*9 table"Print: PrintPrint " * ";For i = 1 To 9'**********ERROR**********Print Tab(i * 6); iNext iPrintFor j = 1 To 9Print j; " ";'**********ERROR**********For k = 1 To 9'**********ERROR**********Print Tab(j * 6); j * k; " ";Next kPrintNext jEnd Sub12701.'题目:用辗转相除法求两个整数的最大公约数。

相关文档
最新文档