creat在c语言中的功能作用,2011二级C语言改错及解答

程序改错题

1. 给定程序MODI1.C中:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……。例如:若给n输入7,该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。long fun(int g)

{/**********found**********/

switch(g); //去掉;

{ case 0: return 0;

/**********found**********/

case 1 ;case 2 : return 1 ;} //case 1:

return( fun(g-1)+fun(g-2) );}

main(){ long fib; int n;

printf("Input n: "); scanf("%d",&n); printf("n = %d\n",n);

fib=fun(n);

printf("fib = %d\n\n",fib);}

2. 给定程序MODI1.C中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求复制三个字符之后插入一个空格。

void fun(char *p, char *b)

{ int i, k=0;

while(*p){ i=1;

while( i<=3 && *p ) {

/**********found**********/

b[k]=p; //b[k]=*p

k++; p++; i++; }

if(*p) {

/**********found**********/

b[k++]=" "; } //b[k++]=’’;

}b[k]='\0';}

main(){ char a[80],b[80];

printf("Enter a string: "); gets(a);

printf("The original string: "); puts(a);

fun(a,b);

printf("\nThe string after insert space: "); puts(b); printf("\n\n");}

3. .给定程序MODI1.C中函数fun的功能是:找出一个大于形参m且紧随m的素数,并作为函数值返回。

int fun(int m)

{ int i, k ;

for (i = m + 1 ; ; i++) {

for (k = 2 ; k < i ; k++)

/**************found**************/

if (i % k != 0) //if(i%k==0)

break ;

/**************found**************/

if (k

return(i); }}

main(){int m; m=fun(40);printf("%d",m);}

4..给定程序MODI1.C中函数fun的功能是:删除p 所指字符串中的所空白字符(包括Tab字符、回车符及换行符)。输入字符串用?#?结束输入

fun ( char *p) { int i,t; char c[80];

/************found************/

For (i = 0,t = 0; p[i] ; i++) //for

if(!isspace(*(p+i))) c[t++]=p[i];

/************found************/

c[t]="\0"; //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);}

5. .给定程序MODI1.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回.

/**********found**********/

char fun(char *s, char *t)

/*改为char *fun(char *s,char *t) */

{ int sl=0,tl=0; char *ss, *tt;

ss=s; tt=t;

while(*ss)

{ sl++;

/**********found**********/

(*ss)++; //ss++

} while(*tt) { tl++;

/**********found**********/

(*tt)++; } //tt++

if(tl>sl) return t;

else return s;}

main()

{ char a[80],b[80],*p,*q; int i;

printf("\nEnter a string : "); gets(a);

printf("\nEnter a string again : "); gets(b);

printf("The longer

is :\n\"%s\"\n",fun(a,b));}

6. .给定程序MOID1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。

typedef struct aa

{ int data; struct aa *next;

} NODE;

NODE *Creatlink(int n, int m)

{ NODE *h=NULL, *p, *s;

int i;

/**********found***********/

p=(NODE )malloc(sizeof(NODE)); //(NODE *)h=p;

p->next=NULL;

for(i=1; i<=n; i++)

{ s=(NODE *)malloc(sizeof(NODE));

s->data=rand()%m; s->next=p->next;

p->next=s; p=p->next; }

/**********found***********/

return p; } //return h

outlink(NODE *h)

{ NODE *p; p=h->next;

printf("\n\nTHE LIST :\n\n HEAD ");

while(p)

{ printf("->%d ",p->data);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值