有目录-程序改错部分试题及答案(2015-2016-1)
最新二级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()
{
计算机二级上机程序改错题1-50
1、给定程序MODI1.C 中函数 fun 的功能是:计算n!。
例如,给n 输入5,则输出120.000000。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构! 给定源程序: #include <stdio.h> double fun ( int n ) { double result = 1.0 ; /************found************/ if n = = 0 return 1.0 ; while( n >1 && n < 170 ) /************found************/ 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)。
第二处:语句后缺少分号。
2、给定程序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]; /**********found**********/ 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];。
C语言程序改错题及答案
#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&&功能:如果用户输入的用户名和口令一致,则在提示信息后关闭该表单;&&否则重新输入用户名和口令。
计算机二级上机考试(程序改错题)1
程序编程题目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之间)。
省等级考试C程序改错,程序填空(修正版、附答案)
说明:在程序中用/* */包围的部分是题目的答案,表示用相应的语句修改程序或完成程序。
共有31套试题。
0.⒈已知 f(n)=f(n-1)+2f(n-2)-5f(n-3), f(0)=1,f(1)=2,f(2)=3,求 f(0)+f(1)+……+f(30)。
程序中有一处错误。
(1) 输入原程序并运行,记录运行结果,将结果填入答题窗口的①。
(程序名由考生自定)(2) 更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口的②。
#include <stdio.h>main(){long f0=1,f1=2,f2=3,f,s,i;s=f0+f1+f2;for (i=1; i<=30; i++) /*for (i=3; i<=30; i++)*/{ f=f2+2*f1-5*f0;s+=f;f0=f1;f1=f2;f2=f; }printf("%ld\n",s);}⒉已知24有8个因子,而24正好能被8整除,求[1,100]之间有多少个整数能被其因子的个数整除?在下列程序中填上缺少的语句或另外编写具有同样功能的程序,运行程序,将结果填入答题窗口的①。
#include "stdio.h"#include "math.h"main(){ int i,j,k,n=0;for(i=1;i<=100;i++){ k=0;for(j=1;j<=i;j++)if(fmod((float)i,(float)j)==0.0)k++;if( ________ ) /*i%k==0*/n++;}printf("%d\n",n);}1.⒈求解方程 x^2- 7912x +12976 = 0 的最大实根。
程序中有一处错误。
(1) 输入原程序并运行,记录运行结果,将结果填入答题窗口的①。
(程序名由考生自定)(2) 更正程序中的错误,运行更正后的程序,记录运行结果,将结果填入答题窗口的②。
c语言题库改错题及详解答案
c语言题库改错题及详解答案C语言是一种广泛使用的计算机编程语言,它以其强大的功能和灵活性而闻名。
在学习和掌握C语言的过程中,练习题库中的改错题是提高编程技能的有效方式。
以下是一些常见的C语言改错题及其详解答案。
1. 题目:编写一个程序,计算并输出1到10的累加和。
错误代码:```cint main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum = sum + i;}print("Sum is %d", sum);return 0;}```错误点: `print` 函数应为 `printf`。
正确代码:```c#include <stdio.h>int main() {int sum = 0;for(int i = 1; i <= 10; i++) {sum += i; // 可以简化为 sum += i;}printf("Sum is %d\n", sum);return 0;}```2. 题目:编写一个程序,判断输入的年份是否为闰年。
错误代码:```cint main() {int year;printf("Enter a year: ");scanf("%d", &year);if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```错误点:逻辑判断的括号使用不正确。
正确代码:```c#include <stdio.h>int main() {int year;printf("Enter a year: ");scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {printf("%d is a leap year.\n", year);} else {printf("%d is not a leap year.\n", year);}return 0;}```3. 题目:编写一个程序,实现字符串的反转。
C++改错和填空题题库
━━━━━━━━━━━━━━━━━一、程序改错━━━━━━━━━━━━━━━━━第1题/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:用顺序交换法将12个整数中处于奇数位的数从大到小排序。
--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/#include <iostream.h>void main()/***********FOUND***********/{ int m[12],i,j;/***********FOUND***********/for(i=1;i<=12;i++)cin>>m[i];for(i=0;i<11;i+=2)/***********FOUND***********/for(j=i+1;i<11;i++)/***********FOUND***********/if(m[i]>m[j]){ k=m[i];m[i]=m[j];m[j]=k;}for(i=0;i<12;i++)cout<<m[i];}答案:1). {int m[12],i,j,k;2). for(i=0;i<12;i++) 或for(i=0;i<=11;i++)3). for(j=i+2;j<11;j+=2) 或for(j=i+2;j<11;j=j+2)4). if(m[j]>m[i]) 或if(m[i]<m[j])第2题/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:在一个具有n个数的数组中查找并删除一个数K。
C语言改错题-含答案
第1题【程序改错】功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。
------------------------------------------------------*/#include <conio.h>#include <stdio.h>#include <string.h>void fun (char *s, char *t){/**********FOUND**********/int i;sl = strlen(s);for (i=0; i<sl; i++)/**********FOUND**********/t[i] = s[sl-i];for (i=0; i<sl; i++)t[sl+i] = s[i];/**********FOUND**********/t[2*sl] = "0";}main(){char s[100], t[100];printf("\nPlease enter string s:"); scanf("%s", s);fun(s, t);printf("The result is: %s\n", t);}答案:1). int i,sl;2). t[i] = s[sl-i-1];3). t[2*sl] = '\0'; 或 t[2*sl] = 0;第2题【程序改错】功能:求出以下分数序列的前n项之和。
和值通过函数值返回main 函数。
2/1+3/2+5/3+8/5+13/8+21/13 ……例如:若n = 5,则应输出:8.391667。
------------------------------------------------------*/#include <conio.h>#include <stdio.h>/**********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 = a;a = a + b;b = c;}/**********FOUND**********/return c;}main( ){int n = 5;printf( "\nThe value of function is: %lf\n", fun ( n ) );}答案:1). double fun(int n)2). s = s + (double)a / b; 或 s += (double)a / b; 或 s += a /(double)b; 或s=s+a/(double)b;3). return s;第3题【程序改错】功能:读入一个整数m( 5≤m≤20 ),函数getarr调用函数rnd获得m个随机整数,函数sortpb将这m个随机整数从小到大排序。
c语言改错题题库及详解答案
c语言改错题题库及详解答案C语言是一种广泛使用的计算机编程语言,它以其高效性、灵活性和强大的功能而受到程序员的青睐。
然而,即使是经验丰富的程序员也难免会在编写C语言程序时犯一些错误。
下面是一个C语言改错题题库及其详解答案,帮助学习者识别并改正常见的编程错误。
题目1:错误的变量初始化```cint main() {int a;printf("%d", a); // 错误:变量a未初始化return 0;}```详解答案:在C语言中,如果一个变量在使用前没有被显式地初始化,它的值是不确定的。
为了修复这个错误,我们应该在声明变量时对其进行初始化。
```cint main() {int a = 0; // 正确的初始化printf("%d", a);return 0;}```题目2:错误的数组索引```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[5]); // 错误:数组索引越界return 0;}```详解答案:数组索引是从0开始的,所以对于一个有5个元素的数组,有效的索引范围是0到4。
访问数组的第6个元素会导致越界错误。
```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[4]); // 正确的索引return 0;}```题目3:错误的循环使用```cint main() {int i;for (i = 0; i <= 10; i++) {printf("%d ", i);} // 错误:循环条件错误return 0;}```详解答案:循环条件应该是`i < 10`,以确保循环不会无限执行。
```cint main() {int i;for (i = 0; i < 10; i++) {printf("%d ", i);}return 0;}```题目4:错误的函数调用```cint main() {int result = add(5, 3); // 错误:add函数未定义printf("%d", result);return 0;}```详解答案:在调用一个函数之前,需要确保该函数已经被定义。
吉林省计算机二级考试程序改错题解析.DOC
*【程序改错】*题目:在XSDB.DBF中查找学生徐秋实的记录, 如果找到则将该记录* 的系别、姓名,两科科目名称和对应的成绩显示在屏幕上,否则* 显示:"查无此人!"。
答案:1). LOCATE FOR姓名="徐秋实"2). ?系别,姓名,"计算机="+★STR★(计算机),"英语="+★STR★(英语) 或 ?系别,姓名,"... 〖第2题〗『程序改错』(5分)*题目:求2!+4!+6!+…+10!的和答案:1). T=1T★*★N 或 T=★N★*★T3). S=★S★+★T 或 S=★T★+★S〖第1题〗『程序改错』(5分)*题目:有一个字符串"ABC",将其插入3个数字转换为:"A1B2C3"输出。
答案:1). A=SUBS(C1,I★,1) 或 A=SUBSTR(C1,I★,1)2). C2=★C2★+★A+★STR(I,1)*【程序改错】*题目:有学生数据库STD.DBF文件,其中学号字段的前两位是班号。
* 请编写程序MODI1.PRG:选择所有少数民族(非汉族)的学* 生参加某项活动,按民族的拼音次序升序排列,同民族的按* 照学号升序排列,并为之生成编号。
编号的前两位是班号,* 后两位是统一新编序号。
并将学号、编号、姓名、性别和* 民族添加到数据库文件BS中。
答案:1). index★on★民族★+★学号★to★std.idx2). <>3). subs(学号,1,2) +★STR(NUM,1) 或 left(学号,2) +★STR(NUM,1)〖第1题〗『程序改错』(5分)*题目:从键盘上输入5个数,将其中奇数求和,偶数求积。
答案:1). S2=12). IF MOD(M,2)<>0 或 IF MOD(M,2)#0 或 IF INT(M/2)★<>★M/2 或 IF INT(M/2)★#★...*【程序改错】*题目:求0-7这8个数字所能组成的奇数个数。
程序改错题(17道)
程序改错(共17道题)1.求1~100之间数的和。
Private Sub Form_Click()Dim i As Integer, sum As Integersum = 1i = 1Do Until i >= 100sum = sum + ii = i + 1LoopPrint "1-100之间和:"; sumEnd Sub答案:sum=0Do Until i > 1002.求1~100之间数的和。
Private Sub Form_Click()Dim i As Integer, sum As Integersum = 1i = 1Do While i < 100sum = sum + ii = i + 1LoopPrint "1-100之间和:"; sum End Sub答案:sum=0Do While i <= 1003.求1~10之间数的和。
Private Sub Form_Click()Dim i As Integer, sum As Integer sum = 1i = 1Do Until i >= 10sum = sum + ii = i + 1LoopPrint "1-10之间和:"; sumEnd Sub答案:sum=0Do Until i > 104.求1~10之间数的和。
Private Sub Form_Click()Dim i As Integer, sum As Integersum = 1i = 1Do While i < 10sum = sum + ii = i + 1LoopPrint "1-10之间和:"; sumEnd Sub答案:sum=0Do While i <= 105.求4!(4!=1×2×3×4)。
-程序改错部分试题及答案
第1题/*i【程序改错】功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
------------------------------------------------------------------------------------ * #include <stdio. h>ttdefine N 11main(){int i,number,a[N] = {l,2,4,6,8t9t12,15,149,156);printf(^please enter an integer to insert in the array:\n n):/**********FOUND**********/scanf(”%d&number)printf("The original array:\rT);for(i=0;i<N-l;i++)printf (^%5(1 M,a[i]);printf(*\n n);/**********FOUND**********/for(i=N-l;i>二0;i--)if(number<=a[il)/**********FOUND**********/a[i]=a[i-l]:else{a[i+l]=number;/**********FOUND**********/exit;}if(number<a[0]) aL0]二number;printf(^The result array:\n”);for(i=0;i<N;i++)printf(n%5d w,a[il);printf(H\n H);}第2题/♦ ------------------------------------------------------------------------------------ 【程序改错】功能:求如下表达式:S = 1 + ——+ ——+ .................. + ------------1+2 1+2+3 1+2+3+ ......... +n------------------------------------------------------------------------------------ */ #include <stdio.h>main()int n;double fun ();printf ("Please input a nilmber:R):/**********FOUND**********/print("^d^.n);printf(H%10. 6f\n w,fun(n));}/♦♦********FOUND**********/fun(int n){int i,j,t;double s;s=0;/**********POUND**********/while(i=l;i<=n;i++);{t=0;for(j=l;j<=i;j++)t=t+j;/ **********P*OL1ND**********/=s+l/t;}return s;}第3题/* ---------------------------------------------------------- 【程序改错】功能:判断m是否为素数,若是返回1,否则返回0。
计算机二级C++练习题:程序改错题
计算机二级C++练习题:程序改错题计算机二级C++练习题:程序改错题为了使广大考生在备战计算机等级考试时,更快的掌握相应知识点,下面是店铺搜索整理的计算机二级C++练习题:程序改错题,供参考练习,预祝考生们考出自己理想的成绩!计算机二级C++练习题:程序改错题01使用VC6打开考生文件夹下的工程kt9_1,此工程包含一个源程序文件kt9_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:4,520源程序文件清单如下:#includeclassA{protected:intn,m;public:voidset(inta,intb){m=a;n=b;}voidshow(){cout<<m<<","<<n<<endl;}/**********found**********/}classB:publicA{ints;public:voidset(){s=m*n;}voidshows(){cout<<s<<endl;}};voidmain(){Bb;/**********found**********/b.set();b.show();b.set();/**********found**********/b.show();}【参考答案】(1)在“}”后添加分号(2)将b.set();改为:b.A::set(4,5);(3)将b.show();改为:b.shows();【试题解析】(1)主要考查对类定义格式的掌握,类的结尾应该使用";";(2)主要考查对基类与派生类函数调用关系的掌握,根据所要求的输出结果,应该调用的函数为类A的set,而不是类B自身的.set函数,应该避免调用的二义性;(3)主要考查对继承与派生的理解,由所要求输出结果可知正确:b.shows()。
计算机二级C++练习题:程序改错题02使用VC6打开考生文件夹下的工程kt10_1,此工程包含一个源程序文件kt10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:classBaseclassD1classD2classD3finBase源程序文件kt10_1.cpp清单如下:#includeclassBase{public:Base(){cout<<"classBase"<<endl;}voidf(){cout<<"finBase"<<endl;}};classD1:virtualpublicBase{public:D1(){cout<<"classD1"<<endl;}voidf(){cout<<"finD1"<<endl;}};/**********found**********/classD2:publicBase{public:D2(){cout<<"classD2"<<endl;}};/**********found**********/classD3::publicD1,publicD2{public:D3(){cout<<"classD3"<<endl;}};voidmain(){D3d;/**********found**********/d.f();}【参考答案】(1)将classD2:publicBase改为:classD2:virtualpublicBase(2)将classD3::publicD1,publicD2改为:classD3:publicD1,publicD2(3)将d.f();改为:d.Base::f();【试题解析】(1)主要考查对虚基类的理解,虚基类可以解决二义性的问题,其定义方式是在继承列表中使用virtual关键字,使用虚基类可以避免程序运行中对基类函数调用的不惟一;(2)主要考查对类的定义方法的掌握,“::”为作用域符,此处应该使用“:”,因为后面是继承列表;(3)主要考查对虚基类函数调用过程的理解,只有使用"::"限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。
程序改错题答案
}
}
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语言真题2015年03月-(1)及答案解析
二级C语言真题2015年03月-(1)及答案解析(1/40)单项选择题第1题下列关于算法复杂度叙述正确的是______。
A.最坏情况下的时间复杂度一定高于平均情况的时间复杂度B.时间复杂度与所用的计算工具无关C.对同一个问题,采用不同的算法,则它们的时间复杂度是相同的D.时间复杂度与采用的算法描述语言有关下一题(2/40)单项选择题第2题设有栈S和队列Q,初始状态均为空。
首先依次将A,B,C,D,E,F入栈,然后从栈中退出3个元素依次入队,再将X,Y,Z入栈后,将栈中所有元素退出并依次入队,最后将队列中所有元素退出,则退队元素的顺序为______。
A.DEFXYZABCB.FEDZYXCBAC.FEDXYZCBAD.DEFZYXABC上一题下一题(3/40)单项选择题第3题下列叙述中正确的是______。
A.有两个指针域的链表称为二叉链表B.循环链表是循环队列的链式存储结构C.带链的栈有栈顶指针和栈底指针,因此又称为双重链表D.节点中具有多个指针域的链表称为多重链表上一题下一题(4/40)单项选择题第4题某二叉树共有845个节点,其中叶子节点有45个,则度为1的节点数为______。
A.400B.754C.756D.不确定上一题下一题(5/40)单项选择题第5题软件需求分析阶段的主要任务是______。
A.确定软件开发方法B.确定软件开发工具C.确定软件开发计划D.确定软件系统的功能上一题下一题第6题下面对软件测试描述错误的是______。
A.严格执行测试计划,排除测试的随意性B.随机地选取测试数据C.软件测试的目的是发现错误D.软件测试是保证软件质量的重要手段上一题下一题(7/40)单项选择题第7题结构化程序的3种基本控制结构是______。
A.顺序、选择和重复(循环)B.过程、子程序和分程序C.顺序、选择和调用D.调用、返回和转移上一题下一题(8/40)单项选择题第8题数据库中对概念模式内容进行说明的语言是______。
2016最新二级C语言考试题库及答案(程序改错专项练习 精华版)
程序改错题(共15题)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> 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 <conio.h> #include <stdio.h> 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 中的最大元素及其下标。
程序改错题汇总
程序改错题汇总1、用"起泡法"对连续输入的十个字符排序后按从小到大的次序输出.2、分别统计字符串中大写字母和小写字母的个数。
3、求1到10的阶乘的和。
4、判断m是否为素数,若是返回1,否则返回0。
5、用选择法对数组中的n个元素按从小到大的顺序进行排序。
6、求一个3行4列矩阵的外框的元素值之和。
7、以下程序把两个数按由大到小的顺序输出来。
8、求1到20的阶乘的和。
9、判断字符ch是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。
(指针)10、已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项的和。
下列给定程序中,函数fun的功能是:计算并输出该数列的前n项的平方根之和sum,n的值通过形参传入。
11、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?12、编写函数fun计算下列分段函数的值:x*x+x x<0且x≠-3f(x)= x*x+5x 0≤x<10且x≠2及x≠3x*x+x-1 其它13、请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。
14、实现交换两个整数的值。
15、读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。
16、先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
17、计算数组元素中值为正数的平均值(不包括0)。
18、将s所指字符串中出现的、t1所指子串全部替换成t2所指子字符串,所形成的新串放在w 所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
19、将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A, z转换为a),其它字符不变。
20、在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),后输出矩阵第一行与第三行元素之积,并在fun()函数中输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录功能:在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。
(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 <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-1;i>=0;i--)if(number<=a[i])/**********FOUND**********/a[i]=a[i-1];else{a[i+1]=number;/**********FOUND**********/exit;}if(number<a[0]) a[0]=number;printf("The result array:\n");for(i=0;i<N;i++)printf("%5d",a[i]);printf("\n");}第2题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:求如下表达式:1 1 1S = 1 + —— + ——— + ...... + ———————1+2 1+2+3 1+2+3+......+n ------------------------------------------------------*/#include <stdio.h>main(){int n;double fun(int n); //原题中无形参,错误printf("Please input a number:");/**********FOUND**********/print("%d",n) ;printf("%10.6f\n",fun(n));}/**********FOUND**********/fun(int n){int i,j,t;double s;s=0;/**********FOUND**********/while(i=1;i<=n; i++);{t=0;for(j=1;j<=i;j++)t=t+j;/**********FOUND**********/=s+1/t;}return s;}第3题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:判断m是否为素数,若是返回1,否则返回0。
------------------------------------------------------*/#include <stdio.h>/**********FOUND**********/void fun( int n){int i,k=1;if(m<=1) k=0;/**********FOUND**********/for(i=1;i<m;i++)/**********FOUND**********/if(m%i=0) k=0;/**********FOUND**********/return m;}int main(){int m,k=0;for(m=1;m<100;m++)if(fun(m)==1){printf("%4d",m);k++;if(k%5==0) printf("\n");}}第4题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:用下面的和式求圆周率的近似值。
直到最后一项的绝对值小于等于0.0001。
π 1 1 1— = 1 - — + — - — + ...4 35 7------------------------------------------------------*/#include <stdio.h>/**********FOUND**********/#include <stdlib.h>fun(){int i=1;/**********FOUND**********/int s=0,t=1,p=1;/**********FOUND**********/while(fabs(t)<=1e-4){s=s+t;p=-p;i=i+2;t=p/i;}/**********FOUND**********/printf("pi=%d\n",s*4);}main(){fun();}第5题/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:求1到20的阶乘的和。
------------------------------------------------------*/#include <stdio.h>fun(){int n,j;float s=0.0,t=1.0;for(n=1;n<=20;n++){/**********FOUND**********/s=1;for(j=1;j<=n;j++)/**********FOUND**********/t=t*n;/**********FOUND**********/s+t=s;}/**********FOUND**********/printf("jiecheng=%d\n",s);main(){fun();}第6题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。
------------------------------------------------------*/#include <stdio.h>fun(){int i;float f1=1,f2=1,f3;/**********FOUND**********/printf("%8d",f1);/**********FOUND**********/for(i=1;i<=20;i++){f3=f1+f2;/**********FOUND**********/f2=f1;/**********FOUND**********/f3=f2;printf("%8.0f",f1);}printf("\n");}main(){fun();}第7题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线上的元素之和sum。
------------------------------------------------------*/#include <stdio.h>void fun(){int a[3][3],sum;int i,j;/**********FOUND**********/a=0;for(i=0;i<3;i++)for(j=0;j<3;j++)/**********FOUND**********/scanf("%d",a[i][j]);for(i=0;i<3;i++)/**********FOUND**********/sum=sum+a[i][j];/**********FOUND**********/printf("sum=%f\n",sum);}main(){fun();第8题/*------------------------------------------------------【程序改错】--------------------------------------------------------功能:找出大于m的最小素数,并将其作为函数值返回。