一些题目

面试

1.打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为"X",第二层为"Y",从第三层起每层依次打印数字0,1,2,3,...
例子:当N =5,打印出下面的图形:
X X X X X
X Y Y Y X
X Y 0 Y X
X Y Y Y X
X X X X X 

#include <stdio.h>
#include <stdlib.h>

void funcprintnn(int n, char (*pStr)[100])
{
	int i = 0;
	int j = 0;
	int k = 0;
	int len = n;

	if (n < 3)
		return;

	for (i = 0; i < n; i++)
	{
		pStr[0][i] = 'X';
		pStr[i][0] = 'X';
		pStr[n-1][i] = 'X';
		pStr[i][n-1] = 'X';
	}
	
	++j;
	--n;
	
	for (i = j; i < n; i++)
	{
		pStr[j][i] = 'Y';
		pStr[i][j] = 'Y';
		pStr[n-1][i] = 'Y';
		pStr[i][n-1] = 'Y';
	}
	
	while ((++j) < (--n))
	{
		for (i = j; i < n; i++)
		{
			pStr[j][i] = len-5-k+'0';
			pStr[i][j] = len-5-k+'0';
			pStr[n-1][i] = len-5-k+'0';
			pStr[i][n-1] = len-5-k+'0';
		}
		++k;
	}
}

int main()
{
	int i = 0;
	int j = 0;
	int n = 0;
	char a[100][100] = {0};

	scanf("%d", &n);
	funcprintnn(n, a);
	for (;i < n; i++)
	{
		for(;j<n;j++)
			printf("%c ",a[i][j]);
		j=0;
		printf("\n");
	}
}

2.不使用库函数实现一函数,在字符串1查找字符串2第一次出现位置,查找不到返回-1,否则返回该位置信息,例如从字符串"123456789"查找字符串"12",返回0

int strfind(const char *pszsrc, const char *pszsub)
{
	if (NULL==pszsrc || NULL==pszsub || strlen(pszsub)>strlen(pszsrc))
	{
		return -1;
	}
	
	int tmp = 0;
	int j = 0;
	for (int i = 0; pszsrc[i]!='\0'; i++)
	{
		j = 0;
		tmp = i;
		while (pszsrc[tmp++] == pszsub[j++])
		{
			if (pszsub[j] == '\0')
			{
				return i;
			}
		}
	}

	return -1;
}

int main()
{
	printf("%d\n", strfind("123456789", "789"));
<span style="white-space:pre">	</span>return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值