加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

函数应用程序设计

(2008-06-02 21:57:29)
标签:

杂谈

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\n",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\n",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\n",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\n",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\n",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.\n");
 else
  printf("It's not a prime number.\n");
}

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("\n");
}

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("\n");
}

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\n",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\n",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\n",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\n",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.\n",year);
 else
  printf("%d is not a leap year.\n",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("\n");
}

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\n",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\n",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\n",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\n",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\n",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\n",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",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\n",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.\n");
 else
  printf("no.\n");
}

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.\n");
 else
  printf("no.\n");
}

                                           山东淄博  巨同升

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有