C++改错和填空题题库

合集下载

c语言改错题及答案

c语言改错题及答案

c语言改错题及答案【篇一: c 语言二级上机(t 填空 ,改错 ,编程 )题库及答案】100套题目(每套题目包含 3 道题:一道程序填空题、一道程序修改题、一道程序设计题),真实考试的时候,考生输入准考证后计算机随机为你抽取一套考试,每个考生考试时只需考一套题目(包含三道题)二级 c 语言上机试题汇编※※※※※※※※※※※※※※※※※※※※※※※第01套:给定程序中,函数 fun 的功能是:将形参 n 所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针 n 传回所指变量。

例如,输入一个数:27638496 ,新的数:为739 。

请在程序的下划线处填入正确的内容并把下划线删除 , 使程序得出正确的结果。

注意:源程序存放在考生文件夹下的blank1.c中。

不得增行或删行,也不得更改程序的结构!给定源程序:#include stdio.hvoid fun(unsigned long *n){ unsigned long x=0, i; int t;i=1;while(*n)/**********found**********/{ t=*n % __1__;/**********found**********/if(t%2!= __2__){ x=x+t*i; i=i*10; }*n =*n /10;}/**********found**********/*n=__3__;}main(){ unsigned long n=-1;while(n99999999||n0){ printf(please input(0n100000000): ); scanf(%ld,n); }fun(n);printf(\nthe result is: %ld\n,n);}【参考答案】(1)10 (2) 0 (3) x解题思路:第一处: t 是通过取模的方式来得到*n 的个位数字,所以应填:10 。

最常用的一些c语言改错题

最常用的一些c语言改错题
int arrmin( int arr[3][3])
{int i,j,min;
min=0;(应改为:min=arr[0];)
for(i=0; i<3; i++)
for(j=0; j<3; j++)
if (min>arr[i][j])
min=arr[i][j];
return (min);
}
void main()
max=arr[0];
pos= 0;
for(i=1; i<n; i++) if (max<arr[i])
{
max=arr[i];
int a,n;(应改为:int a[],n;)
{
int j; float aver;
float s;(应改为:float s=0;)
for(j=0; j<n; j++) s+=a[j];
aver=s/n;
return (aver);
void main(){int a[12]={10,4,2,7,3,12,5,34,5,9,6,8};
if(prime==1)(应改为:if(prime(i)==1;)
{a[c]=i;
printf("%4d",a[c]);
++c;
}
}
七、求一维数组a中值为奇数的元素的平均值。
#include <conio.h>
#include <stdio.h>
double average( int arr[],int n)
改错题 一、求一维数组a中所有元素的平均值,结果保留两位小数。

c语言题库改错题及详解答案

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

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语言程序时犯一些错误。

下面是一个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;}```详解答案:在调用一个函数之前,需要确保该函数已经被定义。

c语言改错题题库及详解答案

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. 题目:找出并改正以下代码段中的语法错误。

C语言程序改错及填空题

C语言程序改错及填空题

gc23.c下列程序是建立一个包含学生有关数据的单向链表。

但该程序有2个错误,错误出现在每个注释行附近,请调试改正。

调试改正中,不得改变程序结构,也不得增删语句。

#defineNULL0structstud{longnum;charname[10];floatscore;structstud*next;};/*……………comment……………*/intn;structstudcreate()////////structstud*create(void){structstud*head,*p1,*p2;n=0;p1=p2=(structstud*)malloc(sizeof(structstud));scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);/*……………comment……………*/head=NULL;while(p1!=0)//////////while(p1->num!=0){n=n+1;if(n==1)head=p1;elsep2->next=p1;p1=(structstud*)malloc(size(structstud));scanf("%ld,%s,%f",&p1->num,p1->name,&p1->score);}p2->next=NULL;return(head);}gc57.c的功能是互换给定数组中的最大数和最小数。

如将下面8个数:5,3,1,4,2,8,9,6变成:5,3,9,4,2,8,1,6程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。

程序有二处错误,请改正。

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

main(){inti;staticinta[8]={5,3,1,4,2,8,9,6};voidjhmaxmin();printf("Originalarray:\n");for(i=0;i<8;i++)jhmaxmin(a,8);printf("Arrayafterswapingmaxandmin:\n");for(i=0;i<8;i++)printf("%5d",a[i]);printf("\n");}//注意:voidjhmaxmin(p,n)intp,n;这是一种老的函数形式,现在一般这样写voidjhmaxmin(intp,intn)voidjhmaxmin(p,n)intp,n;////////int*p,n;{intt,*max,*min,*end,*q;end=p+n;max=min=p;for(q=p+1;q<end;q++){if(*q>*max)max=q;if(*q<max)min=q;////////*q<*min}t=*max;*max=*min;*min=t;}gc101.c的功能为:输入8个整数,使用指针以选择法对其进行排序(从小到大).程序中有两处错误代码,请改正.注意,不得改变程序结构。

C语言程序改错基本题库

C语言程序改错基本题库

北京石油化工学院12级复习题程序改错一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执行结果。

1.求1234nmain(){long int sum;int n,i=1;scanf(”%d”,n);printf(“\n”);while(i<n){ sum=sum*i;i++;}printf(”sum=%d”,sum);}2.求一个数组中最大值及其下标。

main(){ int max,j,m;int a[5];for(j=1;j〈=5;j++)scanf(“%d",a);max=a[0];for(j=1;j〈=5;j++)if(max〉a[j]){max=a[j];m=j;}printf(“下标:%d\n最大值:%d”, j,max)}*3. 求3+4int 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<b)swap(*q1,*q2);printf("\n%d,%d\n",q1,q2);}前五题答案:1.sum应初始化即加入sum=1第四行改为:scanf(“%d",&n);第六行改为:while(i〈=n)第十行改为:printf("sum=%ld”,sum);2. 第四行改为:for(j=0;j〈5;j++)第五行改为:scanf(“%d",&a[j]);第七行改为:for(j=0;j〈5;j++)第八行改为:if(max<a[j])第十三行改为:printf(“下标:%d\n最大值:%d", m,max)3。

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

━━━━━━━━━━━━━━━━━一、程序改错━━━━━━━━━━━━━━━━━第1题/*【程序改错】题目:用顺序交换法将12个整数中处于奇数位的数从大到小排序。

注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<>()/**********************/{ m[12];/**********************/(1<=12)>>m[i];(0<112)/**********************/(1<11)/**********************/(m[i]>m[j]){ [i];m[i][j];m[j];}(0<12)<<m[i];}答案:1). { m[12];2). (0<12) 或 (0<=11)3). (2<112) 或 (2<112)4). (m[j]>m[i]) 或 (m[i]<m[j])第2题/*【程序改错】题目:在一个具有n个数的数组中查找并删除一个数K。

注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/n 10<>(){/**********************/a[n];/**********************/(1<)>>a[i];>>k;/**********************/(1<[i]);(i<n){ (<1)a[j][1];/**********************/(0<)<<a[i];}{ <<" ";(0<)<<a[i];}}答案:1). a[n];2). (0<)3). (0<[i]);4). (0<1)第3题/*【程序改错】题目:利用插入法将20个数排列成降序,并计算输入序列中第10个数到第20个数的和.注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<>( ){ [21]={1,3,5,7,9,2,4,6,8,10,13,65,76,34,23,15,64,3 3,234,66};/**********************/;(2<=20){ 1;a[0][j];/**********************/(k>=0[k]>a[0] ){/**********************/a[k][1];;}/**********************/a[k][0];}(1<=20)<<a[i]<<" ";0.0;(10<=20)[j];<<s;}答案:1). ;2). (m<a[j]>=0)3). a[1][k];4). a[1][0];第4题/*【程序改错】题目:将十进制正整数n转化为二进制数输出注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<>(){m[50]1[50]1;>>n;0;(n>0){/**********************/ n12;/**********************/ m1[i]2;/**********************/ n1;;}(1<)/**********************/ m1[1][j];(1<)<<m[j];答案:1). n12;2). m1[i]2;3). 1;4). m[j] = m1[];第5题/*【程序改错】题目:判断一个自然数是否为降序数(若D1D2D3……满足>1, 1<<,则D1D2……为降序数,如54321)注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<>(){ m[100];>>n;(00){/**********************/ m[i]10;/**********************/ 10;}/**********************/ (0<[j]<a[1]);/**********************/ (j<)<<"";<<"";}答案:1). m[i]10;2). 10;3). (0<1[j]<a[1]);4). (1)第6题/*【程序改错】题目:用二分法在一组按升序的数中找出指定的数K.注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<>(){a[20];>>n;(0<)>>a[i];>>k;0;01;/**********************/(i<0){ ()/2;([m])/**********************/0;/**********************/(k>a[m])1;1;}/**********************/ (1)<<""<<m;<<" ";}答案:1). (i<0)2). 1;3). (k<a[m])4). (1)第7题/*【程序改错】题目:打印扬辉三角形11 11 2 11 3 3 11 3 6 4 1注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<>(){ a[5][5];(0<5){/**********************/a[i][1]=1;a[i][i]=1;(1<1)/**********************/a[i][j][1][1][i][j]; }(0<5){/**********************/(0<5)/**********************/<<a[j][i]<<" "; <<;}}答案:1). a[i][0]=1;2). a[i][j][1][1][1][j];3). (0<)4). <<a[i][j]<<" ";第8题/*【程序改错】题目:用”筛选法”判断并输出1-100之间的素数.注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<>(){a[101];(1<=100)a[i]=1;a[1]=0;(2<=50){/**********************/1;(i*j<=100){/**********************/a[i][j]=0;;}}(1<=100)/**********************/(a[i] =1)/**********************/<<a[i];}答案:1). 2;2). a[i*j]=0; 或 a[j*i]=0;3). (a[i]1) 或 (a[i])4). <<i;第9题/*【程序改错】题目:下面函数将一个整数字符串转换为一个整数。

注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<><>( *){0;/**********************/ ();/**********************/ (0<) ;{1;1;<<<<;(j>0){*10;/**********************/ ;}/**********************/ *(4)-'0'; *k;};}(){ *"1234";(a);<<t<<;}答案:1). ();2). (0<)3). ; 或 ; 或 1; 或 1;4). *()-'0';第10题/*【程序改错】题目:将1到255之间的任意一个十进制转换成二进制.注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<>(){ a[8];/**********************/ <<n;0;(0){2;a[k]2;/**********************/ ;/**********************/ m = n;}/**********************/ (>=1)<<a[i];}答案:1). >>n;2). ;3). ;4). (1>=0)第11题/*【程序改错】题目:打印出1000以内的同时满足如下条件的数个位数字与十位数字之和除以10所得的余数等于百位数字注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<><>(){/**********************/ ;(3<1000)/**********************/ { (21<(i))/**********************/ (1) 0;/**********************/ (0){ 100;(*100)/10; *100*10;()/10*10;()<<i;}}}答案:1). ;2). { (21<(i))3). (0) 0; 或 (0) 0;4). (1) 或 () 或 ( 0)第12题/*【程序改错】题目:统计100-300之间同时被3,7整除的数的个数,输出这些数的个数及它们的平方和434385.注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<>(){ ;/**********************/k;0;/**********************/ 1;(100<=300){/**********************/ n37=73;/**********************/ (n37=0){ ;*k;}}<<n<<;}答案:1). n37;2). 0;3). n3773;4). (n370)第13题/*【程序改错】题目:在[100,5000]之间打印出各位数字和为5的所有整数的个数.注意:不可以增加或删除程序行,也不可以更改程序的结构。

*/<>(){;0;(104<=500){/**********************/100;(*100)/10;*100*10;}/**********************/ (<>5) ;(1000<=5000){ 1000;(*1000)/100;/**********************/ (*1000*100)/100;*1000*100*10;/**********************/ (5) ;}<<k;}答案:1). 100;2). (5) ;3). (*1000*100)/10;4). (5) ;第14题/*【程序改错】题目: 下列程序是求某班级的最高成绩、最低成绩和平均成绩的程序,输入-1表示结束。

相关文档
最新文档