一、程序填空题
在此程序中,函数fun的功能是:判断形参s所指字符串是否是”回文”(Panlindrome),若是,函数返回值为1;不是,函数返回值0。”回文”是正读和反读都一样的字符串(不区分大小写字母)。
例如,LEVEL和Level是”回文”,而LEVLEV不是”回文”。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int fun(char *s)
{ char *lp,*rp;
/**********found**********/
lp= __1__ ;
rp=s+strlen(s)-1;
while((toupper(*lp)==toupper(*rp)) && (lp<rp) ) {
/**********found**********/
lp++; rp __2__ ; }
/**********found**********/
if(lp<rp) __3__ ;
else return 1;
}
void main()
{ char s[81];
printf("Enter a string: "); scanf("%s",s);
if(fun(s)) printf("\n\"%s\" is a Palindrome.\n\n",s);
else printf("\n\"%s\" isn't a Palindrome.\n\n",s);
}
答案:(1) s (2) -- (3) return 0
二、程序修改题
在此程序中,函数fun的功能是:求出如下分数列的前n项之和。
和值通过函数返回main函数。例如,若n=5,则应输出8.391667。
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
/*************found**************/
fun (int n)
{ int a,b,c, k;
double s;
s=0.0;a=2;b=1;
for(k=1;k<=n;k++)
{
/*************found**************/
s=s+(Double)a/b;
c=a;a=a+b;b=c;
}
return s;
}
void main()
{ int n=5;
system("CLS");
printf("\nThe value of function is:%lf\n",fun(n));
}
答案:(1) double fun(int n) (2) s=s+(double)a/b;
三、程序设计题
在此程序中,编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。
例如,若输入17.5,则应输出19、23、29、31、37。
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void fun(int m,int k,int xx[])
{
}
void main()
{
FILE *wf;
int m,n,zz[1000];
system("CLS");
printf("\nPlease enter two integers: ");
scanf("%d%d",&m,&n);
fun(m, n, zz);
for(m=0;m<n;m++)
printf("%d ",zz[m]);
printf("\n ");
/******************************/
wf=fopen("out.dat","w");
fun(17,5,zz);
for(m=0;m<5;m++)
fprintf(wf,"%d ",zz[m]);
fclose(wf);
/*****************************/
}
答案:
int i,j,n;
for(i=m+1,n=0;n<k;i++) /*找大于m的素数,循环k次,即找出紧靠m的k个素数*/
{for(j=2;j<i;j++) /*判断一个数是否为素数,如果不是,跳出此循环,判断下一个数*/
if(i%j==0) break;
if(j>=i) /*如果是素数,放入数组xx中*/
xx[n++]=i;
}