第6章 函数与预处理习题解答

int i,j,si,sj; for(i=1;i<300;i++) {

si=divs(i);

for(j=1;j<300;j++) {

sj=divs(j);

if(si==j && i==sj && i!=j) printf(\ } } }

int divs(int n) {

int i,s=0;

for(i=1;i

*9.编写以下函数:①输入职工的姓名和职工号;②按职工号由小到大排序,姓名顺序也随之调整;③输入一个职工号,找出该职工的姓名。在主函数中调用这些函数。

(本题应放在第9章,定义结构体数据类型,用一个结构体变量存储职工的姓名和职工号) #include struct worker {

char na[5]; int no; };

int main() {

struct worker s[5]; struct worker t; int i,j,k;

printf(\ for(i=0;i<5;i++)

scanf(\ for(i=0;i<5;i++)

printf(\ for(i=0;i<5;i++) //选择法排序 {

k=i;

for(j=i;j<5;j++)

{

if(s[j].no

for(j=0;j<5;j++)t.na[j]=s[i].na[j];//元素s[i]与s[k]交换,成员na是字符串 t.no=s[i].no;

for(j=0;j<5;j++)s[i].na[j]=s[k].na[j]; s[i].no=s[k].no;

for(j=0;j<5;j++)s[k].na[j]=t.na[j]; s[k].no=t.no; }

for(i=0;i<5;i++)

printf(\}

10.设计程序完成下列计算。 已知:

y?f(x,n),

f(x?2.3,n)?f(x?3.2,n?3)2nx2x4nx其中:f(x,n)?1????(?1)(n?0) 2!4!(2n)!当x=5.6,n=7时,求y。

要求通过嵌套调用完成计算。 #include

long fatc(int n) //求阶乘 {

int i; long p=1;

for(i=1;i<=n;i++) p=p*i; return p; }

double f(double x,int n)//实现f(x,n)函数 {

double sum=1,p=1; int i,s=1;

for(i=2;i<=2*n;i+=2) {

s=-s; p=p*x*x;

sum=sum+s*p/fatc(i); }

return sum;

}

int main() {

double y,x=5.6; int n=7;

y=f(x,n)/(f(x+2.3,n)+f(x-3.2,n+3)); printf(\ return 0; }

实验六 函数与编译预处理 2.程序填空

⑴下面的函数多次求两数x,y之积。 #include

int mul(int a,int b); //原程序没有该引用声明 int main() {

int x,y,z;

printf(\ scanf(\ while(x!=0) {

z=mul(x,y);

printf(\ printf(\ scanf(\ }

return 0; }

int mul(int a,int b) {

int c; c=a*b; return c; } ⑵求

?n!(函数mm用来求阶乘)

110#include int main() {

long s=0,i,mm(int k); //mm(int k)为函数的引用声明 for(i=1;i<11;i++)

s=s+mm(i); printf(\ return 0; }

long mm(int k) {

long t=1,j;

for(j=1;j<=k;j++) t*=j; return t; }

3. 编程。

⑴定义函数int f(int x)判断x是否为奇数,若是则函数返回1,否则返回0。 #include int f(int x) {

int y; if(x%2!=0) y=1; else y=0; return y; }

int main() {

int x;

printf(\ scanf(\ if(f(x))

printf(\ else

printf(\ return 0; }

⑵定义函数int f(int m,int n)求m.要求用函数递归调用的方法。 #include int f(int m,int n) {

int y; if(n==0) y=1;

n

else

y=m*f(m,n-1); return y; }

int main() {

int m,n;

printf(\ scanf(\

printf(\ return 0; }

⑶定义函数int f(int n)求

?i。要求用函数递归调用的方法。

1n#include int f(int n) {

int s; if(n==1) s=1; else

s=n+f(n-1); return s; }

int main() {

int n;

printf(\ scanf(\

printf(\\\n\ return 0; }

⑷定义函数int f(int a,int b)求a,b的最大公约数。 #include int f(int a,int b) {

int r,g; r=a%b; if(r==0) g=b; else

g=f(b,r);

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4