1.用函数的嵌套调用编写程序:输入4个整数,找出其中最大的数。
#include<stdio.h>
int main()
{
int a,b,c,d,n;
printf("输入4个整数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
int max1(int a,int b,int c,int d);
n=max1(a,b,c,d);
printf("最大的数为:%d",n);
return 0;
}
int max1(int a,int b,int c,int d)
{
int max(int x,int y);
int z;
z=max(a,b);
z=max(z,c);
z=max(z,d);
return z;
}
int max(int x,int y)
{
int z;
if(x>y) z=x;
else z=y;
return z;
}
2.用递归法计算n!要求封装函数实现阶乘,main函数中动态输入n的值,调用函数实现(注意要考虑输入负数的情况)。
#include<stdio.h>
long fact(int n)
{
long f;
if(n==0||n==1) f=1;
else f=fact(n-1)*n;
return f;
}
int main()
{
int n;
long m;
printf("输入n的值:");
scanf("%d",&n);
if(n<0)
{
printf("输入错误\n请重新输入:");
scanf("%d",&n);
}
m=fact(n);
printf("%d!=%d",n,m);
return 0;
}
3.编一递归函数求Xn,要求:main函数中动态输入x和n的值实现。
#include<stdio.h>
int power(int m,int n)
{
long p;
if(n==0) p=1;
else p=m*power(m,n-1);
return p;
}
int main()
{
int X,n,m;
printf("输入X和n的值:");
scanf("%d %d",&X,&n);
if(n<0)
{
printf("输入错误\n请重新输入n的值:");
scanf("%d",&n);
}
m=power(X,n);
printf("%d的%d次方为:%d",X,n,m);
return 0;
}
4.编制一递归函数,将一个十进制正整数(如:15613)转换成八进制、十六进制、二进制数形式输出(要求动态输入需要转成进制数,比如八进制则输入8)。
#include<stdio.h>
void convert(int x,int y)
{
int z;
z=x%y;
if(x>=y)
{
convert(x/y,y);
}
printf("%d",z);
}
int main()
{
int x,y;
printf("输入一个十进制正整数(输入q可以退出):");
while(scanf("%d",&x)==1)
{
printf("输入转换的进制数:");
scanf("%d",&y);
printf("该数转换为%d进制为:",y);
convert(x,y);
printf("\n\n输入一个十进制正整数(输入q可以退出):");
}
return 0;
}
5.即从键盘输入N个整数,将其按升序排列,要求使用函数(冒泡排序和选择排序)。
#include<stdio.h>
#define N 10
void sort1(int array[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(array[j]>array[j+1])
{
t=array[j];
array[j]=array[j+1];
array[j+1]=t;
}
}
}
}
void sort2(int array[],int n)
{
int i,j,t,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(array[j]<array[k])
{
k=j;
}
}
if(k!=i)
{
t=array[k];
array[k]=array[i];
array[i]=t;
}
}
}
int main()
{
int a[N],i;
printf("输入%d个整数:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
sort1(a,N);
printf("冒泡排升序之后:\n");
for(i=0;i<N;i++) printf("%d ",a[i]);
sort2(a,N);
printf("\nSS选择排升序之后:\n");
for(i=0;i<N;i++) printf("%d ",a[i]);
return 0;
}