规定在__2__处使f指向函数f1,在__3__处使f指向函数f2。当调用正确时,程序输出:x1=5.000000, x2=3.000000, x1*x1+x1*x2=40.000000
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
double f1(double x)
{return x*x;}
double f2(double x, double y)
{return x*y;}
double fun(double a, double b)
{
/**********found**********/
__1__ (*f)();
double r1, r2;
/**********found**********/
f = __2__ ; /* point fountion f1 */
r1 = f(a);
/**********found**********/
f = __3__ ; /* point fountion f2 */
r2 = (*f)(a, b);
return r1 + r2;
}
main()
{double x1=5, x2=3, r;
r = fun(x1, x2);
printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n",x1, x2, r);
}
解题答案:
/**********第一空**********/
double (*f)();
/**********第二空**********/
f = f1 ; /* point fountion f1 */
/**********第三空**********/
f = f2 ; /* point fountion f2 */
****************************************** [NextPage] 二、改错题:给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点 (不包括头结点)数据域为偶数的值累加起来, 并且作为函数值返回。
请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构!
给定源程序:
#include
#include
typedef struct aa
{int data; struct aa *next;}NODE;
int fun(NODE *h)
{int sum = 0 ;
NODE *p;
/***********found**********/
p=h;
while(p)
{if(p->data%2==0)
sum +=p->data;
/***********found**********/
p=h->next;
}
return sum;
}
NODE *creatlink(int n)
{NODE *h, *p, *s;
int i;
h=p=(NODE *)malloc(sizeof(NODE));
for(i=1; i<=n; i++)
{s=(NODE *)malloc(sizeof(NODE));
s->data=rand();
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 ,"\n\nTHE LIST :\n\n HEAD ");
while(p)
{fprintf(pf ,"->%d ",p->data); p=p->next;}
fprintf (pf,"\n");
}
outresult(int s, FILE *pf)
{fprintf(pf,"\nThe sum of even numbers : %d\n",s);}
main()
{NODE *head; int even;
head=creatlink(12);
head->data=9000;
outlink(head , stdout);
even=fun(head);
printf("\nThe result :\n"); outresult(even, stdout);
}
解题答案:
/***********found**********/
p=h->next;
/***********found**********/
p=p->next;
******************************************
[NextPage] 三、程序题:请编写函数fun, 函数的功能是: 判断字符串是否为回文?若是, 函数返回1, 主函数中输出: YES, 否则返回0, 主函数中输出NO。回文是指顺读和倒读都一样的字符串。
例如, 字符串LEVEL是回文, 而字符串123312就不是回文。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
给定源程序:
#include
#include
#define N 80
int fun(char *str)
{
}
main()
{char s[N] ;void NONO ();
printf("Enter a string: "); gets(s);
printf("\n\n"); puts(s);
if(fun(s)) printf("YES\n");
else printf("NO\n");
NONO();
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
FILE *rf, *wf ;
int i ; char s[N] ;
rf = fopen("in.dat","r");
wf = fopen("out.dat","w");
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%s", s);
if(fun(s)) fprintf(wf, "%s YES\n", s);
else fprintf(wf, "%s NO\n", s);
}
fclose(rf); fclose(wf);
}
参考答案:
int fun(char *str)
{
int i, j = strlen(str) ;
for(i = 0 ; i < j / 2 ; i++)
if(str[i] != str[j - i - 1]) return 0 ;
return 1 ;
}
main()
{ char s[N] ;
printf("Enter a string: ") ; gets(s) ;
printf("\n\n") ; puts(s) ;
if(fun(s)) printf(" YES\n") ;
else printf(" NO\n") ;
NONO() ;
}
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|