1、使用递归实现 求 n的k次方
#include "stdio.h"
int square(int n,int k)
{
if(k==0)//任何数的零次方都为0
{
return 1;
}else
{
return square(n,(k-1))*n; //n^k = n * n^(k-1)
}
}
int main(int argc, char const *argv[])
{
int n=0,k=0;
printf("输入底数:");
scanf("%d",&n);
printf("输入指数:");
scanf("%d",&k);
int result=square(n,k);
printf("结果为:%d\n",result);
return 0;
}
2、使用递归实现 stren 的功能
#include "stdio.h"
int str_len(char *arr)
{
if(*arr=='\0') //如果字符串为空,则长度为0
{
return 0;
}
return 1+str_len(1+arr); //递归
}
int main(int argc, char const *argv[])
{
char arr[100];
int len=0;
printf("请输入一个字符串:");
gets(arr);
putchar(10);
int result=str_len(arr);
printf("该字符串长度为: %d\n",result);
return 0;
}
3、使用递归实现汉诺塔问题(
#include "stdio.h"
int hn(int n)
{
if(n==1)
{
return 1;
}
return 2*hn(n-1)+1; //递归
}
int main(int argc, char const *argv[])
{
int n=0;
printf("输入汉诺塔盘子的个数:");
scanf("%d",&n);
int result=hn(n);
printf("需要移动%d次\n",result);
return 0;
}
4、定义一个函数将一个字符串从大到小排序
#include "stdio.h"
#include "string.h"
void sortstr(char *str)
{
int len=strlen(str);
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len-i-1; j++)
{
if(str[j]<str[j+1]) //交换字符
{
char temp;
temp=str[j];
str[j]=str[j+1];
str[j+1]=temp;
}
}
}
}
int main(int argc, char const *argv[])
{
char str[100];
printf("请输入一个字符串:");
scanf("%s",str);
printf("字符串排序后为: ");
sortstr(str);
printf("%s\n",str);
return 0;
}
5、实现一个函数,用于检查一个字符串是否是回文字符串(正序和反序都相同)
#include "stdio.h"
#include "string.h"
int huiwen(char *str)
{
int len=strlen(str);
for (int i = 0; i < len/2; i++) //判断字符串是否是回文
{
if(str[i]!=str[len-i-1])
{
return 0;
}
}
return 1;
}
int main(int argc, char const *argv[])
{
char str[100];
printf("请输入一个字符串:");
scanf("%s",str);
int result=huiwen(str);
if(result==1)
{
printf("是回文字符串!\n");
}else
{
printf("不是回文字符串!\n");
}
return 0;
}
6、使用指针完成判断自己的主机存储多字节整数时,是大端存储还是小端存储
#include "stdio.h"
void daduan()
{
int x=0x12345678;
char *n=(char*) x; //转换为 char* 类型的指针
if(*n==0x78)
{
printf("小端存储\n");
}else
{
printf("大端存储\n");
}
}
int main(int argc, char const *argv[])
{
daduan();
return 0;
}
7、有一段文本,写一段程序统计其中的单词数。例如:Do one thing at a time, and do well.注意:单词间的间隔不一定是一个空格。
#include <stdio.h>
int word(char *str) {
int word= 0;
int i = 0;
// 遍历字符串
while (*str != '\0') {
// 如果当前字符是空格
if (*str == ' ' || *str == '\n' ) {
i = 0;
}
// 如果当前字符不是空格
else if (!i) {
i = 1;
word++;
}
str++;
}
return word;
}
int main() {
char text[1000];
printf("请输入一段文本: ");
gets(text);
int words = word(text);
printf("文本中的单词数为: %d\n", words);
return 0;
}