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; }