C语言程序改错
C语言程序改错
一、程序改错共137题(共计1370分)第1题(10.0分)题号:384/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
------------------------------------------------------*/#include <conio.h>#include <stdio.h>#define N 20void fun ( int * a, int n ){int i, m, t, k ;for(i=0;i<2;i++){/**********FOUND**********/m=0;/**********FOUND**********/for(k=1;k<n;k++)/**********FOUND**********/if(a[k]>a[m]) k=m;t=a[i];a[i]=a[m];a[m]=t;}}main( ){int b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i;for ( i=0; i<n; i++ ) printf("%d ", b[i]);printf("\n");fun ( b, n );for ( i=0; i<n; i++ )printf("%d ", b[i]);printf("\n");}答案:=======(答案1)=======m=i;=======(答案2)=======for(k=i;k<n;k++)=======(答案3)=======if(a[k]>a[m]) m=k;第2题(10.0分)题号:405/*------------------------------------------------------ 【程序改错】--------------------------------------------------------功能:写计算级数 ex=1+x+x2/2!+x3/3!+ ...+xn/n! 的值。
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 *****/"的下
一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)
程序改错完整版---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语言程序改错题
作品编号:DG13485201600078972981创作者:玫霸*第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。
C语言程序改错及填空题
每个注行邻近,更正。
更正中,不得改程序构,也不得增句。
#define NULL 0struct stud{long num;char name[10];float score;struct stud *next;};/* ⋯⋯⋯⋯⋯ comment⋯⋯⋯⋯⋯*/ int n;struct stud create()////////struct stud *create(void){struct stud *head,*p1,*p2;n=0;p1=p2=(struct stud *)malloc(sizeof(struct stud));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;else p2->next=p1;p1=(struct stud *)malloc(size(struct stud));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(){int i;static int a[8]={5,3,1,4,2,8,9,6};void jhmaxmin();printf(" Original array: \n");for(i=0; i<8; i++)printf("%5d",a[i]);printf("\n");jhmaxmin(a,8);printf(" Array after swaping max and min: \n");for(i=0; i<8; i++)printf("%5d",a[i]);printf("\n");}// 注意: void jhmaxmin(p,n)int p, n;这是一种老的函数形式,此刻一般这样写void jhmaxmin(int p,int n)void jhmaxmin(p,n)int p, n;//////// int *p,n;{int t, *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语⾔程序改错【程序改错】1.功能:利⽤递归函数调⽤⽅式,将所输⼊的5个字符,以相反顺序打印出来。
char next;next=getchar();palin(n-1);2.功能:求⼴义菲玻那契级数的第n项。
⼴义菲玻那契级数的前n项为: 1,1,1,3,5,9,17,31,……项值通过函数值返回 main ( )函数。
例如:若 n = 15,则应输出:The value is: 2209。
for (k=4; k<=n; k++)a=b;return d;3.功能:根据整型形参m,计算如下公式的值:y=1/2+1/8+1/18+...+1/2m*mdouble y=0.0;4.功能:编制统计营业员⼀天的营业额的程序,设程序采⽤⼀个循环实现,每次循环输⼊⼀笔交易⾦额并累计营业额。
由于营业员⼀天完成的交易次数是不确定的,为此以最后附加输⼊⼀笔0或负数交易额作为交易⾦额已全部输⼊结束的标志。
float sale,sigma;scanf("%f",&sale);sigma=sigma+sale;5.功能:读取7个数(1-50)的整数值,每读取⼀个值,程序打印出该值个数的*。
while(n<8) while(a<1||a>50);for(i=0;i6.功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。
printf("%8f",f1);for(i=1;i<20;i++)f1=f2;f2=f3;7.功能:⼀个偶数总能表⽰为两个素数之和。
scanf("%d",&a);d=a-b;if(d%c==0)8.功能:利⽤⼆维数组输出如图所⽰的图形。
*******************************#define N 7a[i][j]=' ';z=z-1;printf("%c",a[i][j]);9.题⽬:求两个整数的最⼩公倍数。
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;}```详解答案:在调用一个函数之前,需要确保该函数已经被定义。
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语言程序改错及填空题
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语言程序改错
【程序改错】功能:求1到20的阶乘的和。
答案:1). t=1; 或t=1.0;2). t=★t★*★j★; 或t*=j; 或t=j*t;3). s=★s★+★t★; 或s+=t; 或s=t+s;4). printf("jiecheng=%f\n",s);【程序改错】功能:计算正整数num的各位上的数字之积。
例如:输入252,则输出应该是20。
答案:1). long k=1;2). num/=10; 或num=num/10;3). scanf("%ld",&n);4). printf("\n%ld\n",fun(n));【程序改错】功能:求出两个非零正整数的最大公约数,并作为函数值返回。
例如:若给num1和num2分别输入49和21,则输出的最大公约数为7。
答案:1). a=b;2). b=t;3). r=a%b;4). return b; 或return (b); 或return(b);【程序改错】功能:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。
max代表最高分,min代表最低分,avg代表平均分。
答案:1). float a[10],min,max,avg;2). scanf("%f",&a[i]); 或scanf("%f",a+i);3). max=min=avg=a[0];4). if (min>a[i]) 或if (a[i]<min)【程序改错】功能:输入10个数,要求输出这10个数的平均值答案:1). for(i=1;i<10;i++) 或for(i=1;i<=9;i++)2). float score[10],aver; 或float aver,score[10];3). scanf("%f", &score[i]); 或scanf("%f", score+i);4). aver=average(score);【程序改错】功能:判断整数x是否是同构数。
C语言程序改错
/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
--------------------------------------------------------注意:不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/#include"stdio.h"main( ){/**********FOUND**********/long a,b,c,d,e,x,scanf("%ld",&x);a=x/10000;/**********FOUND**********/b=x/10000/1000;c=x%1000/100;d=x%100/10;e=x%10;/**********FOUND**********/if (a==0)printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);else if (d!=0) printf("there are 2, %ld %ld\n",e,d);else if (e!=0) printf(" there are 1,%ld\n",e);getch();}答案:1). long a,b,c,d,e,x;2). b=x%10000/1000; 或b=x/1000%10;3). if (a!=0) 或if (!a)/*------------------------------------------------------【程序改错】--------------------------------------------------------题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后除以10的余数代替该位数字。
c语言程序改错题
【程序改错】功能: 根据整型形参m的值, 计算如下公式的值。
1 1 1.....1.—..—......——2x2 3x3 mxm例如: 若m=5, 则应输出: 0.536389------------------------------------------------------*/#include <stdio.h>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)/**********FOUND**********/return m; return y}main(){int n=5;printf("\nthe result is %lf\n",fun(n));}【程序设计】---------------------------------------------------------题目: 编程求所有4位数, 这些数具有以下特点: 这数本身是平方数, 且其低2位和高2位所组成的2个2位数也是平方数。
要求: 使用程序中定义的变量-------------------------------------------------------*/#include <stdio.h>#include <math.h>main(){int qw,bw,sw,gw; // qw千位数bw百位数sw十位数gw个位数int a,b; //a 高两位低两数int i; //循环变量/**********Program**********/for(i=1000;i<10000;i++){qw=i/1000;bw=i/100%10;sw=i/10%10;gw=i%10;1a=qw*10+bw;b=sw*10+gw;if(sqrt(i)==(int)sqrt(i)&&sqrt(a)==(int)sqrt(a)&&sqrt(b)==(int)sqrt(b)) printf(“%d\n”,i);}/********** End **********/}【程序设计】功能: 从键盘为一维整型数组输入10个整数, 调用fun 函数找出其中最小的数, 并在main函数中输出。
C语言程序改错
1-7919 计算并输出k以内最大的10个能被13或17整除的自然数之和。
K的值由主函数导入。
错1:while((2<=k)&&(mc<10)) 错2:if(k%13==0||k%17==0)错3:k--; 错3:return m;1-2511 功能:计算正整数num的各位上的数字之积。
例如:输入252,则输出应该是20。
错1:long k=1; 错2:num/=10;错3:scanf("%ld",&n); 错4:printf("\n%ld\n",fun(n));1-354 功能:输出fabonacci数列前20项,要求变量类型定义为浮点型,输出时只输出整数部分,输出项数不得多于或少于20.错1:printf(“%f”,f1); 错2:for(i=1;i<20;i++)错3:f1=f2; 错4:f2=f3;1-2544 功能:在一个一维整型数组中找出其中最大的数及其下标。
错1:int fun(int *a,int *b,int n) 错2:*b=c-a;错3:scanf(“%d”,a+i); 错4:max=fun(a,&p,N)1-1859 功能:实现交换两个整数的值。
例如:给a和b分别输入3和6,输出为a=6,b=3。
错1:fun(int *a,int *b) 错2:t=*a;错3:*a=*b; 错4:*b=t;1-840 功能:求1到20的阶乘的和。
错1:t=1; 错2:t=t*j;错3:s=s+t; 错4:printf("jiecheng=%f\n",s);1-6949 用起泡法对10个整数从小到大排序错1:void sort (int *x,int n) 错2:for(j=0;j<n-1-i;j++)错3:if(x[j]>x[j+1]) 错4:sort (a,n);1-4336 输入aSdFG输出为asdfg错1:char fun (char *c) 错2:return *c;错3:char s[81],*p=s; 错4:printf(“%c”,*p);1-4489 为一维数组输入10个整数。
C语言程序改错题
C语言程序改错题第 1题(10.0 分)/*------------------------------------------------------ 功能:将一个正整数分解质因数。
例如:输入 90,打印出 90=2*3*3*5------------------------------------------------------*/ #include "stdio.h"main(){int n,i;printf("\nplease input a number:\n");scanf("%d",&n);printf("%d=",n);for(i=2;i<=n;i++){/**********FOUND**********/while(n==i){/**********FOUND**********/if(n%i==1){printf("%d*",i);/**********FOUND**********/n=n%i;}elsebreak;}}printf("%d",n);}答案:1). while(n!=i)2). if(n%i==0) 或 if (!(n%i))3). n=n/i;第 2 题(10.0 分)/*------------------------------------------------------ 功能:删除字符串 s 中的所有空白字符(包括Tab 字符、回车符及换行符)。
输入字符串时用'#'结束输入。
-----------------------------------------------------*/ #include <string.h>#include <stdio.h>#include <ctype.h>fun ( char *p){int i,t; char c[80];/**********FOUND**********/for (i = 1,t = 0; p[i] ; i++)/**********FOUND**********/if(!isspace((p+i))) c[t++]=p[i]; /**********FOUND**********/c[t]="\\0";strcpy(p,c);}main( ){char c,s[80];int i=0;printf("Input a string:");c=getchar();while(c!='#'){s[i]=c;i++;c=getchar();}s[i]='\0';fun(s);puts(s);}答案:1). for (i = 0,t = 0; p[i] ; i++)2). if(!isspace(*(p+i))) c[t++]=p[i];3). c[t]='\0';第 3 题(10.0 分)/*------------------------------------------------------ 功能:有 n 个人围成一圈,顺序排号。
C语言《改错》
请改正程序中的错误,使其能得出正确的结果。
【答案】
(1)将s[j]=s[i]; 改为:s[j++]=s[i];
(2)将s[j]="\0"; 改为:s[j]= '\0';
5.在给定程序中,fun函数的功能是:将n个无序整数从小到大排序。
14.下列给定程序中,函数fun的功能是:逐个比较x、y两个字符串对应位置中的字符,把ASCII相等或值小的字符依次存放到z数组中,形成一个新的字符串。
【答案】
(1)将int i=1;改为:int i=0;
(2)将while(*a!=*b)改为:while(*a || *b)
15.下面程序中函数fun的功能是:将长整数s中每个十进制位上为奇数的数取出,形成一个新数在t中,t中数字顺序按原整数中数字的逆序排列。
(2)将 zero=count; 改为:*zero=count;
29.给定程序中,函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。
【答案】
(1)将int i; 改为:int i,sl;
(2)将t[i] = s[sl-i]; 改为:
【答案】
(1)将p=h; 改为:p= h->next;
(2)将p=h->next; 改为:p=p->next;
8.给定程序中,函数fun的功能是:先将字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
【答案】
(1)将for( i=0; i<sl; i ++) 改为:
C语言程序改错题及答案
if(x<min) min=x;
}
printf("%f,%f\n",max,min);
}
10、.在考生目录下,有Modify.c程序,该程序中"/***** N *****/"的下
一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。
该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。
for(i=0;i<sl;i++)
t[i]=s[i];
for(i=0;i<sl;i++)
/********1********///t[sl+i]=s[s1-1-i];
t[sl+i]=s[sl-i];
/********2********/
t[sl]="\0";//t[sl+s1]=’\0’;
}
void main()
/***** 2 *****/
for(i=1;i<strlen(str);i++)//i=0
if(str[i]>='a'&& str[i]<='z') str[i]=str[i]-32 ;
puts(str);
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{ int n,i;
/***** 1 *****/
char str;// char*str
(完整word版)C语言程序改错总结
难度11、程序D1.c的功能是从键盘读入一个数并在屏幕上显示。
int main(void){int xy2;/*********Found************/scanf("%s", &xy2); //改为:scanf("%d”,&xy2);/*********Found************/printf("xy2=%5d\n", &xy2); //改为:printf("xy2=%5d\n”,xy2);return 0;}2、程序D2.c的功能是调用函数,显示两个实数间最大的一个。
#include<stdio。
h>float fmax(float x, float y);int main(void){/*********Found************/float l,1; //il = 3。
0;i = 5.6f;/*********Found************/printf("fmax(%5.2f,%5.2f)=%5.2f\n”, i, l, fMax(i,l)); // fmaxreturn 0;}/*********Found************/int fmax(float x, float y) //改:float{if (x < y)return y;else return x;}3、程序D4.c的功能是计算半径为2+3的圆的面积。
#include<stdio.h〉#define PI 3。
14/*********Found************/#define S(bj)PI*bj*bj //改:PI*(bj)*(bj) int main(void){/*********Found************/int mianJi;//改为:doublemianJi = S(2+3);printf(”mian ji=%5。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序改错
第1题
题目:fun函数的功能是:实现3行3列矩阵的转置,即行列互换。
请改正程序中的错误,使它能得出正确的结果。
1). scanf("%d",&a[i][j]);
2). for(j=0;j<i;j++)
3). t=a[i][j];
4). a[j][i]=t;
第2题
题目:用指针作函数参数,编程序求一维数组中的最大和最小的元素值.
1). void maxmin(int arr[ ],int *pt1,int *pt2,int n)
2). *pt1=*pt2=arr[0];
3). if(arr[i]>*pt1)
4). p1=&a;p2=&b;
第3题
题目:将6个数按输入时顺序的逆序进行排列.
1). p1=p+i; p2=p+(m-1-i);
2). char *p,num[6];
3). scanf("%d",&num[i]);
4). sort(p,6);
第4题
题目:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换;输出数组元素。
程序中共有4条错误语句,请改正错误。
1). scanf("%d",p ++);
2). if(*p > *max)
3). if( max == arr )
4). for(i=0;i<n;i++) 或 for(i=0;n>i;i++) 或 for(p=arr;p<arr+n;)
第5题
题目:以下程序把两个数按由大到小的顺序输出来.
1). swap( int *p1,int *p2)
2). scanf("%d%d",&a,&b);
3). p1=&a;p2=&b;
4). printf("max=%d,min=%d\n",*p1,*p2);
第6题
题目:将一个字符串中的大写字母转换成小写字母。
例如:输入aSdFG输出为asdfg。
1). char fun(char *c)
2). return *c; 或 return (*c); 或 return(*c);
3). { char s[81],*p=s;
4). putchar(*p); 或 printf("%c",*p);
第7题
题目:将若干学生的档案存放在一个文件中,并显示其内容。
1). { struct student *p
2). FILE *fp;
3). for(p=stu;p< stu + 3 ;p++) 4).
printf("%4d %-10s %4d\n",(*p).num ,p->name,(*p).age);
第8题
题目:在一个一维整型数组中找出其中最大的数及其下标。
程序中共有4条错误语句,请改正错误。
1). int fun(int *a,int *b,int n)
2). *b=c-a;}
3). scanf("%d",&a[i]);
4). max=fun(a,&p,N);
第9题
题目:下列程序中,函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。
例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“ABCDEEDCBA”。
1). for(i=0;i<=sl;i++)
2). t[sl+i]=s[sl-i-1];
3). t[sl+i]='\0';。