1. 输入C写一个输入的整数,倒着输出整数的函数,要求用递归方法
//要求用递归的方法对一个整数进行倒叙
#include <stdio.h>
void Func(int n)
{
printf("%d",n%10);
n = n/10;
if(n <= 0)
{
return ;
}
else
Func(n);
}
int main()
{
int n;
printf("Please input a num:\n");
scanf("%d",&n);
Func(n);
printf("\n");
return 0;
}
2.编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来的是”abcdefgh”,如果n = 2,移位后应该是“ghabcdef”。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//右移
void Shift_Right(char s[],int n)
{
int len = strlen(s);
char temp[20] = {0};
int remain = len-n;
strcpy(temp,s+remain);
strcpy(temp+n,s);
*(temp+len) = '\0';
printf("The Right Loop = %s\n",temp);
}
//左移
void Loop_Left(char *s,int n)
{
char temp[20] = {0};
int len = strlen(s);
int remain = len-2;
strcpy(temp,s+n);
strcpy(temp+remain,s);
*(temp+len) = '\0';
printf("The Left Loop = %s\n",temp);
}
int main()
{
char *s = "abcdefgh";
int n = 0;
printf("Please input a n:\n");
scanf("%d",&n);
Shift_Right(s,n);
Loop_Left(s,n);
return 0;
}
3.请写一个简单的宏函数swap(x,y),实现输入数字参数的交换。
#include <stdio.h>
//方法一:加减法
#define Swap1(x,y) \
x = x+y; \
y = x-y; \
x = x-y;
//方法二:位运算
#define Swap2(x,y) \
x = x^y; \
y = x^y; \
x = x^y;
int main()
{
int a = 3,b = 5;
Swap1(a,b);
printf("a = %d b = %d\n",a,b);
Swap2(a,b);
printf("a = %d b = %d\n",a,b);
return 0;
}
4. 用递归算法判断数组a[N]是否为一个递增数组
#include <stdio.h>
#define TURE 100000
#define FALSE -100000
int Judge(int a[],int len)
{
if(len == 1) //判断到只剩下最后一个数时,说明之前判断递增都已经判断成功
{
return TURE;
}
else
{
if(a[len-1] > a[len-2]) //当后面一个数比前面一个数大时,继续判断下一个数是否比前面的数大
return Judge(a,len-1);
else
return FALSE;
}
}
int main()
{
int a[5] = {1,2,3,4,5};
int len = sizeof(a)/sizeof(a[0]);
int ret;
ret = Judge(a,len);
if(TURE == ret)
{
printf("数组为递归数组\n");
}
else
{
printf("数组不是递归数组\n");
}
return 0;
}