| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3986 人关注过本帖
标题:求教一个C程序的编写思路
只看楼主 加入收藏
菜菜小
Rank: 1
等 级:禁止发言
帖 子:23
专家分:0
注 册:2008-10-7
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-10-07 14:39
mygod22
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-10-7
收藏
得分:0 
[bo][un]iFreeBSD[/un] 在 2008-10-6 19:50 的发言:[/bo]

KILLC不是把思路说了嘛。用二维数组把键盘上的字符排列装进去,然手通过行,列输出即可。



思路就是这样的,编数组麻烦了点,不过比一个一个编效率多了
2008-10-07 14:56
我为球狂
Rank: 1
等 级:新手上路
帖 子:17
专家分:1
注 册:2008-10-5
收藏
得分:0 
我刚编了一个小程序,试了下,可以按楼主的要求输出,我是个新手,如有问题请各位高手指点!!!
#include<stdio.h>
void main()
{    
    char b,c,d;
    printf("请输入字母:\n");
    scanf("%c",&b);
    c=b+1;
    d=c+1;
    printf("%c%c%c",b,c,d);
}
2008-10-07 19:50
々撒旦的溺爱
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-10-6
收藏
得分:0 

^_^  学习学习
2008-10-07 21:13
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*******************************************************************************

    用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();
}
2008-10-07 21:36
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
to广陵:
1 有一个库函数叫做tolower,可以实现你的a的功能,即使是自己写,也请给它起一个有意义的名字。其实我觉得应该先判断是不是字母,再处理,这样效率稍微高些……
2 如果你将其存储在一个一维数组里面的话,就可以直接strchr了,见下:

程序代码:
#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;
}

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-10-07 23:46
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
谢谢SW,受教了。今天学了两个新知识,一个是库函数tolower,一个是函数strchr。每天都会有新的收获……
2008-10-08 00:04
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char *ch="qwertyuiopasdfghjklzxcvbnm";
int num[26]={0};
char temp;
int i;
num[0]=10;//这些是用于定位字符串指针的。
num[1]=23;
num[2]=21;
num[3]=12;
scanf("%c",&temp);
i=temp-'a';//这个是示范。如果是大写的,另外处理。
printf("%c%c%c",*(ch+num[i]),*(ch+num[i]+1),*(ch+num[i]+2));


  
  system("PAUSE");    
  return 0;
}
超快算法,不用循环的。直接定位。算出答案。和ASII码一样的。
也没人给我顶了,我的算法,可以说是最好的了。也最快的。

[[it] 本帖最后由 missiyou 于 2008-10-8 19:55 编辑 [/it]]
2008-10-08 19:38
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
没人顶啊,晕,我的算法啊,
这个算法我也没完善。只是写了一点
只要你输入 a ,就会定位ch数组里的。a.这样只要字符串指针在加1就可以了。
过程是这样的。a-a=0;
num[0]=这个写进a在字符串的位置10,这样就可以了,输入什么都可以得到答案,不是吗。

[[it] 本帖最后由 missiyou 于 2008-10-8 22:40 编辑 [/it]]
2008-10-08 22:30
知道不知道
Rank: 1
等 级:新手上路
威 望:2
帖 子:183
专家分:0
注 册:2008-10-4
收藏
得分:0 
别伤心,我给你顶
2008-10-08 22:33
快速回复:求教一个C程序的编写思路
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045061 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved