模拟程序改错题(附参考答案)
最新二级C语言考试题库及答案程序改错专项练习 精华版
1、在考生文件夹下,给定程序MODI.C的功能是:
求一维数组a中所有元素的平均值,结果保留两位小数。
例如,当一维数组a中的元素为:10,4,2,7,3,12,5,34,5,9
程序的输出应为:The aver is: 9.10。
#include <conio.h>
#include <stdio.h>
#include <math.h>
void main()
{
int score,t;
printf("Please enter a score:");
do
{scanf("%d",&score);}
while(score<0||score>100);
t=score/10;
/*************found**************/
#include <stdio.h>
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])
4 2 34
7 3 12
5 6 5
程序的输出应为:The min is: 2。
#include <conio.h>
#include <stdio.h>
void main()
{
计算机程序改错题,及答案
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&&功能:如果用户输入的用户名和口令一致,则在提示信息后关闭该表单;&&否则重新输入用户名和口令。
C语言程序改错——答案
int j,c=0; /**********FOUND**********/
float j=0;
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根保通据护过生高管产中线工资敷艺料设高试技中卷术资0配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高高与中中带资资负料料荷试试下卷卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试.,卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试5交写卷、底重保电。要护气管设装设线备置备4敷高动调、设中作试电技资,高气术料并中课3中试且资件、包卷拒料中管含试绝试调路线验动卷试敷槽方作技设、案,术技管以来术架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
C语言程序改错练习题
C语言程序改错练习题程序改错练习题下面每个程序的划线处有语法或逻辑错误,请找出并改正,使程序符合题意。
1.求1?2?3?4? ?nmain(){ int sum; 正确:int sum=1;int n,i=1;scanf("%d",n); scanf(“%d”,&n);printf(“\n”);while(i<="n)</p">{ sum=sum*i;i++; }printf("sum=%c",sum); printf("sum=%d",sum);}2.求一个数组中最大值及其下标。
main( ){ int max,j,m;int a[5];for(j=1;j<=5;j++) 正确:for(j=0;j<5;j++)scanf(“%d”,a); scanf(“%d”,&a[j]);max=a[0];for(j=1;j<=5;j++) for(j=0;j<5;j++)if(max>a[j]) if(max<a[j])< p="">{ max=a[j];m=j;}printf(“下标:%d\n最大值:%d”, j, max) printf(“下标:%d\n 最大值:%d”, m,max);}3.用一个函数求两个数之和。
sum(x,y) 正确:float sum(float x, float y ){ float z;z=x+y;return ; return z;}main(){ float a,b;int c; float c;scanf("%f,%f",&a,&b);c=sum(a,b);printf("\nSum is %f",sum); printf("\nSum is %f",c);}4. x , y两个数中,让x中存较大的数,y存较小的数#includemain( ){int x , y=200 , z=0;x=180;if ( x<y)< p="">z=x; x=y; y=z; 正确:{ z=x;x=y;y=z;}printf(“x=%d,y=%d\n”,&x,&y);printf(“x=%d,y=%d\n”,x,y);}5.用指针作函数参数,对输入的两个整数按大小顺序输出。
计算机模拟联系题程序改错
C语言程序设计练习三——程序改错【程序改错】:共16个题【程序改错】题号:1-6-z--------------------------------------------------------功能:利用二维数组输出如图所示的图形。
*******************************------------------------------------------------------*/#include <stdio.h>#include <conio.h>/**********FOUND**********/#define N= 7main(){char a[N][N];int i,j,z;for(i=0;i<N;i++)for(j=0;j<N;j++)/**********FOUND**********/a[i][j]=;z=0;for(i=0;i<(N+1)/2;i++){for(j=z;j<N-z;j++)a[i][j]='*';z=z+1;}/**********FOUND**********/z=0;for(i=(N+1)/2;i<N;i++){z=z-1;for(j=z;j<N-z;j++)a[i][j]='*';}for(i=0;i<N;i++){for(j=0;j<N;j++)/**********FOUND**********/printf("%d",a[i][j]);printf("\n");}}『答案』1 #define N 72 a[i][j]=' ';3 z=z-1; 或 z--; 或 z=-1+z;4 printf("%c",a[i][j]);*------------------------------------------------------【程序改错】 1-12--------------------------------------------------------功能:求1到10的阶乘的和。
程序改错包括答案版本.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语言
(一)功能:用选择法对数组中的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个字符,以相反顺序打印出来。
程序改错——精选推荐
程序改错【程序改错】--------------------------------------------------------功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
------------------------------------------------------*/#include <stdio.h>#define N 11main(){int i,number,a[N]={1,2,4,6,8,9,12,15,149,156};printf("please enter an integer to insert in the array:\n");/**********FOUND**********/scanf("%d",&number);printf("The original array:\n");for(i=0;i<N-1;i++)printf("%5d",a[i]);printf("\n");/**********FOUND**********/for(i=N-2;i>=0;i--)if(number<=a[i])/**********FOUND**********/a[i+1]=a[i];else{a[i+1]=number;/**********FOUND**********/break;}if(number<a[0]) a[0]=number;printf("The result array:\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}【程序改错】--------------------------------------------------------功能:判断m是否为素数,若是返回1,否则返回0。
大学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)在定
程序改错答案
二.程序改错1.01、if k>1应改为if(k>1)或if(1<k)2.01、result*=--n应改为result*=n-- 02、应填result;3.01、k++应改为k++; 02、if(m=k)应改为(if(m==k)4.01、IsPrime(int n);应改为IsPrime(int n) 02、if!(n%i)应改为if(!(n%i)) 5.01、if(i%k!=0)应改为if(i%k==0) 02、if(k<i)应改为if(k>=i)6.01、y=0;应改为y=1; 02、d=i-a;应改为d=a-i;7.01、break后应加上一个分号“;”,即break;8.01、fun(int n)应改为double fun(int n) 02、return sum应改为return sum;9.01、long k;应改为long k=1; 02、num\=10;应改为num/=10;10.01、j=1;应改为j=0; 02、while(t!=0&&m!=0&&n!=0)应改为while(t!=0||m!=0||n!=0)11.01、b=a;应改为a=b; 02、return(a);应改为return(b);12.01、void fun(char *s,*t1,*t2,*w)应改为void fun(char *s,char *t1,char*t2,char*w) 02、while(r)应改为while(*r)13.01、int k=1;应改为int k=0; 02、while(*p!=*q)应改为while(*p||*q)14.01、while(*s!= ‘@’)应改为while(*s)或while(*s!= ‘\0’)或while(*s!=0) 02、(*s)++;应改为s++;15.01、s[j]=s[i];应改为s[j++]=s[i]; 02、s[j]= “\0”;应改为s[j]= ‘\0’; 16.01、void upfst (char p)应改为void upfst (char *p)17.01、if(p== ‘’)应改为if(*p== ‘’) 02、*p=toupper(*(p-1));应改为*(p-1)=toupper(*(p-1));18.01、if((tt[i]>= ‘a’)||(tt[i]<= ‘z’))应改为if((tt[i]>= ‘a’)&&(tt[i]<= ‘z’)) 02、tt[i]+=32;应改为tt[i]-=32;19.01、while(i>j)应改为while(i<j)或while(j>i) 02、c=0;应改为*c= ‘\0’;或*c=0; 20.01、if(i%2&&s[i]%2==0)应改为if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0) 02、t[i]= ‘\0’;应改为t[j]= ‘\0’;或t[j]=0;21.01、void fun(char *s,int num[5];应改为void fun(char *s,int num[5]) 02、num[i]=0;应改为num[k]=0; 03、switch(s)应改为switch(*s)22.01、void fun(char *s,int a,int b)应改为void fun(char *s,int *a,int *b) 02、a++;应改为(*a)++; 03、b++;应改为(*b)++23.01、if(r==p)应改为if(*r==*p) 02、if(r== ‘\0’)应改为if(*r== ‘\0’) 24.01、*r=t;应改为r=t;或r=&t[U]; 02、应填r=t;或r=&t[u];25.01、a=NuLL;应改为a=NULL; 02、if(r==p)应改为if(*r==*p)26.01、int fun(char *str,*substr)应改为int fun(char *str,char *substr) 02、for(i=0,str[i],i++)应改为for(i=0;str[i];i++)27.01、c=c-32;应改为c=c+32; 02、c=c-5应改为c=c+5;28.01、if(i+1%5==0)应改为if((i+1)%5==0)29.01、bb[i]=0或*(bb+i)=0 02、bb[5]++或++bb[5]或bb[5]=bb[5]+1或bb[5]+=1 03、p++;或++p;或p+=1;或p=p+1;30.01、void fun(int a,int b)应改为void fun(int *a,int *b) 02、t=b;b=a;a=t;应改为t=*b;*b=*a;*a=t;31.01、t=x;x=y;应改为t=*x;*x=y; 02、return(y);应改为return(t);或return t; 32.01、s=p;应改为p=s; 02、应填p++;或++p;或p+=1;或p=p+1; 03、a[i]= ‘0’;应改为a[i]= ‘\0’;或a[i]=0;33.01、void fun(char str[][],int m,char *pt)应改为void fun(char str[][10],int m,char *pt) 02、pt[i]=str[k,i];应改为pt[i]=str[k][i];34.01、void fun(char s,char t)应改为void fun(char *s,char *t) 02、t[2*d-1]= ‘\0’;应改为t[2*d]= ‘\0’;或t[d+i]= ‘\0’;35.01、fun函数定义少了一个{,应该在int fun(double x[],int n)后面加一个{ 36.01、double fun(char *s,char *t)应改为char *fun(char *s,char *t) 02、(*ss)++;应改为ss++; 03、(*tt)++;应改为tt++;37.01、for(i=j+1;i<n-1;i++)应改为for(i=j+1;i<n;i++) 02、t=i;应改为p=i;38.01、void fun(char a)应改为void fun(char *a)39.01、for(i=strlen(t);i;i--)应改为for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--) 02、if(t[j]<t[j+1])应改为if(t[j]>t[j+1]) 40.01、c=aa[i];应改为ch=aa[i];41.01、void fun(char(*pstr)[6])应改为void fun(char *pstr[6]) 02、if(strcmp(*(pstr+i),pstr+j)>0)应改为if(strcmp(*(pstr+i),*(pstr+j))>0) 03、*(pstr+i)=pstr+j;应改为*(pstr+i)=*(pstr+j);42.01、void fun(int *a,int n);应改为void fun(int *a,int n) 02、m=0;应改为m=i;43.01、for(i=0;i<=s1;i++)应改为for(i=0;i<s1;i++) 02、t[s1]= ‘\0’;应改为t[2*s1]= ‘\0’44.01、void fun(char *p);应改为void fun(char *p) 02、p=q+i;应改为q=p+i; 45.01、if(t=0)应改为if(t==0) 02、zero=count;应改为*zero=count;46.01、c[t]= “\0”;应改为c[t]= ‘\0’;47.01、return 1;应改为return 3; 02、return 3;应改为return 1;48.01、填空sum=0 02、scanf(“%d”,a[i][j]);应改为scanf(“%d,”,&a[i][j]); 49.01、int fun(int m,int xx[])应改为int fun(int m,int xx[][M]) 02、printf(“%4f”,xx[i][j]);应改为printf(“%4d”,xx[i][j]);50.同48题51.01、void fun(int a)应改为void fun(int a[M])或void fun(int a[])或void fun(int *a) 02、a[j]=a[j+1];应改为a[j]=a[j-1];52.01、fun(int **a,int m)应改为void fun(int (*a)[M],int m) 02、a[j][k]=k*j;应改为a[j][k]=(k+1)*(j+1);53.01、n=*p- ‘o’;应改为n=*p- ‘0’; 02、n=n*7+*p- ‘o’;应改为n=n*8+*p- ‘0’54.01、voidfun(int m,int k);应改为void fun(int m,int k) 02、aa[i]=m/k;应改为aa[i]=m%k; 03、printf(“%d”,aa[i]);应改为printf(“%d”,aa[i-1]); 55.01、for(i=0;i<=3;i++)应改为for(i=1;i<=3;i++) 02、if(k>=1&&k<=6)应改为if(k>=0&&k<=6)56.01、d=0;应改为d=1; 02、s=1;应改为s=0; 03、s=s/10;应改为d=d/10; 57.01、for(i=1;i<y;i++)应改为for(i=1;i<=y;i++) 02、t=t/1000;应改为t=t%1000; 58.01、int sum=0.0;应改为double sum=0.0 02、sum\=c;应改为sum/=c;59.01、fun(int m)应改为double fun(int m) 02、for(i=100,i<=m,i+=100)应改为for(i=100;i<m;i+=100)60.01、for(i=2;i<m;i++)应改为for(i=2;i<=m;i++) 02、y-=1/(i*i);应改为y-=1.0/(i*i);61.01、t=1.0-1/i;应改为t-=1.0/i;或t=t-1.0/i;或t-=(double)1/i; 02、应填returnt;62.01、t+=1.0/k;应改为t=+1.0/i; 02、应增加一个返回语句return t;63.01、fun (int n)应改为double fun(int n) 02、b+=c;应改为b=c;64.01、fun(int k)应该为double fun(int k) 02、return s应改为return s; 65.01、while (t>=num)应改为while (fabs(t)>=num) 02、t=s%n;应改为t=s/n; 66.01、fun(n)应改为int fun(int n) 02、if(n=1)应改为if(n==1)67.01、#define FU(m,n) (m/n)应改为#define FU(m,n) (m)/(n) 02、Return (value);应改为return (value);68.01、p=h;应改为p=h->next; 02、p=h->next;应改为p=p->next;69.01、p->next=NULL;应改为p=s; 02、s->data=rand()%m;应改为s->data=rand()%(m-1); 03、return p;应改为return h;70.01、while(p->next)应改为while(p!=NULL)或while(p) 02、p=h->next;应改为p=p->next;71.01、a[i+1]=a[i];应改为a[i]=a[i+1];72.01、p=j应改为p=j; 02、p=i;应改为p=j;73.01、t=s[k];应改为t+=s[k]; 02、*aver=&ave;应改为*aver=ave;74.01、void fun(char str,char ch)应改为void fun(char *str,char ch) 02、if(*str==ch)应改为if(*str== ‘\0’) 03、str[1]= ‘0’;应改为str[1]= ‘\0’;或str[1]=0;75.01、if((k%13=0)||(k%17=0))应改为if((k%13==0)||(k%17==0)) 02、应加一个} 76.01、void fun(long s,long t)应改为void fun(long s,long *t) 02、while(s<0)应改为while(s>0)77.01、void fun(int a[],int m)应改为int fun(int a[],int m) 02、if(m>=a[mid]应改为if(m>a[mid])78.01、for(i=2;i<m;i++)应改为for(i=2;i<=m;i++) 02、y+=1/(i*i);应改为y+=1.0/(i*i);79.01、if n==0应改为if(n==0) 02、result=n--;应改为result *=n--;80.01、t=0;应改为t=1.0; 02、while(t<=eps)应改为while(t>=eps)81.01、k=n;应改为k=i; 02、b=k/10;应改为b=k%10;82. 01、void fun(char*s,t1,t2,w)应改为void fun(char *s,char *t1,char *t2,char *w) 02、while(w)应改为while(*w)83.01、fun(char(*sq)[N])应改为char *fun(char(*sq)[M]) 02、return sq;应改为return sp;84.01、*t=malloc(sizeof(STU));应改为t=(STU *)malloc(sizeof(STU)*m); 02、t[k].num=b[j].num;应改为strcpy(t[k].num,b[j].num);85.01、t[i]=s[s1-i];应改为t[i]=s[s1-i-1];或t[i]=s[s1-1-i];86.01、switch(g);应改为swithc(g) 02、case 1;应改为case 1:87.01、i=1;应改为i=0; 02、while(i<3||*p)应改为while(i<3&&*p) 03、b[k]= ‘’;应改为b[k++]= ‘’;88.01、void fun(long s,long t)应改为void fun(long s,long *t) 02、s1=s1*100;应改为s1=s1*10;89.01、int fun(int *b);应改为int fun(int *b) 02、for(k=10;k<=55;k++)应改为for(k=1;k<55;k++) 03、return k;应改为return i;90.01、long s1=0;应改为long s1=1; 02、s\=10;应改为s/=10;91.01、fun(int n)应改为double fun(int n) 02、s=s+(Double)a/b;应改为s=s+(double)a/b;92.01、fun(int n)应改为double fun(int n) 02、for(i=2;i<n;i++)应改为for(i=2;i<=n;i++)93.01、void fun(int x,int y)应改为void fun(int *x,int *y) 02、t=x;x=y;y=t;应改为t=*x;*x=*y;*y=t;94.01、s[j]=s[i];应改为s[j++]=s[i]; 02、s[i]= ‘\0’;应改为s[j]= ‘\0’; 95.01、float *k;应改为float k; 02、if(*s<*p)应改为if(*s>*p)96.01、long s=0,t=1;应改为long s=0,t=0; 02、for(j=0;j<=n;j++)应改为for(j=0;j<n;j++) 03、t=t%10;应改为t=t/10;97.01、s=s+(n+1)/n;应改为s=s+(double)(n+1)/n; 02、return s;应改为return t; 98.01、f(double x)应改为double f(double x) 02、return s应改为return s; 99.01、int i,j,k,sum;应改为int i,j=0,k,sum; 02、if(sum%4=2)应改为if(sum%4==2) 100.01、int r;应改为double r; 02、while(fabs(n-m)<0.001)应改为while(fabs(n-m)>0.001)101.01、fun(double a,double x0)应改为double fun(double a,double x0) 02、if(abx(x1-x0)>=le-6)应改为if(fabs(x1-x0)>=le-6)。
c语言改错题题库及详解答案
c语言改错题题库及详解答案1. 题目:以下代码段中存在错误,请找出并改正。
```c#include <stdio.h>int main() {int a = 10;int b = 20;int c = a + b;printf("The sum is %d", c);return 0;}```答案:代码中缺少了字符串结束的空格。
应改为:```cprintf("The sum is %d ", c);```2. 题目:找出并改正以下代码段中的错误。
```c#include <stdio.h>int main() {int num = 100;if (num = 100)printf("Number is 100\n");return 0;}答案:代码中使用了赋值运算符 "=" 而不是比较运算符 "=="。
应改为:```cif (num == 100)```3. 题目:以下代码段中存在逻辑错误,请指出并改正。
```c#include <stdio.h>int main() {float a, b, c;scanf("%f %f", &a, &b);c = a / b;printf("The result is %f", c);return 0;}```答案:代码中没有检查除数 b 是否为 0,这会导致运行时错误。
应添加检查:```cif (b != 0) {c = a / b;printf("The result is %f", c);} else {printf("Error: Division by zero.\n");}```4. 题目:找出并改正以下代码段中的语法错误。
程序改错复习题答案
程序改错复习题答案1. 题目:在下面的代码中找出并修正错误,使其能够正确计算并输出两个数的和。
```pythondef sum_numbers(a, b):result = a + bprint("The sum is:", result)sum_numbers(5, "3")```答案:错误在于第二个参数传递了一个字符串类型的值,而函数期望的是一个数字类型。
应将字符串 "3" 改为整数 3。
```pythondef sum_numbers(a, b):result = a + bprint("The sum is:", result)sum_numbers(5, 3)```2. 题目:修正以下代码中的错误,使其能够正确地将列表中的所有元素乘以2。
```pythonmy_list = [1, 2, 3, 4]for i in range(len(my_list)):my_list[i] = my_list[i] * 2print(my_list)```答案:代码本身没有错误,可以直接运行。
但是,更高效的方式是使用列表推导式。
```pythonmy_list = [1, 2, 3, 4]my_list = [x * 2 for x in my_list]print(my_list)```3. 题目:找出并修正以下代码中的错误,使其能够正确地计算并输出一个数的平方。
```pythondef square_number(n):return n * nprint(square_number("5"))```答案:错误在于函数调用时传递了一个字符串类型的值,而函数期望的是一个数字类型。
应将字符串 "5" 改为整数 5。
```pythondef square_number(n):return n * nprint(square_number(5))```4. 题目:修正以下代码中的错误,使其能够正确地遍历字典中的所有键值对。
程序改错与填空全部试题
程序改错、程序填空程序填空:第1题:题目:下面是计算1+1+2+2+…n+n之和的平方根的程序。
SET TALK OFFINPUT TO N*************SPACE******* 【?】FOR I=1 TO N*************SPACE*******S=【?】ENDFOR*************SPACE*******?“结果是”,【?】RETURN答案:(1)S=0 (2)s+2*I (3)SQRT(S)第2题:题目:以下程序通过键盘输入4个数字,找出其中最小的数。
SET TALK OFF*************SPACE******* 【?】INPUT “请输入第一个数字”TO XDO WHILE I<=3M=XINPUT “请输入数字”TO M *************SPACE********* ****IF 【?】M=XENDIF*************SPACE******* 【?】ENDDO?“最小的数是”,MSET TALK ON答案:(1)I=1(2)X<M(3)I=I+1 第3题:题目:以下程序的功能:t=20+21+22+ (2)SET TALK OFF*************SPACE******* 【?】*************SPACE******* 【?】TO NFOR I=0 TO N*************SPACE*******T=T+【?】ENDFOR?“T的值是:”,TSET TALK ONRETURN答案:(1)T=0(2)INPU T(3)2**I第4题:题目:复制表XSDA.DBF,生成新表XS.DBF,在新表中查找所有男同学的记录,并将男同学的记录逻辑删除。
SET TALK OFFUSE XSDA*************SPACE******* 【?】USE XSLOCA TE FOR 性别=“男”DO WHILE FOUND()*************SPACE******* 【?】*************SPACE******* 【?】ENDDOUSESET TALK ON答案:(1)COPY TO XS(2)DELETE(3)CONTINUE第5套:题目:表RSDA.D BF结构为:姓名(C,6);性别(C,2),年龄(N,2),出生日期(D,8)。
程序改错题答案
}
}
7循环输入x,n,调用递归函数计算,显示x的n次方。
当输入n小于0时,结束循环。
#include <stdio.h>
float f(float x,int n)
{ /******* 1 ******/
if(n==0)
return 1;
else
/****** 2 ******/
scanf("%d",&mm);
for(i=0;a[i]!='\0';i++) /*各字符与mm作一次按位异或*/
a[i]=a[i]^mm;
puts(a);
/*** 各字符与mm再作一次按位异或 ***/
/******** 3 *******/
for(i=0;a[i]!='\0';i++)
/****** 4 ******/
void main()
{ int i,n;
struct axy { float x,y;};
/***** 1 *****/
struct axy*a;
/***** 2 *****/
scanf("%d",&n);
a=(struct axy*) malloc(n*sizeof(struct axy));
for(i=0;i<n;i++)
/******** 3 *******/
if(a[i]==b[j]) break;
/******* 4 ********/
if(j<7)
printf("%d ",a[i]);
程序改错题-答案
area=3.141593*r*r;
if (area<50.0) contபைடு நூலகம்nue;
printf("r=%d,square=%d\n",r,area);
}
getch();
}
答案
#include <stdio.h>
main()
{
int r,n;
float area;
scanf("%d",&n);
for (r=1;r<=n;r++)/*modified*/
功能说明:以下函数length返回字符串中字母A到字母Z所包含字符的长度。主程序输入一行字符串,调用length函数输出该字符串中大写字母A到Z的子串长度。
如输入:Z2009-AShanghaiZ
则输出:Length=8
例示说明:从A到Z的子串为Shanghai,其长度为8
原程序(见\D_3_2.C):
调试要求:下列程序不能得到正确的结果,它包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*modified*/字样的注释),使其运行能得到正确的结果。将结果(包括X_2_3.C文件和X_2_3.EXE文件)保存到目录C:\KS\中。
功能说明:函数fun分别统计字符串中大写字母和小写字母的个数,main()函数完成字符串的输入和统计数的输出。
ch=(*p)++;/* 移动指针统计不同字符出现的次数 */
ch=ch>=’A’&&ch<=’Z’?ch+’a’-‘A’:ch;
/* 大小写字符转换*/
if(’a’<=ch<=’z’) a[ch-‘a’]++;
C改错题例题
C改错题例题第一篇:C改错题例题类型A:素数A1、下面的程序是求400以内的所有的素数之和。
请修改程序中的错误,使它能得出正确的结果,并给出正确结果。
#include #include #include int prime(int n){ int yes, i;if(n<=1){return 0;}yes=1;/*原来的代码:for(i=2;i<=sqrt(n);i++)if(n%i==0){ yes=0;break;}return yes;} main(){ int sum=0, i;clrscr();for(i=2;i<=400;i++)if(prime(i))sum+=i;printf(“%dn”, sum);}yes=0 */ /*原来的代码: yes=1 */A2、下面的程序是求1000以内的最大的20个素数之和。
请修改程序中的错误,使它能得出正确的结果,并给出正确结果。
18580 #include #include #include int fun(int high){ int sum=0, n=0, j, yes;while((high>=2)&&(n<20))/*原来的代码: while((high>=2)||(n<10))*/{yes=1;for(j=2;j<=sqrt(high);j++)if(high%j==0){ yes=0;break;}/*原来的代码: yes=0;break;忘了大括号 */if(yes){sum+=high;n++;}high--;}return sum;}main(){ clrscr();printf(“%d n”,fun(1000));}类型B:完数,多因子完备数B1、若某个整数N的所有因子之和等于N的倍数,则称N为多因子完备数。
例如,28是多因子完备数。
因为:1+2+4+7+14+28=56=28*2,下面程序求[150,1000]间有多少个多因子完备数,请修改程序中的错误,使它能得出正确的结果,并给出正确结果,填入相应窗口。
-程序改错部分试题及答案
/**********FOUND**********/
for(k=1;k<i;k++)
/**********FOUND**********/
if(i%k!=0)break;
/**********FOUND**********/
if(k<i)
/**********FOUND**********/
returnk;
/**********FOUND**********/
void fun( int n)
{
inti,k=1;
if(m<=1) k=0;
/**********FOUND*****++)
/**********FOUND**********/
if(m%i=0) k=0;
【程序改错】
--------------------------------------------------------
功能:有一数组内放10个整数,要求找出最小数与它得下标,然后
把它与数组中最前面得元素即第一个数对换位置、
------------------------------------------------------*/
double fun();
printf("Please input anumber:");
/**********FOUND**********/
print("%d",n) ;
printf("%10、6f\n",fun(n));
}
/**********FOUND**********/
fun(int n)
功能:求如下表达式:
111
S =1 + --+ ---+ 、、、、、、+ -------
程序改错--答案版
程序改错--答案版12592 '题目:编程求一个十进制整数n的各位数字之和,设n为小于或等于5位的数。
'------------------------------------------------ Option Explicit Private 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 Explicit Private 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 Explicit Private 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 * i Next i'**********ERROR* *********fact = iEnd Function12620题目:编程实现从左到右的滚动字幕,滚动的速度由滚动条控件来控制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、在考生文件夹下的给定程序modi7.c中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。
k的值由主函数传入,若k的值为500,则函数值为4622。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <conio.h>#include <stdio.h>#include <stdlib.h>int fun(int k){int m=0,mc=0,j;while ((k>=2)&&(mc<10))/************found************/{ if ((k%13=0)||(k%17=0)){m=m+k;mc++;}k--;}return m;/************found************/_____main(){system("cls");printf("%d\n",fun(500));}{ if ((k%13 == 0)||(k%17 == 0)){ if (k%13 == 0||k%17 == 0){ if ((k%13) == 0||(k%17) == 0){ if (!(k%13)||!(k%17)){ if ((k%17 == 0)||(k%13 == 0)){ if (k%17 == 0||k%13 == 0){ if ((k%17) == 0||(k%13) == 0){ if (!(k%17)||!(k%13)){ if(!((k%13)&&(k%17)))}2、在考生文件夹下的给定程序modi13.c中,函数fun的功能是:根据整型形参m的值,计算如下公式的值。
1 1 1t=1- ── - ── - …… - ──2×2 3×3 m×m例如:若m中的值为:5,则应输出: 0.536389。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <conio.h>#include <stdio.h>#include <stdlib.h>double fun(int m){double y=1.0;int i;/************found************/for (i=2;i<m;i++)/************found************/y-=1/(i*i);return(y);}main(){int n=5;system("cls");printf("\nThe result is %lf\n",fun(n));}for(i=2;i<=m;i++)for(i=2;i<m+1;i++)for(i=2;i<(m+1);i++)for(i=2;i<1+m;i++)for(i=2;i<(1+m);i++)for(i=2;i<=m;++i)for(i=2;i<m+1;++i)for(i=2;i<(m+1);++i)for(i=2;i<1+m;++i)for(i=2;i<(1+m);++i) for(i=2;i<=m;i=i+1)for(i=2;i<m+1; i=i+1) for(i=2;i<(m+1); i=i+1) for(i=2;i<1+m; i=i+1)for(i=2;i<(1+m); i=i+1) for(i=2;i<=m;i+=1)for(i=2;i<m+1; i+=1) for(i=2;i<(m+1); i+=1) for(i=2;i<1+m; i+=1)for(i=2;i<(1+m); i+=1) for(i=2;i<=m;i=1+i)for(i=2;i<m+1; i=1+i) for(i=2;i<(m+1); i=1+i) for(i=2;i<1+m; i=1+i) for(i=2;i<(1+m); i=1+I)y-=1.0/(i*i);y=y-1.0/(i*i);y=-1.0/(i*i)+y;y-=1./(i*i);y=y-1./(i*i);y=-1./(i*i)+y;y-=(float)1/(i*i);y=y-(float)1/(i*i);y=-(float)1/(i*i)+y;y-=(double)1/(i*i);y=y-(double)1/(i*i);y=-(double)1/(i*i)+y;y-=1/(1.0*i*i);y=y-1/(1.0*i*i);y=-1/(1.0*i*i)+y;y-=1/((float)i*i);y=y-1/((float)i*i);y=-1/((float)i*i)+y;y-=1/((double)i*i);y=y-1/((double)i*i);y=-1/((double)i*i)+y;3、在考生文件夹下的给定程序modi57.c中,函数fun的功能是:将字符串tt中的小写字母改为对应的大写字母,其它字符不变。
例如,若输入"Ab,cD",则输出"AB,CD"。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <conio.h>#include <stdio.h>#include <string.h>#include <stdlib.h>char *fun(char tt[]){int i;for(i=0;tt[i];i++)/************found************/if(('a'<=tt[i])||(tt[i]<='z'))/************found************/tt[i]+=32;return(tt);}main(){int i;char tt[81];system("cls");printf("\nPlease enter a string:");gets(tt);printf("\nThe result string is:\n%s",fun(tt));}if(('a'<=tt[i])&&(tt[i]<='z'))if((tt[i]>='a')&&(tt[i]<='z'))if(('a'<=tt[i])&&('z'>=tt[i]))if((tt[i]>='a')&&('z'>=tt[i]))tt[i]-=32;tt[i]+='A'-'a';tt[i]-='a'-'A';tt[i]+=-'a'+'A';tt[i]=tt[i]-32;tt[i]=tt[i]+'A'-'a';tt[i]=tt[i]-'a'-'A';tt[i]=tt[i]-'a'+'A';4、在考生文件夹下的给定程序modi71.c中,fun函数的功能是:根据形参m,计算如下公式的值。
1 1 1 1t = 1 + ─ + ─ + ─ +……+ ─2 3 4 m例如,若输入5,则应输出2.283333。
请改正程序中的错误或在横线处填上适当的内容并把横线删除,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <conio.h>#include <stdio.h>#include <stdlib.h>double fun(int m){double t=1.0;int i;for (i=2;i<=m;i++)/************found************/t+=1.0/k;/************found************/_______}main(){int m;system("cls");printf("\nPlease enter 1 integer number:");scanf("%d",&m);printf("\nThe result is %lf\n",fun(m));}t+=1.0/i;t=t+1.0/i;t=1.0/i+t;t+=1.00/i;t=t+1.00/i;t=1.00/i+t;t+=1./i;t=t+1./i;t=1./i+t;t+=(float)1/i;t=t+(float)1/i;t=(float)1/i+t;t+=1/(float)i;t=t+1/(float)i;t=1/(float)i+t;t+=(float)1/(float)i;t=t+(float)1/(float)i;t=(float)1/(float)i+t;t+=(double)1/i;t=t+(double)1/i;t=(double)1/i+t;t+=1/(double)i;t=t+1/(double)i;t=1/(double)i+t;t+=(double)1/(double)i;t=t+(double)1/(double)i;t=(double)1/(double)i+t;return t;return (t);5、在考生文件夹下的给定程序modi84.c中,函数fun的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。
在main()函数中,若fun返回1,输出YES,若fun返回0,输出NO!。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <conio.h>#include <stdio.h>#include <stdlib.h>int fun(int m){ int k=2;while (k<=m&&(m%k))/************found************/k++/************found************/if (m=k)return 1;else return 0;}main(){int n;system("cls");printf("\nPlease enter n:");scanf( "%d",&n);if (fun(n)) printf("YES\n");else printf("NO!\n");}k++;++k;k=k+1;k+=1;k=1+k;if(m==k)if(k==m)if(m-k==0)if(k-m==0)if((m-k)==0)if((k-m)==0)if(!(m-k))if(!(k-m))6、考生文件夹下的给定程序modi100.c中函数 fun 的功能是:输入两个双精度数,函数返回它们的平方根的和。