1.使用递归实现求n的k次方
#include <stdio.h>
#include <string.h>
int dg_1(int n,int k)
{
if(k==0)//谁的0次方都等于1所以这个是递归的出口
{
return 1;
}
else
{
return n*dg_1(n,k-1);//2^0=1;2^1=2*1 2^2=2*(2*1)以此得出
}
}
int main(int argc, const char *argv[])
{
int n=0,k=0;
printf("请输入>>>");
scanf("%d %d",&n,&k);
int res=dg_1(n,k);
printf("%d的%d次方是%d\n",n,k,res);
return 0;
}
使用递归函数实现strlen功能
#include <stdio.h>
#include <string.h>
#define MAX 5
int strlen_1(char *prr)
{
if(*prr=='\0')
{
return 0;
}
else
{
return 1+strlen_1(prr+1);
}
}
int main(int argc, const char *argv[])
{
char arr[MAX+1];
int len1;
for(int i=0;i<MAX;i++)
{
printf("请输入第%d个元素\n",i+1);
scanf("%c",&arr[i]);
getchar();
}
arr[MAX]='\0';
len1=strlen_1(arr);
printf("该字符串的长度为%d\n",len1);
return 0;
}
3.使用递归实现汉诺塔问题
1 3 7 15 31 63 ....... 3=1*2+1 7=2*3+1(都是前一项乘以2+1得到后一项)
#include <stdio.h>
#include <string.h>
int hnt(int n)
{
if(n==1)
{
return 1;//第一项就是递归的出口
}
else
{
return 2*hnt(n-1)+1;
}
}
int main(int argc, const char *argv[])
{
int n=0;
printf("请输入>>>");
scanf("%d",&n);
int res=hnt(n);
printf("需要操作%d次\n",res);
return 0;
}
4.定义一个函数将一个字符串从大到小排序
5.实现一个函数,用于检查一个字符串是否是回文字符串(正序和反序都相同)
思路:首字符和尾字符,然后递归地检查去掉这两个字符后的子字符串是否仍然是回文。
#include <stdio.h>
#include <string.h>
void zfc_5(char *prr,int n,int m)//n代表的是字符串的第一个字符,m表示的是字符串的最后一个字符
{
if(n>=m)//表示字符串为空或者只有一个字符,是回文数
{
printf("该字符串是回文数\n");
return;
}
if(prr[n]!=prr[m])//如果第一个字符和最后一个字符不相等,则不是回文
{
printf("该字符串不是回文字符串\n");
return;
}
return zfc_5(prr,n+1,m-1);//递归的检查去掉这两个字符后的字符串是否是回文字符串
}
int main(int argc, const char *argv[])
{
/*char prr[]="mannam";
int len=strlen(prr);
zfc_5(prr,0,len-1);*/
char prr[20]="";
printf("请输入字符串");
gets(prr);
int len=strlen(prr);
zfc_5(prr,0,len-1);
return 0;
}
6.使用指针完成判断自己的主机存储多字节整数时,是大端存储还是小端存储
#include <stdio.h>
#include <string.h>
void cunchu(void)
{
int num=0x12345678;
char *p=(char *)#
if(*p==0x12)
{
printf("大端存储\n");
}
else
{
printf("小端存储\n");
}
}
int main(int argc, const char *argv[])
{
cunchu();
return 0;
}
7.
#include <stdio.h>
#include <string.h>
int tongji(char arr[])
{
int len=strlen(arr);//计算字符串实际长度
int count=0;//用来统计单词个数
for(int i=0;i<len;i++)
{
if(arr[i]==' '&&arr[i+1]!=' ')
{
count++;
}
}
if(arr[len-1]!=' ')
{
count++;
}
return count;//将单词个数返回
}
int main(int argc, const char *argv[])
{
char arr[30];
printf("请输入>>>");
gets(arr);
printf("一共有%d个单词\n",tongji(arr));
return 0;
}