练习1:使用递归函数实现求n的k次方
1 //使用递归实现求n的k次方
2 #include<stdio.h>
3 #include<string.h>
4 int qiu_ci_fang(int i,int j) //求次方函数
5 {
6 if(j==0)
7 {
8 return 1;
9 }
10 else
11 {
12 return i*qiu_ci_fang(i,j-1);
13 }
14 }
15 int main(int argc, const char *argv[])
16 {
17 int n=0,k=0,result=0;
18 printf("请输入要求的这个数:");
19 scanf("%d",&n);
20 printf("请输入要求的这个数的次方:");
21 scanf("%d",&k);
22 result=qiu_ci_fang(n,k); //调用求次方函数
23 printf("%d的%d次方的结果为%d\n",n,k,result);
24 return 0;
25 }
练习2、使用递归实现strlen的功能
//使用递归函数实现strlen功能
#include<stdio.h>
#include<string.h>
#define M 100 //定义数组容量M
int jisuan_strlen(char str[]) //使用递归实现strlen功能
{
int i=0,sum=0;
if(str[i]=='\0')
{
return 0;
}
else
{
return 1+jisuan_strlen(str+1);
}
}
/********************主程序*************************/
int main(int argc, const char *argv[])
{
char str[M]=""; //定义一个字符数组
printf("请输入字符串:");
scanf("%s",str);
int len=jisuan_strlen(str); //调用递归strlen功能函数
printf("该字符串的长度为%d\n",len);
return 0;
}
练习3.使用递归函数实现汉诺塔问题
1 #include<stdio.h>
2 #include<string.h>
3 int han_nuo_ta(int i) //递归汉诺塔函数
4 {
5 if(i==1)
6 {
7 return 1;
8 }
9 else
10 {
11
12 return 2*han_nuo_ta(i-1)+1;
13 }
14 }
15 /*******************主程序*************************/
16 int main(int argc, const char *argv[])
17 {
18 int n=0; //n输入个数
19 printf("请输入个数:");
20 scanf("%d",&n);
21 int num=han_nuo_ta(n); //调用函数
22 printf("需要交换的次数为%d",num);
23 return 0;
24 }
练习4、定义一个函数将一个字符串从大到小排序
练习5、实现一个函数,用于检查一个字符串是否是回文数(正序和反序都相同)
1 #include<stdio.h>
2 #include<string.h>
3 #define M 100000
4 int panduan_huiwenshu(char str[],int len)//实现判断回文数功能函数
5 {
6 for(int i=0;i<len/2;i++)
7 {
8 if(str[i]!=str[len-1-i])
9 {
10 printf("该字符串不是回文数\n");
11 return 0;
12 }
13 }
14 printf("该字符串是回文数\n");
15
16 }
17 int main(int argc, const char *argv[])
18 {
19 char str[M]={""}; //定义一个字符串
20 printf("请输入字符串:");
21 gets(str);
22 int len=strlen(str);
23 panduan_huiwenshu(str,len); // 调用判断回文数函数
24
25 return 0;
26 }
练习6、使用指针完成判断自己的主机存储多字节正数时,是大端存储还是小端存储。
练习7、有一段文本,写一段程序统计其中的单词数
例如:Do one thing at a time,and do well.
注意单词的间隔不一定是一个空格