提示: 作者被禁止或删除 内容自动屏蔽
[bo][un]iFreeBSD[/un] 在 2008-10-6 19:50 的发言:[/bo]
KILLC不是把思路说了嘛。用二维数组把键盘上的字符排列装进去,然手通过行,列输出即可。
KILLC不是把思路说了嘛。用二维数组把键盘上的字符排列装进去,然手通过行,列输出即可。
思路就是这样的,编数组麻烦了点,不过比一个一个编效率多了
程序代码:/*******************************************************************************
用C语言编程 在键盘如入一个字母要求输出周围相邻连续3个字母 比如输入D就要输
出DFC 希望大大透露思路。
-------------------------------------------------------------------------
为什么输入d会输出dfc?为什么不会是dsx?基于此想法,所以就输入其所在行的前后字符,
如,输入d,就会显示sdf这样比较合理些。
--------------------------------------------------------------------------------
我的理解:把键盘上的字符存入二维数组中,然后通过查找的方式找到它,输出其一前
一后的字符,如果哪个方向的字符为无,就输出0.
*******************************************************************************/
#include<stdio.h>
#include<string.h>
void a(char *c)
{
if(*c>=65&&*c<=90) *c+=32;
}
int main(void)
{
char str[3][13]={{'0','q','w','e','r','t','y','u','i','o','p','0'},
{'0','a','s','d','f','g','h','j','k','l','0'},
{'0','z','x','c','v','b','n','m','0'}};
char c;
int i,j;
puts("input c:");
while((scanf("%c",&c))!=EOF)
{
a(&c);
for(i=0;i<3;i++)
for(j=0;j<13;j++)
if(c==str[i][j])
printf("%c %c %c\n",str[i][j-1],str[i][j],str[i][j+1]);
}
getch();
}
程序代码:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
char ch, *pch, *keys =
"QWERTYUIOP "
"ASDFGHJKL "
"ZXCVBNM "
" ";
while (scanf(" %c", &ch) == 1)
{
if (isalpha(ch))
{
pch = strchr(keys, toupper(ch));
printf("%c %c %c\n", *pch,
pch[pch[1] == ' ' ? -1 : 1],
pch[pch[11] == ' ' ? -11 : 11]
);
}
}
return 0;
}