C语言程序设计第六章 函 数(3)

2019-03-04 13:01

13.阅读下面程序,写出运算结果。

#include ―stdio.h‖

int binary (int x, int a[ ], int n) 输出结果: 1 { int low=0,high=n-1,mid; while(low<=high){ mid=(low+high)/2; if(x>a[mid]) high=mid-1; else if(x

void main ( )

{ static int a[ ]={4,0,2,3,1}; int i,t,j; for(i=1;i<5;i++){ t=a[i]; j=i-1;

while(j>=0&&t>a[j]){ a[j+1]=a[j]; j--; } a[j+1]=t; }

printf(―%d\\n‖,binary(3,a,5)); }

14.阅读下面程序,写出运算结果。

#include

#include void main ( )

{ double f (double, int); printf(―\\n‖,f(2.0,14)); }

double f (double x, int n) { double t; if(n==1) t=x; else {

if(n/2*2==n) t=x*f(x,n/2); else t=x*pow(f(x,n/2),2.0); } return t; }

15.阅读下面程序,写出运算结果。

#include double x,u,v

double t (double a,double(*f)(double))

59

输出结果: 256.000000 { return(*f)(a*a); } double f(double x) { return 2.0*x; } double g(double x) { return 2.0+x; } void main ( )

{ x=4.0; u=t(x,f); v=t(x,g); printf(―u=%5.3fv=%5.3f\\n‖,u,v); }

四、程序设计题

1.编一个名为root的函数,求方程ax2+bx+c=0的b2-4ac,并作为函数的返回值。其中的a、b、c作为函数的形式参数。 解:float root (float a, float b, float c)

{ return (b*b-4*a*c); }

2.编一个函数,若有参数y为闰年,则返回1,否则返回0。 解:int year (int y)

{ if ((y%4==0&&y0!=0)||y@0==0) return 1; else return 0; }

3.编一个无返回值、名为root2的函数,要求如下: 形式参数:a,b,c单精度实型,root单精度实型数组名。

功能:计算ax2+bx+c=0的两个实根(设b2-4ac>0)存入root[2]中。 解:#include

void root2 (float root[2], float a, float b, float c) { float p;

p=sqrt(b*b-4*a*c); root[0]=(-b+p)/(2*a); root[1]=(-b-p)/(2*a); }

4.编一个无返回值、名为max_min的函数,对两个整数实参能求出它们的最大公约数和最小公倍数并显示。

解:void max_min (int m, int n)

{ int a=m, b=n, t, r;

if(m

printf(―%d 和 %d 的最大公约数是%\\n‖,a,b,n); printf(―%d 和 %d 的最小公倍数是%\\n‖,a,b,a*b/n); }

60

5.编一个能判断一个整数是否是素数的函数,并用它求出3到100之间的所有素数。 解:#include void main ( )

#include { int a;

int prime (int m) for(a=3; a<=100; a++) { int k,i; if(prime(a) printf(―=‖,a); k=sqrt(m); printf(―\\n‖); for(i=2;i<=k;i++) } if(m%i==0) return 0; return 1; }

6.编一个名为days的函数,要求如下: 形式参数:整数y,m,d分别表示年、月、日。 功能:计算该日是该年的第几天。 返回值:整数第几天。 解:int days (int y, int m, int d)

{ int n; switch (1)

{ case 1: n=0; if(m==1) break; case 2: n=n+31; if(m==2) break; case 3: n=n+28; if(m==3) break; case 4: n=n+31; if(m==4) break; case 5: n=n+30; if(m==5) break; case 6: n=n+31; if(m==6) break; case 7: n=n+30; if(m==7) break; case 8: n=n+31; if(m==8) break; case 9: n=n+31; if(m==9) break; case 10: n=n+30; if(m==10) break; case 11: n=n+31; if(m==11) break; case 12: n=n+30; } n=n+d; if(m>2)

if((y%4==0&&y0!==0)||(y@0==0)) return n; }

7.编一个无返回值,名为trus的函数,要求如下:形式参数:s1[2][3], s2[3][2] 整型数组。 功能:将s1数组转置后存入s2数组中。 解:void trus (int s1[2][3], int s2[3][2])

{ int i,j;

for(i=0;i<2;i++) for(j=0;j<3;j++) s2[j][i]=s1[i][j]; }

61

n=n+1;

8.编一个名为countc函数,要求如下:

形式参数:array存放字符串的字符型数组名。 功能:统计array数组中大小写字母的数目。 返回值:字符串中大小写字母的数目。 解:include

int countc (char array[ ]) { int i,n=0;

for(i=0;i

if(array[i]<=?A‘&&array[i]>=?Z‘) n++; return n; }

9.编一个名为link函数,要求如下:

形式参数:s1[40],s2[40],s3[80]存放字符串的字符型数组。 功能:将s2连接到s1后存入s3中。 返回值:连接后字符串的长度。 解:include

int link (char s1[40], char s2[40], char s3[80]) { int i,k,n=0;

for(i=0;i

for(i=0;i

10.编一个函数,返回一维实型数组前n个元素的最大数、最小数和平均值。数组、n和最大数、最小数、平均值均作为函数的形式参数,本函数无返回值(用指针方法实现)。 解:void fun (float a[ ], int n, float *max, float *min, float *vag)

{ int i;

*vag=a[0]; *max=a[0]; *min=a[0]; for(i=1;i

{ if(a[i]>*max) *max=a[i]; if(a[i]<*min) *min=a[i]; *vag=*vag+a[i]; }

*vag=*vag/n; }

11.编一个函数,用“冒泡法”对字符数组中的字符按由小到大顺序排列。 要求字符数组作为形参。 解:void sortc (char a[ ])

{ int n,i,j; char ch;

62

n=strlen(a); for(i=0;ia[j+1])

{ ch=a[j]; a[j]=a[j+1]; a[j+1]=ch; }

}

12.编一个函数,能将十六进制转换成十进制。 形参:字符指针,指向放十六进制数的字符数组 返回值:十进制整数 解:#include

int tv (char *s) { int m,n=0; while(*s!=?\\0‘)

{ if(isalpha(*s)) *s=toupper(*s); switch(*a){

case ?F‘: m=15; break; case ?E‘: m=14; break; case ?D‘: m=13; break; case ?C‘: m=12; break; case ?B‘: m=11; break; case ?A‘: m=10; break; default: m=*s-48; }

n=n*16+m; s++; } return n; }

13.用递归法将一个整数转换成字符串。

解:#include < string.h> void convert (char *b) // 倒置数组

char a[255]; // 全局数组 { int l,i; void contw (int m) // 递归转换 char c,*p;

{ int n; l=strlen(b); p=b+l-1; static int i=1; for(i=1,b++; i

63

void main ( ) { int n;

void contw (int m); void convert (char *b); printf(―输入一整数:‖); scanf(―%d‖,&n);

if(n<0) {a[0]=?-‘; n=-m; } else a[0]=? ‘; contw(n); convert(a);

printf(―字符串:%s\\n‖,a); return; }

64


C语言程序设计第六章 函 数(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:最新-机关单位2019年植树节活动策划书 精品

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: