C语言程序改错(一)
(一)功能:用选择法对数组中的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; k<n; k++)
{
d = a+b+c;
/**********ERROR**********/
a=b
b=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个字符,以相反顺序
打印出来。
#include"stdio.h"
main()
{
int i=5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");
}
void palin(n)
int n;
{
/**********ERROR**********/
char next
if(n<=1)
{
/**********ERROR**********/
next!=getchar();
printf("\n\0:");
putchar(next);
}
else
{
next=getchar();
/**********ERROR**********/
palin(n);
putchar(next);
}
}
【参考答案】
char next;
【参考答案】
next=getchar();
【参考答案】
palin(n-1);
(四)
功能:计算级数 ex=1+x+x2/2!+x3/3!+ ...+xn/n! 的值。其中xn代表x的n次方。
include "stdio.h"
main()
{
int m,n;
float x,term,ex1,ex2;
printf("x,m=");
scanf("%f %d",&x,&m);
/**********ERROR**********/
ex1==ex2=1;
term=1;
for(n=1;n<=m;n++)
{
/**********ERROR**********/
term*=x%n;
ex1+=term;
}
ex2=term;
/**********ERROR**********/
for (n=m;n>1; n--)
{
term*=n/x;
ex2+=term;
}
printf("exforward=%f exbackrard=%f\n",ex1,ex2);
}
【参考答案】
ex1=ex2=1;
【参考答案】
term*=x/n;
【参考答案】
for (n=m;n>=1;n--)
(五)功能:用"冒泡法"对连续输入的十个字符排序后按从小到大的次序
输出.
define N 10
#include "stdio.h"
#include "string.h"
void sort(char str[N]);
main( )
{
int i;
char str[N];
/***********ERROR***********/
for(i=0;i<N;i++)scanf("%c",str[i]);
/***********ERROR***********/
sort(str[N]);
for(i=0;i<N;i++)
printf("%c",str[i]);
printf("\n");
}
void sort(char str[N])
{
int i,j; char t;
for(j=1;j<N;j++)
/***********ERROR***********/
for(i=0;i<N-j;i--)
/***********ERROR***********/
if(str[i]<str[i+1])
{
t=str[i];
str[i]=str[i+1];
str[i+1]=t;
}
}
【参考答案】
for(i=0;i<N;i++)scanf("%c",&str[i]);
【参考答案】
sort(str);
【参考答案】
for(i=0;i<N-j;i++)
【参考答案】
if(str[i]>str[i+1])
if(str[i+1]<str[i])
(六)【
功能:读取7个数(1-50)的整数值,每读取一个值,程序打印
出该值个数的*。
#include "stdio.h"
main()
{
int i,a,n=1;
/**********ERROR**********/
while(n<7)
{
do
{
scanf("%d",&a);
}
/**********ERROR**********/
while(a<1&&a>50);
/**********ERROR**********/
for(i=0;i<=a;i++)
printf("*");
printf("\n");
n++;
}
}
【参考答案】
while(n<=7)
【参考答案】
while(a<1||a>50);
【参考答案】
for(i=1;i<=a;i++)