国家计算机题库之改错题

合集下载

计算机二级上机C改错例题

计算机二级上机C改错例题

m ,计算如下公y=1+1/(2*2)+1/(3*3)+1/(4*4)+…+1/(m*m)的值。

例如,若m=5,则应输出:1.463611。

double fun(int m) {double y=1.0;int i;for(i=2;i<=m;i++)y+=1.0/(i*i);return(y);}2根据形参m ,计算下列公式的值。

t=1-1/2+1/3-1/4+…+(-1)(m+1)/m 例如,若输入5,则应输出0.783333。

double fun(int m){double t=1.0,j=1.0;int i; for(i=2;i<=m;i++){j=-1*j;t+=j/i;}return t;}3根据整型参数m ,计算如下公式的值。

y=1/(100×100)+1/(200×200)+1/(300×300)+…+1/(m ×m)。

例如,若m=2000,则应输出0.000160。

double fun (int m) {double y=0, d;int i; for(i=100;i<=m;i+=100){d=(double)i*(double)i;y+=1.0/d;}return(y);}4根据以下公式求π的值。

例如,给eps 输入0.0005时,应当输出Pi=3.140578。

π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+…double fun(double eps) {double s,t; int n=1;s=0.0;t=1.0;while(t>=eps){s+=t;t=t*n/(2*n+1);n++;}return (s*2);}5根据形参m,计算下列公式的值。

t=1+1/2+1/3+1/4+…+1/m 。

例如,若输入5,则应输出2.283333。

double fun(int m) {double t=1.0;int i;for(i=2;i<=m;i++)t+=1.0/i; m ,计算如下公式的根号(2)+1/根号(3)+……1/根号(n) 例如,若m 中的值为:5,则应输出:3.231671 #include <math.h> double fun(int m) {int i;double t,y=0;for(i=1;i<=m;i++){t=1/sqrt(i);y=y+t;}return y;}7根据整型形参m 的值,计算如下公式的值。

计算机二级上机考试(程序改错题)1

计算机二级上机考试(程序改错题)1

计算机二级上机考试(程序改错题)1work 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=65b=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之间)。

全国计算机等级考试二级C改错题答案

全国计算机等级考试二级C改错题答案
例如:数组中元素中的值依次为:39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。
答案:(1)double sum=0.0;(2)sum/=c;
所属年份:2011.9
下列给定程序中函数fun和funx的功能是:用二分法求方程 的一个根,并要求绝对误差不超过0.001。
例如,若给m输入-100,n输入90,则函数求得的一个根为2.000。
答案:(1)fun(int x,int y, int z) (2)return j;
所属年份:2011.3
下列给定程序中函数fun的功能是:从N个字符串中找出最长的串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。
答案:(1)char *fun(char (*sq)[M]) (2)return sp;
下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。
例如,若输入252,则输出应该是20。若输入202,则输出应该是0。
答案:(1)long k=1;(2)num /=10;
所属年份:2010.9;2011.9;
下列给定程序中函数fun的功能是:把从主函数中输入的3个数,最大的数放在a中,中间的数放在b中,最小的数放在c中。
答案:(1)return 3;(2)return 1;
所属年份:2010.9;2011.3;2011.9;
下列给定程序中,函数fun的功能是:传入一个整数m,计算如下公式的值。
t=1/2-1/3-…-1/m
例如,若输入5,则应输出-0.283333。
答案:(1)t-=1.0/i;(2)return t;
所属年份:2012.3;
下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。

计算机二级改错

计算机二级改错

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;i<m;i++)应改为for(i=2;i<=m;j++)第2处:y-=1/(i*i);应改为y-=1.0/(i*i)7改错题下列给定程序中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。

计算机二级试题-改错题

计算机二级试题-改错题

第01套给定程序MODI1.C中函数fun 的功能是:计算n!。

例如,给n输入5,则输出120.000000。

请改正程序中的错误,使程序能输出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include <stdio.h>double fun ( int n ){ double result = 1.0 ;/************found************/if n = = 0 改为:if (n==0)return 1.0 ;while( n >1 && n < 170 )/************found************/result *= n-- 改为:result *= n--;return result ;}main ( ){ int n ;printf("Input N:") ;scanf("%d", &n) ;printf("\n\n%d! =%lf\n\n", n, fun(n)) ;}解题思路:第一处:条件语句书写格式错误,应改为:if (n==0)。

第二处:语句后缺少分号。

第02套给定程序MODI1.C中函数fun的功能是: 依次取出字符串中所有数字字符, 形成新的字符串, 并取代原字符串。

请改正函数fun中指定部位的错误, 使它能得出正确的结果。

注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include <stdio.h>void fun(char *s){ int i,j;for(i=0,j=0; s[i]!='\0'; i++)if(s[i]>='0' && s[i]<='9')/**********found**********/s[j]=s[i]; 改为:s[j++]=s[i];/**********found**********/s[j]="\0"; 改为:s[j]='\0';.}main(){ char item[80];printf("\nEnter a string : ");gets(item);printf("\n\nThe string is : \"%s\"\n",item);fun(item);printf("\n\nThe string of changing is : \"%s\"\n",item );}解题思路:第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j 来控制新字符串的位置,所以应改为:s[j++]=s[i];。

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

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

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改错题答案

全国计算机等级考试二级C改错题答案

所属年份:2010.9;2011.3;2012.3下列给定程序中,函数fun 的功能是:先将字符串s 中的字符按正序存放到字符串t 中,然后把s 中的字符按逆序连接到字符串t 的后面。

例如,当s 中的字符串为"ABCDE"时,则t 中的字符串应为"ABCDEEDCBA"。

答案: (1)for ( i =0; i<sl ;i ++) (2)t[2*s1]='\0'所属年份:2012.3;下列给定程序中,函数fun 的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII 码值升序排序后输出。

例如,若输入"edcba",则应输出"abcde"。

答案: (1)for(i =strlen(t)-1; i>0; i --) (2)if (t[j] > t[j +1])所属年份:2010.9;2012.3下列给定程序中函数fun 的功能是:统计substr 所指的子符串在str 所指的字符串中出现的次数。

例如,若字符串为aaas 1kaaas ,子字符串为as ,则应输出2。

答案: (1)for(i =0;str[i];i ++) (2)if(substr[k +1]== '\0')所属年份:2011.9;2012.3;下列给定程序中函数fun 的功能是:用冒泡法对6个字符串进行升序排列。

答案: (1)for (j = i + 1; j < 6; j ++) (2)*(pstr + i ) = *(pstr + j);所属年份:2011.9;2012.3下列给定程序中函数fun 的功能是:根据整型形参m ,计算如下公式的值。

例如,若m 的值为5,则应输出1.。

答案: (1)for(i =2;i<=m ;i ++) (2)y +=1.0/(i*i);所属年份:2010.9;2011.3;2012.3;下列给定程序中函数fun 的功能是:删除指针p 所指字符串中的所有空白字符(包括制表符、回车符及换行符)。

国家计算机等级考试上二级C-改错题

国家计算机等级考试上二级C-改错题

1 下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。

例如,当s中的数为4576235时,t中的数为4725。

请改正程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:#include#include/**********************found***********************/int fun(long s,long *t){long s1=10;*t=s ;while(s>0){/**********************found***********************/s=s 0;*t=s *s1+*t;s1=s1*10;}}main(){long s, t;clrscr();printf("\nPlease enter s: ");scanf("%ld",&s);fun(s,&t);printf("The result is: %ld\n ",t);}答案及评析:(1)错误:int fun(long s,long *t)正确:void fun(long s,long *t)(2)错误:s=s 0;正确:s=s/100;【解析】错误1:函数由指针来完成参数的传递,所以没有返回值,应定义函数的类型为void。

错误2:此处要注意特殊运算符号"%"--取余和"/"--整除的区别。

将一个数整除100则可得到由其百位数以上的数组成的新数字,将一个数整除100取余则可得到由十位数和个位数组成的新数。

2下列给定的程序中,函数fun()的功能是:计算并输出k以内最大的6个能被7或11整除的自然数之和。

K的值由主函数传入,若k的值为500,则函数的值为2925。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

全国计算机等级考试C 语言――改错题1.给定程序中fun 函数的功能是:根据整型形参m 的值,计算如下公式的值:m*m 1......3*312*211t ----= 例如,若m 中的值为5,则应输出0.536389。

double fun(int m){ double y=1.0;int i ;/**************found**************/for(i=2;i<m ;i++) 改为:for(i=2;i<=m ;i++)/**************found**************/y-=1/(i*i); 改为:y-=1.0/(i*i);return(y);}main( ){ int n=5;printf("\nThe result is %lf\n",fun(n));}2.程序中fun 函数功能是:将s 字符串的正序和反序进行连接,形成一个新字符串放在t 数组中。

例如,当 s 所指字符串为“ABCD”时,则t 所指字符串的内容应为“ABCDDCBA”。

/************found************/void fun (char s ,char t) 改为:void fun (char *s ,char *t){ int i ,d ;d=strlen(s);for (i=0;i<d ;i++) t[i]=s[i];for (i=0;i<d ;i++) t[d+i]=s[d-1-i];/************found************/t[2*d-1]='\0'; } 改为:t[2*d]='\0';main( ){ char s[100],t[100];printf("\nPlease enter string S:");scanf("%s",s);fun(s ,t);printf("\nThe result is: %s\n",t); }3.给定程序中fun 函数的功能是:将s 所指字符串中位于奇数位置的字符或ASCII 码为偶数的字符放入t 所指数组中(规定第一个字符放在第0位中)。

例如:字符串中的数据为:AABBCCDDEEFF ,则应输出 ABBCDDEFF 。

#define N 80void fun(char *s ,char t[ ]){ int i ,j=0;for(i=0;i<strlen(s);i++)/***********found**********/if(i%2 && s[i]%2= =0) 改为:if(i%2= =0 || s[i]%2= =0)t[j++]=s[i];/***********found**********/t[i]='\0';} 改为:t[j]='\0';main( ){ char s[N],t[N];printf("\nPlease enter string s:");gets(s);fun(s,t);printf("\nThe result is:%s\n",t);}4.给定程序中fun函数的功能是:计算n!。

例如,给n输入5,则输出120.000000。

#include <stdio.h>double fun(int n){ double result=1.0;/************found************/if n== 0 改为:if (n == 0)return 1.0;while(n >1 && n<170)/************found************/result *= n-- 改为:result *= n--;return result;}main( ){ int n;printf("Input N:");scanf("%d",&n);printf("\n\n%d! =%lf\n\n",n,fun(n));}5、给定程序中fun函数的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。

#include <stdio.h>int fun(){ int a[3][3],sum;int i,j;/*********found**********/______;改为:sum=0for (i=0;i<3;i++){ for (j=0;j<3;j++)/*********found**********/scanf("%d",a[i][j]);改为:scanf("%d",&a[i][j]);}for (i=0;i<3;i++)sum=sum+a[i][i];printf("Sum=%d\n",sum);}main( ){ fun();}6、给定程序中fun函数的功能是:求,(此处aa…aa表示n个a,a和n的值在1至9之间)。

例如,a=3,n=6,则以上表达式为:s=333333-33333-3333-333-33-3,其值是:296298。

a和n是fun函数的形参。

#include <stdio.h>long fun (int a,int n){ int j;/**************found**************/long s=0,t=1;改为:long s=0,t=0;/**************found**************/for(j=0;j <=n;j++) 改为:for(j=0;j <n;j++)t=t*10 + a;s=t;for(j=1;j<n;j++) {/**************found**************/t=t % 10;改为:t=t/ 10;s=s - t;}return(s);}main( ){ int a,n;printf("\nPlease enter a and n:");scanf( "%d%d",&a,&n);printf("The value of function is: %ld\n",fun(a,n));}7、给定程序中fun函数的功能是:求k!(k<13),所求阶乘的值作为函数值返回。

例如:若k=10,则应输出3628800。

#include <stdio.h>long fun(int k){/************found************/if k > 0 改为:if(k > 0)return (k*fun(k-1));/************found************/else if(k=0) 改为:else if(k==0)return 1L;}main( ){ int k=10;printf("%d!=%ld\n",k,fun(k));}8、给定程序中fun函数的功能是:由形参给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。

例如,n=8时,输入:193.99,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值为:195.838745,在平均值以上的实数个数应为:5。

#include <stdio.h>int fun(float x[ ],int n){/************found************/int j,c=0,float xa=0.0;改为:int j,c=0;float xa=0.0;for (j=0;j<n;j++)xa += x[j]/n;printf("ave =%f\n",xa);for (j=0;j<n;j++)/************found************/if (x[j] => xa) 改为:if (x[j] >= xa)c++;return c;}main( ){ float x[100]={ 193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763 };printf("%d\n",fun (x,8));}9、给定程序中fun函数的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。

例如:若输入“Ab,cD”,则输出“AB,CD”#include <stdio.h>#include <string.h>char* fun(char tt[ ]){ int i;for(i=0;tt[i];i++)/**********found***********/if(('a'<=tt[i])||(tt[i]<='z')) 改为:if((tt[i] >= 'a')&&(tt[i]<='z'))/**********found***********/tt[i] += 32;改为:tt[i] -=32;return(tt);}main( ){ char tt[81];printf("\nPlease enter a string: ");gets(tt);printf("\nThe result string is:\n%s",fun(tt));}10、给定程序中fun函数的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。

例如,调用fun函数这前给字符串输入:ABCDeFGH,调用后字符串中的内容为:eABCDFGH。

#include <stdio.h>/**********found**********/fun(char *p) 改为:void fun(char *p){ char max,*q;int i=0;max=p[i];while(p[i]!=0){ if(max<p[i]){ max=p[i];/**********found**********/q=p+I 改为:q=p+i;}i++;}/**********found**********/wihle( q>p) 改为:while(q>p){ *q=*(q-1);q--;}p[0]=max;}main( ){ char str[80];printf("Enter a string: ");gets(str);printf("\nThe original string: ");puts(str);fun(str);printf("\nThe string after moving: ");puts(str);printf("\n\n");}11、给定程序MODI1.CJ是建立一个带头结点的单向链表,并用随机函数为各结点赋值。

相关文档
最新文档