1,使用递归实现求k的n次方
#include<stdio.h>
int num(int n,int k)
{
if (k==0)
{
return 1;//递归出口
}
else
{
return n*num(n,k-1);
}
//用递归运算次方的函数
}
int main()
{
int x=0,m=0,n=0;
printf("请输入数字与次方\n");
scanf("%d %d",&m,&n);//输入需要运算的值
x=num(m,n);
printf("%d\n",x);//输出结果
}
2,使用递归实现strlen的功能
#include<stdio.h>
int str_len(char arr[],int k)
{
if (arr[k]=='\0')
{
return 0;//递归出口
}
else
{
k++;
return 1+str_len(arr,k);//递归比较字符串的每一个字符,不为结束符计数加一
}
}
int main()
{
printf("输入一个字符串");
char arr[20]="";
scanf("%s",arr);
int x=str_len(arr,0);//输入一个初始值0,表示从arr[0]开始计算长度
printf("该字符串的实际长度为%d\n",x);
}
3,用递归实现汉诺塔问题
#include<stdio.h>
int hnt(int a)
{
if (a==1)//特殊情况
{
return 1;
}
else if(a==2)//递归出口
{
return 3;
}
else
{
return 1+2*hnt(a-1);
}
}
int main()
{
int a=0,b=0;
printf("请输入汉诺塔的层数");
scanf("%d", &a);
b=hnt(a);
printf("完成次汉诺塔共需要%d步\n",b);
}
4,用函数 将一个字符串从大到小排序
#include<stdio.h>
#include<string.h>
void paixu(char arr[10])
{
for (int i = 1; i < 10; i++)
{
for (int j = 0; j < 10-i; j++)
{
if (arr[j]<arr[j+1])
{
char temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
//冒泡排序
}
for (int i = 0; i < 10; i++)
{
printf("%c\t",arr[i]);
}
printf("\n");
}//排序函数
int main()
{
char arr[10]="";
printf("请输入字符串");
scanf("%s",arr);
paixu(arr);
return 0;
}
5,使用一个函数用于检查一个字符串是不是回文字符串
#include<string.h>
#include<stdio.h>
void huiwen(char arr[])
{
int k=1;
int n=strlen(arr);
for (int i = 0; i < n/2; i++)
{
if (arr[i]==arr[n-i-1])
{
k=1;
}
else
{
k=0;
printf("不是回文符串\n");
break;
}
}
if (k==1)
{
printf("是回文符串\n");
}
}
int main()
{
printf("请输入字符串");
char arr[10]="";
gets(arr);
huiwen(arr);
return 0;
}
6, 用指针完成判断在储存多字节整数是是大端储存还是小端
#include <stdio.h>
int main()
{
int n=0x12345678;
char * p=&n;
if(*p==0x78)
{
printf("大端存储\n");
}
else if(*p==0x12)
{
printf("小端存储\n");
}
printf("%#x\n",*p);
return 0;
}
7,有一段文本,用程序统计其中的单词数
#include<string.h>
#include<stdio.h>
void dan(char arr[100])
{
int k=strlen(arr),num=0;
for (int i = 0; i < k-1; i++)
{
if ((arr[i]>=65&&arr[i]<=90)||(arr[i]>=97&&arr[i]<=122))
//判断当前字符是不是字母
{
if ((arr[i+1]>=65&&arr[i+1]<=90)||(arr[i+1]>=97&&arr[i+1]<=122))
//判断下一个字符是不是字母
{
continue;//是,继续循环
}
else
{
num++;//不是,单词数加一
}
}
}
if ((arr[k-1]>=65&&arr[k-1]<=90)||(arr[k-1]>=97&&arr[k-1]<=122))
{
num++;
}
printf("这句话有%d个单词\n",num);
}
int main()
{
printf("请输入一句话");
char arr[100]="";
gets(arr);
dan(arr);
}