编程题:
92.请编写函数fun,它的功能是计算:
s = (ln(1)+ln(2)+ln(3)+…+ln(m))0.5,
s作为函数值返回。在C语言中可调用log(n)函数求ln(n)。log函数的引用说明是:double log(double x)。例如,若m的值为20,则fun函数值为6.506583。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#include
double fun( int m )
{
}
main()
{
clrscr();
printf(“%f\n”,fun(20));
}
93.请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。
例如,当n=10,x=0.3时,函数值为1.349859。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#include
double fun( double x, int n)
{
}
main()
{
clrscr();
printf(“%f\n”, fun(0.3,10));
}
改错题:
21.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。
函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#include
typedef struct aa
{
int data;
struct aa *next;
} NODE;
/********found********/
fun(NODE *h)
{
int max=-1;
NODE *p;
p=h;
while(p)
{
if(p->data>max)
max=p->data;
/********found********/
p=h->next;
}
return max;
}
outresult(int s,FILE *pf)
{
fprintf(pf,”\nThe max in link : %\n”,s);}
NODE *creatlink(int n,int m)
{
NODE *h, *p, *s, *q;
int i, x;
h=p=(NODE *)malloc(sizeof(NODE));
h->data=9999;
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;
}
p->next=NULL;
return h;
}
outlink(NODE *h,FILE *pf)
{
NODE *p;
p=h->next;
fprintf(pf,”\nTHE LIST:\n\n HEAD”);
while(p)
{
fprintf(pf,”->%d “,p->data);
p=p->next;
}
fprintf(pf,”\n”);
}
main()
{
NODE *head; int m;
clrscr();
head=creatlink(12,100);
outlink(head,stdout);
m=fun(head);
printf(“\nTHE RESULT :\n”);
outresult(m,stdout);
}
24.下列给定程序中,函数fun的功能是:从s所指字符串中,找出t所指子串的个数作为函数值返回。例如,当S所指字符串中的内容为abcdabfab,t所指字符串的内容为ab,则函数返回整数3。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#include
int fun(char *s,char *t)
{
int n;
char *p,*r;
n=0;
while(*s)
{
p=s;
r=t;
while(*r)
/********found********/
if(r==p)
{
r++;
p++;
}
else
break;
/********found********/
if(r==’\0′)
n++;
s++;
}
return n;
}
main()
{
char s[100],t[100];
int m;
clrscr();
printf(“\nPlease enter string s:”);
scanf(“%s”,s);
printf(“\nPlease enter substring t:”);
scanf(“%s”,t);
m=fun(s,t);
printf(“\nThe result is: m=%d\n”,m);
}