面试编程题整理

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

 








猜你喜欢

转载自blog.csdn.net/csdnxmj/article/details/79260397