1> 使用递归实现 求 n 的 k 次方
#include <stdio.h>
#include <string.h>
int nk(int n, int k)
{
if (k == 1)
{
return n;
}
else
{
k--;
return n * nk(n, k);
}
}
int main(int argc, const char *argv[])
{
int n = 0, k = 0;
printf("请输入你要求的数:");
scanf("%d", &n);
printf("请输入你要求几次:");
scanf("%d", &k);
int res = nk(n, k);
printf("%d的%d次的值为%d\n", n, k, res);
return 0;
}
2> 使用递归实现 strlen 的功能
#include <stdio.h>
#include <string.h>
int my_strlen(char arr[] ,int n)
{
if (arr[n] == '\0')
{
return n;
}
else
{
n += 1;
return my_strlen(arr,n);
}
}
int main(int argc, const char *argv[])
{
char arr[10] = {"0"};
printf("请输入数组:");
gets(arr);
int res = my_strlen(arr,0);
printf("数组的大小是%d\n", res);
return 0;
}
3> 使用递归实现汉诺塔问题
#include <stdio.h>
#include <string.h>
int hnt(int n)
{
if (n == 1)
{
return 1;
}
else
{
n--;
return 2 * hnt(n);
}
}
int main(int argc, const char *argv[])
{
int n = 0;
printf("请输入你要求汉诺塔的个数:");
scanf("%d", &n);
int res = hnt(n+1)-1;
printf("%d个汉诺塔需要执行%d次\n", n,res);
return 0;
}
4> 定义一个函数将一个字符串从大到小排序
#include<stdio.h>
#include<string.h>
void Sort_str( char arr[])
{
char temp = ' ';
int len = strlen(arr);
for (int i = 1; i<len; i++)
{
for (int j = 0; j < len-i; j++)
{
if (arr[j] >arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main(int argc, char const *argv[])
{
char arr[10] = {""};
printf("请输入一个字符串");
gets(arr);
Sort_str(arr);
printf("排序后的字符串是:\n");
puts(arr);
return 0;
}
5> 实现一个函数,用于检查一个字符串是否是回文字符串(正序和反序都相同)
#include <stdio.h>
#include <string.h>
void hws(char arr[])
{
char brr[10] = {"0"};
int len = strlen(arr),j = 0;
for (int i = len - 1; i >= 0; i--)
{
brr[j] = arr[i];
j++;
}
if (strcmp(arr, brr) == 0)
{
printf("是回文字符串\n");
}
else
{
printf("不是回文字符串\n");
}
}
int main(int argc, char const *argv[])
{
char arr[10] = {"0"};
printf("请输入一串字符:");
gets(arr);
hws(arr);
return 0;
}
6> 使用指针完成判断自己的主机存储多字节整数时,是大端存储还是小端存储
#include<stdio.h>
int main(int argc, char const *argv[])
{
int x = 0x12345678;
char *p = ( char*)&x;
if ( *p ==78)
{
printf("是小端\n");
}
else
{
printf("是大端\n");
}
return 0;
}
#include <stdio.h>
#include <string.h>
void hws(char arr[])
{
int len = strlen(arr),count = 0,n = 0;
for (int i = 0; i < len ; i++)
{
if ( arr[i] >='a' && arr[i]<='z' || arr[i] >='A' && arr[i]<='Z' )
{
count = 0;
}
else
{
count++;
}
if (count == 1)
{
n++;
}
}
printf("一共有%d个单词\n",n+1);
}
int main(int argc, char const *argv[])
{
char arr[20] = {"0"};
printf("请输入一串字符:");
gets(arr);
hws(arr);
return 0;
}