提示: 作者被禁止或删除 内容自动屏蔽
[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; }