| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1196 人关注过本帖
标题:原输入为字符型,输入数字时怎么判别?跳出循环
只看楼主 加入收藏
_peak
Rank: 5Rank: 5
来 自:90后
等 级:禁止访问
帖 子:83
专家分:347
注 册:2012-12-12
结帖率:100%
收藏
 问题点数:0 回复次数:5 
原输入为字符型,输入数字时怎么判别?跳出循环
程序代码:
#include<stdio.h>
main()
{
    int a[26][26][26];
    int x,y,z,i;
    char c[3];
    int m[100];
    for(x=0;x<26;x++){
        for(y=0;y<26;y++){
            for(z=0;z<26;z++){
                a[x][y][z]=0;
            }
        }
    }
    x=y=z=0;
    a[25][18][5]=1;
    goto kaishi;
    if(0){
    cuowu:
        printf("\n输入错误,请重新输入:\n");
    }
    if(0){
    kaishi:
        printf("请输入查找人姓名的第一个字母:");
    }
    x=y=z=0;
    for(i=0;i<100;i++){
        c[i]=getchar();
        if(c[i]=='\n')
            break;
        m[i]=(int)c[i];
        if(m[i]>64&&m[i]<91){
            m[i]=m[i]-63;
        }
        if(m[i]>96&&m[i]<123){
            m[i]=m[i]-97;
        }
    }
    if(i<=1){
        goto cuowu;
    }
    x=m[0],y=m[1],z=m[2];
    switch(a[x][y][z])
    {
    case 1:
            printf("\nXXX:电话:11111111111111111  住址:XXXXXXXXXXXXX\n");
            break;
    case 0:
            printf("\n无此人数据!\n");
            break;
    }
    m[0]=0,m[1]=0,m[2]=0;
    goto kaishi;
}

由于c数组为字符型,输入数字时怎样判别?并且跳出循环?
搜索更多相关主题的帖子: color 
2012-12-12 15:34
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
我建议你全换成字符输入,这样好处理

小小战士,战士中的战斗机!
2012-12-12 16:17
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
声明的是 char c[3];
c[i]=getchar();
这明显会越界吧。
2012-12-12 16:32
_peak
Rank: 5Rank: 5
来 自:90后
等 级:禁止访问
帖 子:83
专家分:347
注 册:2012-12-12
收藏
得分:0 
嗯,谢谢,我修改了下c数组的长度,结果好了,并且还修改了if else 语句
程序代码:
#include<stdio.h>
main()
{
    int a[26][26][26];
    int x,y,z,i;
    char c[100];
    int m[100];
    for(x=0;x<26;x++){
        for(y=0;y<26;y++){
            for(z=0;z<26;z++){
                a[x][y][z]=0;
            }
        }
    }
    x=y=z=0;
    a[25][18][5]=1;
    goto kaishi;
    if(0){
    cuowu:
        printf("\n输入错误,请重新输入:\n");
    }
    if(0){
    kaishi:
        printf("请输入查找人姓名的第一个字母:");
    }
    x=y=z=0;
    for(i=0;i<100;i++){
        c[i]=getchar();
        if(c[i]=='\n')
            break;
        m[i]=(int)c[i];
        if(m[i]>64&&m[i]<91){
            m[i]=m[i]-63;
        }
        else if(m[i]>96&&m[i]<123){
            m[i]=m[i]-97;
        }
        else goto cuowu;
    }
    if(i<=1){
        goto cuowu;
    }
    x=m[0],y=m[1],z=m[2];
    switch(a[x][y][z])
    {
    case 1:
            printf("\nXXX:电话:11111111111111111  住址:XXXXXXXXXXXXX\n");
            break;
    case 0:
            printf("\n无此人数据!\n");
            break;
    }
    m[0]=0,m[1]=0,m[2]=0;
    goto kaishi;
}

团结,进步,务实,创新!
2012-12-12 17:05
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
楼主再改改吧,这么多goto,建议能不用goto,就不用goto

另外,用ch >= '0' && ch <= '9'就可以判断是数字


[fly]存在即是合理[/fly]
2012-12-12 17:21
_peak
Rank: 5Rank: 5
来 自:90后
等 级:禁止访问
帖 子:83
专家分:347
注 册:2012-12-12
收藏
得分:0 
goto语句确实好用,简单的例子用goto会更方便,关于数字问题,char定义就好了,最后排出去字母就是数字了

团结,进步,务实,创新!
2012-12-12 17:40
快速回复:原输入为字符型,输入数字时怎么判别?跳出循环
数据加载中...
 
   



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

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