| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 304 人关注过本帖
标题:不知道哪里错了,数据类型
只看楼主 加入收藏
_peak
Rank: 5Rank: 5
来 自:90后
等 级:禁止访问
帖 子:83
专家分:347
注 册:2012-12-12
结帖率:100%
收藏
 问题点数:0 回复次数:1 
不知道哪里错了,数据类型
程序代码:
#include<stdio.h>
main()
{
    int a[26][26][26];//整个for循环就是定义三维数组的值,为0
    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;//定义搜索的值,zsf的值为1,用于下面的选择语句
    a[0][0][0]=2;
    goto kaishi;//连接到开始语句
    if(0){//如果不用goto语句的话,永远不可能执行本句
    cuowu://错误时执行本条语句
        printf("\n输入错误,请重新输入:\n");
    }
    if(0){
    kaishi://最开始时执行的语句
        printf("请输入查找人姓名的第一个字母:");
    }
    x=y=z=0;//忘了当初为什么加这条语句了
    for(i=0;i<100;i++){//定义输入的长度为100
        c[i]=getchar();
        if(c[i]=='\n')//如果遇到回车时会跳出循环
            break;
        m[i]=(int)c[i];//强制字符转换
        if(m[i]>=9&&m[i]<=0){//如果是数字,则无条件跳转到到显示错误语句上
            goto cuowu;
        }
        if(m[i]>64&&m[i]<91){//小写转化成26个字母对应的数字
            m[i]=m[i]-63;
        }
        else if(m[i]>96&&m[i]<123){//大写转化成26个字母对应的数字
            m[i]=m[i]-97;
        }
        else goto cuowu;//如果都不是,则显示错误
    }
    if(i<=2){//如果输入的长度小于3位,显示错误
        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 2:
        printf("2\n");
        break;
    case 0:
            printf("\n无此人数据!\n");
            break;
    }
    m[0]=0,m[1]=0,m[2]=0;
    goto kaishi;
}

原本输入数字是错误的,可是被保留到下一次循环中了,出现好多次信息的执行判断
2012-12-13 09:45
crystall
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:184
专家分:809
注 册:2012-12-1
收藏
得分:0 
回复 楼主 _peak
我看了你的代码之后,进行了修改输入的代码, 后面switch那一块留给你自己.
程序代码:
#include "stdafx.h"

#include<stdio.h>

void main()
{
    int i = 0;
    char c[100];
   
    //三维数组的初始值为0,简化
    int a[26][26][26] = {0};

    //定义搜索的值,zsf的值为1,用于下面的选择语句
    a[25][18][5] = 1;
    a[0][0][0] = 2;
   
    char ch;

GOTO_BEGIN:    

    while(true)
    {
        printf("请输入查找人姓名的第一个字母:");

        if(i == 100)
        {
            break;
        }

        //清空缓冲区
        fflush(stdin);

        ch = getchar();
       
        if(ch == '\n')
        {
            break;
        }

        //输入的为 0 - 9
        if( (ch >= '0') && (ch <= '9'))
        {
            printf("输入错误, 请重新输入!\r\n");
            continue;
        }

        //小写字母 a - z
        if( (ch >= 'a') && (ch <= 'z'))
        {
            ch = ch - 63;
        }
        //小写字母 A - Z
        else if( (ch >= 'A') && (ch <= 'Z'))
        {
            ch = ch - 97;
        }

        c[i] = ch;

        i++;
    }


    if(i < 3)
    {
        i = 0;
        goto GOTO_BEGIN;
    }

    return;
}

 
2012-12-13 10:30
快速回复:不知道哪里错了,数据类型
数据加载中...
 
   



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

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