C语⾔-函数调⽤练习(附答案)⽬录
1.编写判断素数的函数,主函数输⼊10个整数,素数输出,要求每⾏最多出5个。
#include<stdio.h>
int ss(int j)
{
int flag =1; int i;
for(i=2;i<j;i++)
if(j%2==0){
flag=0;
break;}
if (flag ==0)
return 0;
else return 1;
}
int main()
{
int i,a;
int n=0;
for(i=1;i<=10;i++)
scanf("%d",&a);
if(ss(a)){
printf("%d",a);
n++;
}
if(n==5)
printf("\n");
return 0;
}
2.⽐较三个数⼤⼩。
int max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d",max(a,max(b,c)));
return 0;
}
3.使⽤函数统计指定数字的个数,读⼊⼀个整数,统计并输出该数中“2”的个数,要求定义并调⽤函数
countdigit(number,digit),它的功能是统计整数number。例如:countdigit(12922,2),返回值是3。
#include<stdio.h>
int countdigit(int number,int digit)
{
int n=0;
int a;
while(number!=0){
a=number%10;
number = number/10;
if(a==digit)
n++;}
return n;
}
int main()
{
int number,digit;
scanf("%d%d",&number,&digit);
printf("%d",countdigit(number,digit));
return 0;
}
4.写两个函数,分别求两个整数的最⼤公约数和最⼩公倍数,⽤主函数调⽤这两个函数,并输出结果。两个整数由键盘输⼊。
int max(int x,int y)
{
int z;
while(y!=0){
z=x%y;
x=y;
y=z;
}
return x;
}
int min(int x,int y)
{
int n;
n=(x*y)/max(x,y);
return n;
}
int main()
{
int x,y;
int t;
scanf("%d%d",&x,&y);
if(x<y){
t=x;
x=y;
y=t;
}
printf("最⼤公约数%d,最⼩公倍数%d",max(x,y),min(x,y));
}
5.写⼀个函数,输⼊⼀个⼗六进制数,输出相应的⼗进制数。
#include <string.h>
#include <math.h>
int main()
{
char a[1000];
int f1(char a[]);
gets(a);
printf("%d\n",f1(a));
return 0;}
int f1(char a[])
{
int n,i,num=0;
n=strlen(a);
for(i=n-1;i>=0;i--)
{
if(a[i]>='0'&&a[i]<='9')
num+=(a[i]-'0')*pow(16,n-1-i);
else if(a[i]>='A'&&a[i]<='F')
num+=(10+(a[i]-'A'))*pow(16,n-1-i);
else if(a[i]>='a'&&a[i]<='f')
num+=(10+(a[i]-'a'))*pow(16,n-1-i);
return num;}
}
6. 汉诺塔问题
#include<stdio.h>
void hanio(int n,char a,char b,char c);
int main()
{ int n;
char a,b,c;
scanf("%d",&n);
hanio(n,'a','b','c');
return 0;
}
void hanio(int n,char a,char b,char c)
{if (n==1)
printf("%c->%c\n",a,b);
else
{hanio(n-1,a,c,b);
printf("%c->%c\n",a,b);
hanio(n-1,c,b,a); }
}
7. 编写递归函数reverse(int n)实现将整数n逆序输出。
int reverse(int n)
{
int m=0;
while(n!=0)
{
m=m*10+n%10;
n=n/10;
}
return m;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",reverse(n));
return 0;
}
8.编写递归函数calc_pow ( double x, int n )实现⼀个计算x n(n≥1)的函数
#include<stdio.h>
double calc_pow(double x,int n)
{
if(n>=1)
return (x*calc_pow(x,n-1));
else return 1;
}
int main()
{
double x;
int n;
scanf("%lf%d",&x,&n);
printf("%.0f\n",calc_pow(x,n));
return 0;}
9. 编写递归函数int fib(int n)求Fabonacci数列.
c语言编写递归函数Fabonacci数列的定义为:
f(n)=f(n-2)+f(n-1)  (n>=2)  其中 f(1)=1,f(2)=1。
如输⼊3  (n=3)
则输出
fit(1)=1
fit(2)=1
fit(3)=2