2-1. 改错题
下列给定程序中,函数fun()的功能是根据整型形参m ,计算如下公式的值。
y=1-1/(2×2)+1/(3×3)-1/(4×4)+…+(-1)(m+1)/(m ×m)
例如:m 中的值为5,则应输出0.838611。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
double fun(int m)
{ double y=1.0;
/**********************found***********************/
int j=1;
int i;
for(i=2; i<=m; i++)
{
j=-1*j;
/**********************found***********************/
y+=1/(i * i);
}
return(y);
}
main()
{
int n=5;
clrscr();
printf("\nThe result is %lf\n" ,fun(n));
}
(1)错误:int j=1;
正确:double j=1.0;
(2)错误:y+=1/(i * i);
正确:y+=j/(i * i);
3-1. 改错题
下列给定程序中,函数fun 的功能是按以下递归公式求函数值。
{152)1()(?-=
n Fun n Fun 例如:当给n 输入5时,函数值为240;当给n 输入3时,函数值为60。
请改正程序中的错误,使它能得到正确结果。 注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
/**********************found***********************/
fun(int n);
{
int c;
/**********************found***********************/
if(n=1)
c=15;
else
c=fun(n-1)*2;
return(c);
}
main()
{
int n;
printf("Enter n:");
scanf("%d",&n);
printf("The result :%d\n\n",fun(n));
}
3-1. 改错题
(1)错误:fun(int n);
正确:fun(int n)
(2)错误:if(n=1)
正确:if(n==1)
【解析】错误1:该行是函数的首部,不是一条语句,因此不能以分号结束。
错误2:if 后面应该紧跟一个条件判断表达式,若写成"if(n=1)",则说明该表达式的值永远为真,也就是说这个条件永远成立,没有递归执行。
4-1. 改错题
下列给定程序中,函数fun 的功能是按以下递归公式求函数值。
{152)1()(?-=
n Fun n Fun 例如:当给n 输入5时,函数值为240;当给n 输入3时,函数值为60。
请改正程序中的错误,使它能得到正确结果。 注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
/**********************found***********************/
fun(int n);
{
int c;
/**********************found***********************/
if(n=1)
c=15;
else
c=fun(n-1)*2;
return(c);
}
main()
{
int n;
printf("Enter n:");
scanf("%d",&n);
printf("The result :%d\n\n",fun(n));
}
4-1. 改错题
(1)错误:fun(int n);
正确:fun(int n)
(2)错误:if(n=1)
正确:if(n==1)
【解析】错误1:该行是函数的首部,不是一条语句,因此不能以分号结束。
错误2:if后面应该紧跟一个条件判断表达式,若写成"if(n=1)",则说明该表达式的值永远为真,也就是说这个条件永远成立,没有递归执行。
5-1. 改错题
下列给定程序中函数fun()的功能是计算正整数num的各位上的数字之平方和。
例如:输入352,则输出应该是38;若输入328,则输出应该是77。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
long fun(long num)
{
/**********************found***********************/
long k=1;
do
{
k+=(num%10)*(num%10);
num/=10;
/**********************found***********************/
}while(num)
return (k);
}
main()
{
long n;
clrscr();
printf("\Please enter a number:");
scanf("%ld",&n);
printf("\n%ld\n",fun(n));
}
5-1. 改错题
(1)错误:long k=1;
正确:long k=0;
(2)错误:while(num)
正确:while(num);
【解析】错误1:k用来存放各位数字的平方和,初值应为0。
错误2:do-while语句的语法,while()后加分号。
6-1. 改错题
下列给定程序中,函数fun()的功能是将字符串s中位于偶数位置的字符或ASCII码为奇数的字符放入字符串t中(规定第一个字符放在第0位中)。
例如:字符串中的数据为ADFESHDI,则输出应当是AFESDI。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
#include
#include
#define N 80
/**********************found***********************/
void fun(char s, char t[ ])
{
int i, j=0;
for(i=0; i /**********************found***********************/ if(i%2=0||s[i]%2!=0) t[j++]=s[i] ; t[j]='\0'; } main() { char s[N], t[N]; clrscr(); printf("\nPlease enter string s :"); gets(s); fun(s,t); printf("\nThe result is :%s\n",t); } 6-1. 改错题 (1)错误:void fun(char s, char t[ ]) 正确:void fun(char *s, char t[ ]) (2)错误:if(i%2=0||s[i]%2!=0) 正确:if(i%2==0||s[i]%2!=0) 【解析】错误1:由于本题中函数的功能是对字符串进行处理,而不是对单个字符进行处理,因此,函数的参数应为字符串指针。 错误2:if语句中要用关系运算符,而不是赋值运算符。 12、下列给定程序中,函数fun()的功能是找出100~n(不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值返回。 请改正程序中的错误,使它能得到正确结果。 试题程序: (1)错误:k=n; 正确:k=i; (2)错误:s[j]=i; 正确:s[j++]=i; 【解析】错误1:k就是当前要被判断的数,是随着i值的变化而变化的。 错误2:在循环中,j是数组的下标要递增。 8-1. 改错题 下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a[0]中的数对调,次最小数和a[1]中的数对调。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #define N 20 void fun(int *a,int n) { int i, m, t, k; /**********************found***********************/ for(i=0; i { m=i; for(k=i; k if(a[k] /**********************found***********************/ k=m; t=a[i]; a[i]=a[m]; a[m]=t; } } main() { int x,b[N]={11,5,12,0,3,6,9,7,10,8},n=10,i; clrscr(); for(i=0; i printf("%d ",b[i]); printf("\n"); fun(b,n); for(i=0; i printf("%d ", b[i]); printf("\n"); } 8-1. 改错题 (1)错误:for(i=0; i 正确:for(i=0; i<2; i++) (2)错误:k=m; 【解析】错误1:由于题目要求将最小数和次最小数分别与a[0]和a[1]中的数对调,因此这层循环只需循环两次。 错误2:赋值语句的执行方向是从右向左,即把右边的值赋给左边的变量。 9-1. 改错题 下列给定程序中,函数fun()的功能是计算并输出high以内的素数之和。high由主函数传给fun()函数。若high的值为100,则函数的值为1060。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include int fun(int high) { int sum=0,n=0, j, yes; while(high>=2) { yes = 1; for(j=2; j<=high/2; j++) /**********************found***********************/ ifhigh%j==0 { yes=0; break; } /**********************found***********************/ if(yes==0) { sum+=high; n++; } high--; } return sum; } main() { clrscr(); printf("%d\n",fun(100)); } 9-1. 改错题 (1)错误:ifhigh%j==0 正确:if(high%j==0) (2)错误:if(yes==0) 【解析】错误1:if语句的两侧要加括号。 错误2:yes为1时,说明被判断的数为素数,要加入总和。 10-1. 改错题 下列给定程序中,函数fun()的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII 码降序排序后输出。 例如:输入dafhc,则应输出hfdca。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /**********************found***********************/ int fun(char t[ ]) { char c; int i,j; for(i=0;i for(j=i+1;j if(t[i] { c= t[j]; /**********************found***********************/ t[j]=t[i++]; t[i]=c; } } main() { char s[81]; clrscr(); printf("\nPlease enter a character string :"); gets(s); printf("\n\nBefore sorting :\n %s",s); fun(s); printf("\nAfter sorting decendingly:\n %s",s); } 10-1. 改错题 (1)错误:int fun(char t[ ]) 正确:void fun(char t[ ]) (2)错误:t[j]=t[i++]; 正确:t[j]=t[i]; 【解析】错误1:该函数只是对一个字符串中的元素进行比较大小的操作,并没有具体的返回值,因此,函数的返回值类型应为void。 错误2:本题的思路是利用选择法对数组元素进行比较。所谓选择法,是依次用当前取得的元素和它后面的元素进行比较,在第一个元素和它后面的元素顺次比较时,可以借助中间变量来对两数进行交换, 要保证这第一个元素始终存放数组中的最大数,以后依次挑出次大数,这样最终的数组就是有序的。解答本题,只要理解了选择法的思想,找到并改正错误就很容易了。 11-1. 改错题 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun()的功能是计算数组元素中值为负数的平均值(不包括0)。 例如:数组中元素的值依次为43,-47,-21,53,-8,12,0,则程序的运行结果为-25.333333。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include double fun(int x[ ]) { double sum=0.0; int c=0, i=0; /**********************found***********************/ while(x[i]==0) { if(x[i]<0) { sum=sum+x[i]; c++; } i++; } /**********************found***********************/ sum=sum\c; return sum; } main() { int x[1000]; int i=0; clrscr(); printf("\nPlease enter some data(end with 0) :"); do { scanf("%d",&x[i]); }while(x[i++]!=0); printf("%f\n",fun(x)); } 11-1. 改错题 (1)错误:while(x[i]==0) 正确:while(x[i]!=0) (2)错误:sum=sum\c; 正确:sum=sum/c; 【解析】错误1:此处考查的是对循环条件的理解,当被判断的数组元素为0时,说明这是数组的最后一个元素,此时要跳出循环。 错误2:C语言中的除法运算符是“/”,而不是“\”。 12-1. 改错题 下列给定程序中,函数fun()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include void fun(char *s) { int i,j; for(i=0,j=0; s[i]!= '\0'; i++) /**********************found***********************/ if((s[i]>= 'A'&&s[i]<= 'Z')&&(s[i]>= 'a'&&s[i]<= 'z')) s[j++]=s[i]; /**********************found***********************/ s[j]= "\0"; } main() { char item[80]; clrscr(); 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); } 12-1. 改错题 (1)错误:if((s[i]>= 'A'&&s[i]<= 'Z')&&(s[i]>= 'a'&&s[i]<= 'z')) 正确:if((s[i]>= 'A'&&s[i]<= 'Z')||(s[i]>= 'a'&&s[i]<= 'z')) (2)错误:s[j]= "\0"; 正确:s[j]='\0'; 【解析】错误1:字母包括小写字母和大写字母,这里是“或”的关系,所以用“||”运算符。 错误2:字符串的结束标志符为字符,而不是字符串。 13-1. 改错题 下列给定的程序中,函数fun()的功能是:用选择法对数组中的n个元素按从大到小的顺序进行排序。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #define N 20 void fun(int a[],int n) { int i,j,t,p; /**********************found***********************/ for(j=0;j { p=j; for(i=j;i if(a[i]>a[p]) p=i; t=a[p]; a[p]=a[j]; /**********************found***********************/ a[p]=t; } } main() { int a[N]={11,32,-5,2,14},i,m=5; printf("排序前的数据:"); for(i=0;i printf("%d ",a[i]); printf("\n"); fun(a,m); printf("排序后的顺序:"); for(i=0;i printf("%d ",a[i]); printf("\n"); } 13-1. 改错题 (1)错误:for(j=0;j 正确:for(j=0;j (2)错误:a[p]=t; 正确:a[j]=t; 【解析】错误1:根据C语言语法,for循环中循环条件后不加分号,除非做空操作。 错误2:将两数进行交换的常用语句,借助第三个变量。 14-1. 改错题 下列给定程序中,函数fun()的功能是:在字符串str中找出ASCⅡ码值最小的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用fun()函数之前给字符串输入fagAgBDh,调用后字符串中的内容为AfaggBDh。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include /**********************found***********************/ void fun(char p) { char min, *q; int i=0; min=p[i]; while (p[i]!=0) { if (min>p[i]) { /**********************found***********************/ p=q+i; min=p[i]; } i++; } while(q>p) {*q=*(q-1); q--; } p[0]=min; } 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"); } 14-1. 改错题 (1)错误:void fun(char p) 正确:void fun(char *p) (2)错误:p=q+i; 正确:q=p+i; 【解析】错误:由于本题中函数的功能是对字符串进行处理,而不是对单个字符进行处理,因此,函数的参数应为字符串指针。 错误2:使指针q指向ASCII码最小的字符 本题解答需要3个步骤: (1)找到字符串中ASCII码值最小的字符,并保存。 (2)将该字符复制,并将该字符前面的字符串顺次后移。 (3)将ASCII码值最小的字符赋给字符串的第1个字符。找到ASCII码值最小的字符可以通过定义一个字符min,该字符初始时等于字符串的第1个字符,若字符串的下一个字符小于min,则将下一个字符赋给min,如此循环到字符尾,即可得到ASCII码值最小的字符,同时令指针q指向最小字符。之后对最小字符前面的子串顺次后移,可采用while语句实现。 此题需要熟练掌握和灵活应用C语言的字符与整型变量的关系以及字符串操作。 15-1. 改错题 下列给定程序中,函数fun()的功能是:从n个学生的成绩中统计出高于平均分的学生人数,人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩: 85 65.5 69 95.5 87 55 62.5 75 则高于平均分的学生人数为4(平均分为74.312500)。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #define N 20 int fun(float *s, int n,float *aver) { /**********************found***********************/ int ave ,t=0; int count=0,k,i; for(k=0;k t+=s[k]; ave=t/n; for(i=0;i /**********************found***********************/ if(s[i] count++; /**********************found***********************/ aver=ave; return count; } main() { float s[30],aver; int m,i; clrscr(); printf("\nPlease enter m: "); scanf("%d",&m); printf("\nPlease enter %d mark :\n",m); for(i=0;i scanf("%f",s+i); printf("\nThe number of students :%d\n",fun(s,m,&aver)); printf("Ave=%f\n",aver); } 15-1. 改错题 (1)错误:int ave ,t=0; 正确:float ave ,t=0.0; (2)错误:if(s[i] 正确:if(s[i]>ave) (3)错误:aver=ave; 正确:*aver=ave; 【解析】错误1:ave和t分别用来存放成绩的平均值和总分,应为实型数。 错误2:根据题意,找出高于平均分的数,所以此处的关系运算符应为“>” 错误3:aver是指针,而ave是一个数,不能将一个数赋值给一个指针,而要用符号'*'。15-1. 改错题 下列给定程序中,fun()函数的功能是:根据形参m,计算下列公式的值。 t=1-1/2+1/3-1/4+…+(-1)(m+1)/m 例如,若输入5,则应输出0.783333。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /**********************found***********************/ int fun(int m) { double t=1.0,j=1.0; int i; /**********************found***********************/ for(i=1;i {j=-1*j;t+=j/i;} return t; } main() { int m; clrscr(); printf("\nPlease enter 1 integer number: "); scanf("%d",&m); printf("\nThe result is %lf\n", fun(m)); } 15-1. 改错题 (1)错误:int fun(int m) 正确:double fun(int m) (2)错误:for(i=1;i 正确:for(i=2;i<=m;i++) 【解析】错误:函数的返回值为实型数,所以应定义为double类型。 错误2:根据题目的公式,参加运算的数应从2到m,包括m。 16-1. 改错题 下列给定程序中,fun()函数的功能是:根据形参m,计算下列公式的值。 t=1-1/2+1/3-1/4+…+(-1)(m+1)/m 例如,若输入5,则应输出0.783333。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /**********************found***********************/ int fun(int m) { double t=1.0,j=1.0; int i; /**********************found***********************/ for(i=1;i {j=-1*j;t+=j/i;} return t; } main() { int m; clrscr(); printf("\nPlease enter 1 integer number: "); scanf("%d",&m); printf("\nThe result is %lf\n", fun(m)); } 16-1. 改错题 (1)错误:int fun(int m) 正确:double fun(int m) (2)错误:for(i=1;i 正确:for(i=2;i<=m;i++) 【解析】错误:函数的返回值为实型数,所以应定义为double类型。 错误2:根据题目的公式,参加运算的数应从2到m,包括m。 17-1. 改错题 下列给定的程序中,函数fun()的功能是:计算并输出k以内最大的6个能被7或11整除的自然数之和。K 的值由主函数传入,若k的值为500,则函数的值为2925。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include int fun(int k) { int m=0,mc=0, j; /**********************found***********************/ while(k>=2)&&(mc<6) { /**********************found***********************/ if((k%7=0)||(k%11=0)) { /**********************found***********************/ m=k; mc++; } k--; } return m; } main() { clrscr(); printf("%d\n ",fun(500)); } 17-1. 改错题 (1)错误:while(k>=2)&&(mc<6) 正确:while((k>=2)&&(mc<6)) (2)错误:if((k%7=0)||(k%11=0)) 正确:if((k%7==0)||(k%11= =0)) (3)错误:m=k; 正确:m=m+k; 【解析】错误1:C语言规定while语句后的表达式两侧必须要有圆括号。 错误2:if语句的判断条件应用关系运算符,而不是赋值运算符。 错误3:根据题意,将满足条件的数求累加和。 17-1. 改错题 下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。例如,当s中的数为4576235时,t中的数为4725。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /**********************found***********************/ int fun(long s,long *t) { long s1=10; *t=s%10; while(s>0) { /**********************found***********************/ s=s%100; *t=s%10*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); } 17-1. 改错题 (1)错误:int fun(long s,long *t) 正确:void fun(long s,long *t) (2)错误:s=s%100; 正确:s=s/100; 【解析】错误1:函数由指针来完成参数的传递,所以没有返回值,应定义函数的类型为void。 错误2:此处要注意特殊运算符号“%”--取余和“/”--整除的区别。将一个数整除100则可得到由其百位数以上的数组成的新数字,将一个数整除100取余则可得到由十位数和个位数组成的新数。 18-1. 改错题 下列给定程序中函数fun()的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。例如,当s中的数为4576235时,t中的数为4725。 请改正程序中的错误,使它能得到正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /**********************found***********************/ int fun(long s,long *t) { long s1=10; *t=s%10; while(s>0) { /**********************found***********************/ s=s%100; *t=s%10*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); } 18-1. 改错题 程序改错------------------------------------- 1题目:在一个一维整型数组中找出其中最大的数及其下标。 程序中共有4条错误语句,请改正错误。 -----------------*/ #define N 10 /**********FOUND**********/ float fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;cmax) { max=*c; /**********FOUND**********/ b=c-a;} return max; } main() { int a[N],i,max,p=0; printf("please enter 10 integers:\n"); for(i=0;i 下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0 struct stud { long num; char name[10]; float score; struct stud *next; }; /* …………… comment …………… */ int n; struct stud create() 序中有两处错误代码,请改正.注意,不得改变程序结构。 #include <> main() { int a[8],*p=a; int i,j; int tempmin,tempcode; printf("\n input the numbers:\n"); for (i=0;i<8;i++) scanf("%d",p+i); tempmin=*p; for (i=0;i<7;i++) { for (j=i;j<8;j++) if (j==i||*(p+j) 【程序改错】 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*m double 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;i 1、以下程序的功能是求如下表达式: 1 1 1 S = 1 + ——+ ———+ ...... + ——————— 1+2 1+2+3 1+2+3+......+n 『答案』:1 scanf("%d",&n); 2 float fun(int n) 3 for(i=1;i<=n;i++) 4 s+=1.0/t 或s= s + 1.0 /t; 2、题目:函数fun的功能是:根据整型形参m的值,计算如下公式的值。 1 1 1 t = 1- ——- ——- ... - —— 2x2 3x3 mxm 例如,若m=5,则应输出:0.536389 『答案』:1 for(i=2;i<=m;i++)或for(i=2;i 第12次上机程序改错第1题 【程序改错】 -------------------------------------------------------- 功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。 例如:输入圆的半径值:19.527 输出为:s = 598.950017。 ------------------------------------------------------*/ #include printf ( "Enter x: "); scanf ( "%f", &x ); printf (" s = %f\n ", fun ( x ) ); } 第2题【程序改错】 功能:先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如:当s中的字符串为:“ABCDE”时,则t中的字符串应为:“EDCBAABCDE”。 ------------------------------------------------------*/ #include (一)功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。#include "stdio.h" #define N 20 void fun(int a[], int n) { int i, j, t, k; for (j = 0 ;j < n-1 ;j++) { /**********ERROR**********/ k = j for (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; kc语言程序改错题
C语言程序改错及填空题
c语言程序改错
C语言程序改错2
C语言程序改错题
程序改错完整版---C语言
齐齐哈尔大学C语言题库 程序改错(部分)