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