| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5148 人关注过本帖
标题:怎样验证输入的一组字符串,前两个是字母,后四位是数字
只看楼主 加入收藏
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
scanf("%d",&num[i]);

scanf("%c",&num[i]);

if(a!=2 || b!=4 )

if(a!=2 || b!=4 )

程序代码:
#include <stdio.h>
#include <ctype.h>

int main()
{
    char num[6];
    int i,a=0,b=0;

    printf("Please input your number:\n");

    for (i=0; i<6; i++)
        scanf("%c", &num[i]);

    for (i=0; i<2; i++)
    {
        if(isalpha(num[i]))
            a++;
    }

    for (i=2; i<6; i++)
    {
        if(isdigit(num[i]))
            b++;
    }

    if (a!=2 || b!=4 )
        printf("Wrong!");
    else
        printf("Right!");

    return 0;
}


[此贴子已经被作者于2016-6-19 17:06编辑过]

收到的鲜花
  • 惧惧2016-06-19 17:19 送鲜花  3朵   附言:谢谢谢谢谢~~~超级感谢~
2016-06-19 17:04
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
#include <stdio.h>
#include <ctype.h>

int main()
{
    char num[6];
    int i,a=0,b=0;

    printf("Please input your number:\n");

    for (i=0; i<6; i++)
        scanf("%c", &num[i]);

    for (i=0; i<2; i++)
    {
        if(isalpha(num[i]))
            a++;
    }

    if(a==2)//如果前两个不是字母还判断后4位是不是数字做什么。
    {
        for (i=2; i<6; i++)
        {
        if(isdigit(num[i]))
            b++;
       }
    }

    if (b<4)//只要b小于4就说明输入的字符串是错的。
        printf("Wrong!");
    else
        printf("Right!");

    return 0;
}
2016-06-19 17:26
time1609
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:59
专家分:118
注 册:2016-5-10
收藏
得分:5 
无需任何函数,会比较其他的就简单了
int main()
{
    char ch[6];
    ch[0] = 'A';
//是否为字母
    if((ch[0] > 'a'-1 && ch[0] < 'z'+1)||(ch[0] > 'A'-1 && ch[0]<'Z'+1))
    {
        puts("是字母");
    }
    //是否为数字
    if(ch[0] > '0'-1 && ch[0] < '9'+1)
    {
        puts("是数字");
    }
   
    getchar();
   
}
2016-06-19 20:58
惧惧
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2016-6-19
收藏
得分:0 
回复 12楼 linlulu001
谢谢~~
2016-06-19 23:05
惧惧
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2016-6-19
收藏
得分:0 
回复 13楼 time1609
但是不太懂 'A'-1 那些  是什么意思
2016-06-19 23:06
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
有一本书上是这样说明:if(ch>='A'&&ch<='Z')的移植性不如if(isupper(ch))。
自从知道后,就开始改变习惯,更多的用后者来处理这些程序。

[此贴子已经被作者于2016-6-19 23:45编辑过]

2016-06-19 23:44
time1609
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:59
专家分:118
注 册:2016-5-10
收藏
得分:0 
以下是引用惧惧在2016-6-19 23:06:41的发言:

但是不太懂 'A'-1 那些  是什么意思https://bbs.bccn.net/post.php?action=reply&fid=5&tid=466105&repquote=2574147&extra=&page=2
数字在ASCII码表的位置 48~57
小写字母在ASCII码表的位置 97~122
大写字母在ASCII码表的位置 65~90
    char ch[6];
    ch[0] = 'A';
//是否为字母
    if((ch[0] > 96 && ch[0] < 123)||(ch[0] > 64 && ch[0]<91))
    {
        puts("是字母");
    }
    //是否为数字
    if(ch[0] > 47 && ch[0] < 58) //如果char[0] 对应的ASCII码范围在 47~58之间的话,那么这个字符是数字。
    {
        puts("是数字");
    }
就是利用字符在编码表中的连续性来判断输入的字符。

另外要说移植,这几行代码除了 PUTS()这个函数需要头文件支持, 其它的代码丢到单片机里面一样能跑,甚至任何支持C语言的设备里面都能跑,除非不支持ASCCII码表。



2016-06-20 13:57
gz1347351162
Rank: 2
等 级:论坛游民
帖 子:19
专家分:44
注 册:2016-5-30
收藏
得分:5 
for(i=0;i<6;i++)
    {
        if(isalpha(num[i]))
          a++;
        if(isdigit(num[i]))
          b++;
    }
   
    if(a!=2 || b!=4 )//这里a==2 与b==4并不能保证前2位就是字母后4位是数字  你这种写法只要字符串中有2个是字母其余是数字都可以输出Right!
    printf("Wrong!");
    else
    printf("Right!");
2016-06-20 14:19
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
回复 17楼 time1609
在使用ASCII字符集的机器上确实能够运行,但在使用EBCDIC字符集的机器上就针失几。
而isupper无论在哪个字符集,它都能顺利运行。
2016-06-20 15:23
time1609
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:59
专家分:118
注 册:2016-5-10
收藏
得分:0 
回复 19楼 linlulu001
EBCDIC这个目前还没用过,都忘了它的存在了....
2016-06-23 23:50
快速回复:怎样验证输入的一组字符串,前两个是字母,后四位是数字
数据加载中...
 
   



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

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