函数应用程序设计
2008-06-02 21:57阅读:
1、编写求圆的面积的函数,并调用该函数求出圆环的面积。
#define PI
3.14159
float area(float r)
{float s;
s=PI*r*r;
return(s);
}
main()
{float r1,r2,s;
scanf('%f%f',&r1,&r2);
s=area(r1)-area(r2);
printf('s=%f',s);
}
2A、编写求k!的函数,再调用该函数求10!并输出。
解法1:
float jc(int
k)
{float p=1;
int i;
for(i=1;i<=k;i++)
p=p*i;
return(p);
}
main()
{float p;
p=jc
(10);
printf('p=%f',p);
}
解法2:
float jc(int
k)
{float p=1;
while(k>0)
{p=p*k;
k--;
}
return(p);
}
main()
{float p;
p=jc(10);
printf('p=%f',p);
}
2、编写求k!的函数,再调用该函数求1!+3!+5!+...+19!之和并输出。
float jc(int
k)
{float p=1;
int i;
for(i=1;i<=k;i++)
p=p*i;
return(p);
}
main()
{float s=0;
int i;
for(i=1;i<=19;i+=2)
s=s+jc(i);
printf('s=%f',s);
}
3、编写求k!的函数,再调用该函数求C(m,n)=m!/(n!
*(m-n)!)并输出。
float jc(int
k)
{float p=1;
int i;
for(i=1;i<=k;i++)
p=p*i;
return(p);
}
main()
{float c;
int m,n;
scanf('%d%d',&m,&n);
c=jc(m)/jc(n)/jc(m-n);
printf('c=%f',c);
}
4、编写判断素数的函数,再调用该函数判断1937是否是素数。
int isp(int
m)
{int i;
for(i=2;i<=m-1;i++)
{if(m%i==0)
return(0);
}
return(1);
}
main()
{if(isp(1973)!=0)
printf('It's a prime number.');
else
printf('It's not a prime number.');
}
5、编写判断素数的函数,再调用该函数求出1000以内的所有素数。
int isp(int
m)
{int i;
for(i=2;i<=m-1;i++)
{if(m%i==0)
return(0);
}
return(1);
}
main()
{int i;
for(i=2;i<=1000;i++)
{if(isp(i)!=0)
printf('%d,',i);
}
printf('');
}
6、编写判断素数的函数,调用该函数求出1000以内的所有素数,存入数组中并输出。
int isp(int
m)
{int i;
for(i=2;i<=m-1;i++)
{if(m%i==0)
return(0);
}
return(1);
}
main()
{int a[500],i,n=0;
for(i=2;i<=1000;i++)
{if(isp(i)!=0)
{a[n]=i;
n++;
printf('%d,',i);
}
}
printf('');
}
7、编写判断素数的函数,调用该函数求出1000以内的所有素数之和并输出。
int isp(int
m)
{int i;
for(i=2;i<=m-1;i++)
{if(m%i==0)
return(0);
}
return(1);
}
main()
{int s=0,i;
for(i=2;i<=1000;i++)
{if(isp(i)!=0)
s=s+i;
}
printf('s=%d',s);
}
8、编写求两个数中最大数的函数,并调用该函数求出三个数中的最大数。
float m(float
a,float b)
{float max;
if(a>b)
max=a;
else
max=b;
return(max);
}
main()
{float x,y,z,t,max;
scanf('%f%f%f',&x,&y,&z);
t=m(x,y);
max=m(t,z);
printf('max=%f',max);
}
9、编写求两个数中最大数的函数,并调用该函数求出四个数中的最大数。
float m(float a,float b)
{float max;
if(a>b)
max=a;
else
max=b;
return(max);
}
main()
{float a,b,c,d,u,v,max;
scanf('%f%f%f%f',&a,&b,&c,&d);
u=m(a,b);
v=m(c,d);
max=m(u,v);
printf('max=%f',max);
}
10、编写求三个数中最大数的函数,并调用该函数求出三个数中的最大数。
float m(float
a,float b,float c)
{float max;
if(a>b)
max=a;
else
max=b;
if(c>max)
max=c;
return(max);
}
main()
{float x,y,z,max;
scanf('%f%f%f',&x,&y,&z);
max=m(x,y,z);
printf('max=%f',max);
}
11、编写判定闰年的函数,并调用此函数判定某一年是否是闰年。
int isleap(int
y)
{if(y%400==0||y%4==0&&y%100!=0)
return(1);
else
return(0);
}
main()
{int year;
scanf('%d',&year);
if(isleap(year)!=0)
printf('%d is a leap year.',year);
else
printf('%d is not a leap year.',year);
}
12、编写判定闰年的函数,并调用此函数求出公元1年到公元1000年之间的所有闰年。
int isleap(int
y)
{if(y%400==0||y%4==0&&y%100!=0)
return(1);
else
return(0);
}
main()
{int year;
for(year=1;year<=1000;year++)
{if(isleap(year)!=0)
printf('%d,',year);
}
printf('');
}
13、编写一个将实数四舍五入到小数点后第n位的函数,并调用此函数将一个实数舍入到小数点后第2位(是指内部精度而非输出精度)。
double p(double x,int
n)
{int i;
for(i=1;i<=n;i++)
x=x*10;
x=x+0.5;
x=(long)x;
for(i=1;i<=n;i++)
x=x/10;
return(x);
}
main()
{double x;
x=p(x,2);
printf('x=%f',x);
}
14、编写一个函数用于将一个整数前后倒置,并调用此函数将一个从键盘输入的整数前后倒置。
int rev(int a)
{int d,r=0;
while(a!=0)
{d=a%10;
r=r*10+d;
a=a/10;
}
return(r);
}
main()
{int a,r;
scanf('%d',&a);
r=rev(a);
printf('r=%d',r);
}
15、编写求两个整数最大公约数的函数,并调用此函数求两个整数的最大公约数。
辗转相除法:
⑴以其中一个数作被除数,另一个数作除数,相除求余数。
⑵若余数不为0,则以上一次的除数作为新的被除数,以上一次的余数作为新的除数,继续求余数。
⑶直至余数为0时,对应的除数就是最大公约数。
int g(int m,int
n)
{int r;
while((r=m%n)!=0)
{m=n;
n=r;
}
return(n);
}
main( )
{int a,b,p;
scanf('%d%d',&a,&b);
p=g(a,b);
printf('p=%d',p);
}
16、编写求两个整数最大公约数的函数,并调用此函数求两个整数的最小公倍数。
int g(int m,int
n)
{int r;
while((r=m%n)!=0)
{m=n;
n=r;
}
return(n);
}
main( )
{int a,b,p,h;
scanf('%d%d',&a,&b);
p=g(a,b);
h=a*b/p;
printf('h=%d',h);
}
17、编写求两个整数最小公倍数的函数,并调用此函数求两个整数的最小公倍数。
int h(int m,int
n)
{int r,p;
p=m*n;
while((r=m%n)!=0)
{m=n;
n=r;
}
p=p/n;
return(p);
}
main( )
{int a,b,d;
scanf('%d%d',&a,&b);
d=h(a,b);
printf('d=%d',d);
}
18、编写求n个数平均值的函数,并调用此函数求从键盘输入的100个数的平均值。
float ave(float a[],int
n)
{float s=0,p;
int i;
for(i=0;i
{s=s+a[i];}
p=s/n;
return(p);
}
main()
{float x[100],p;
int i;
for(i=0;i<100;i++)
{scanf('%f',&x[i]);}
p=ave(x,100);
printf('p=%f',p);
}
18、编写求n个数平均值的函数,并调用此函数找出从键盘输入的100个成绩中所有低于平均分的成绩。
float ave(float
a[],int n)
{float s=0,p;
int i;
for(i=0;i
{s=s+a[i];}
p=s/n;
return(p);
}
main()
{float a[100],p;
int i;
for(i=0;i<100;i++)
{scanf('%f',&a[i]);}
p=ave(a,100);
for(i=0;i<100;i++)
{if(a[i]
<
B>
printf('%f,',a[i]);
}
}
19、编写求字符串长度的函数,并调用此函数求一个字符串的长度。
int slen(char
a[])
{int n=0;
while(a[i]!='\0')
n++;
return(n);
}
main()
{char a[80];
int n;
gets(a);
n=slen(a);
printf('n=%d',n);
}
20、编写字符串复制的函数,并调用此函数复制一个字符串。
void scopy(char
b[],char a[])
{int i;
for(i=0;a[i]!='\0';i++)
b[i]=a[i];
b[i]='\0';
}
main()
{char a[80],b[80];
gets(a);
scopy(b,a);
puts(b);
}
21、编写连接两个字符串的函数,并调用此函数连接两个字符串。
void scat(char
a[],char b[])
{int i,n1,n2;
n1=strlen(a);
n2=strlen(b);
for(i=0;i<=n2;i++)
a[n1+i]=b[i];
}
main()
{char a[200],b[100];
gets(a);
gets(b);
scat(a,b);
puts(a);
}
22、编写比较两个字符串大小的函数,并调用此函数比较两个字符串的大小。
int scomp(char
a[],char b[])
{int i,r;
i=0;
while(a[i]!='\0'&&b[i]!='\0')
{if(a[i]==b[i])
i++;
else
break;
}
r=a[i]-b[i];
return(r);
}
main()
{char a[80],b[80];
int d;
gets(a);
gets(b);
d=scomp(a,b);
printf('d=%d',d);
}
23、编写将字符数组中的字符串前后倒置的函数,并调用此函数将一个字符串前后倒置。
void srev(char
a[])
{char t;
int n,i,j;
n=strlen(a);
i=0;j=n-1;
while(i
{t=a[i];a[i]=a[j];a[j]=t;
i++;j--;
}
}
main()
{char a[80];
gets(a);
srev(a)
puts(a);
}
24、编写判断回文的函数,并调用此函数判定一个字符串是否是回文。
int isR(char a[])
{int i,j n;
n=strlen(a);
i=0;
j=n-1;
while(i
{if(a[i]==a[j])
{i++;j--;}
else
break;
}
if(i>=j)
return(1);
else
return(0);
}
main()
{char s[100];
gets(s);
if(isR(s)!=0)
printf('yes.');
else
printf('no.');
}
25、编写判断汉字回文的函数,并调用此函数判定一个汉字字符串是否是回文。
int isR(char a[])
{int i,j n;
n=strlen(a);
i=0;
j=n-2;
while(i
{if(a[i]==a[j]&&a[i+1]==a[j+1])
{i+=2;j-=2;}
else
break;
}
if(i>=j)
return(1);
else
return(0);
}
main()
{char s[100];
gets(s);
if(isR(s)!=0)
printf('yes.');
else
printf('no.');
}
山东淄博
巨同升