| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 418 人关注过本帖, 1 人收藏
标题:怎么办,当输入的某个信息错误时,显示哪个错了,并重新输入。
只看楼主 加入收藏
快乐方块
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-6-5
收藏(1)
 问题点数:0 回复次数:4 
怎么办,当输入的某个信息错误时,显示哪个错了,并重新输入。
我的想法是,当输入的某个信息错误时,显示哪个错了,并重新输入。
一直没有想出来,请高手HELP.

/*定义销售员结构体*/
struct persons{
    char p_Num[5];
    char p_name[20];
    char sex[2];
}p[4];

/*输入4个销售员信息*/
int person()
{
    int i;
    printf("销售员编号必须为5位,姓名必须为汉字,性别必须是男或女。若输入有误请重新输入。\n\n");
    for(i=0;i<4;i++){   
        do{
            printf("第%d销售员的信息:编号,姓名,性别)\n",i+1);
            scanf("%s%s%s",p[i].p_Num,p[i].p_name,p[i].sex);
        }while(judge_pbh(p[i].p_Num)==0||judge_pxm(p[i].p_name)==0||judge_pxb(p[i].sex)==0)
    }
    printf("\n");
    return 1;
}

/*判断销售员编号是否为5位*/
int judge_pbh(char p_num)
{
    if(strlen(p_num)!=5){
        printf("销售员编号不为5位,请重新输入\n");
        return 0;
    }
    return 1;
}

/*判断销售员姓名是否为汉字*/
int judge_pxm(char p_name[20])
{
    int i;
    for(i=0;p_name[i]!=0;i++){
        if(p_name[i]<='阿'||p_name[i]>='做')
            printf("姓名必须为汉字,请重新输入\n");
            return 0;
    }
    return 1;
}

/*判断销售员性别是否为男女*/
int judge_pxb(char sex[2])
{
    if(sex[2]!='男'||sex[2]!='女'){
    //    printf("销售员性别是必须为男或女,请重新输入\n");
        return 0;
    }
    return 1;
}
搜索更多相关主题的帖子: 结构体 person 信息 销售员 
2011-06-21 22:14
快乐方块
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-6-5
收藏
得分:0 
能不能用break之类的,
2011-06-22 01:20
官人
Rank: 3Rank: 3
来 自:瓮安
等 级:论坛游侠
帖 子:88
专家分:152
注 册:2011-6-2
收藏
得分:0 
break 是终止循环的 能力有限不能帮忙

   ---------------天道刚健,你不自强谁来帮你---------------
2011-06-22 08:48
快乐方块
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-6-5
收藏
得分:0 
回复 3楼 官人
那可不可以这样用
i--;
continue;
2011-06-22 11:26
韭菜
Rank: 2
等 级:论坛游民
帖 子:51
专家分:94
注 册:2010-9-26
收藏
得分:0 
这是我在你基础上修改的  你看看   其中判断是否为中文处判断  采用首位为1的判断方法
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct persons{
    char p_Num[6];
    char p_name[20];
    char sex[3];
}p[4];

int pan_num(char p_num[])
{
    printf("%d\n",strlen(p_num));
    if(strlen(p_num)!=5){
        printf("销售员编号不为5位,请重新输入\n");
        return 0;
    }
    return 1;
}

int pan_name(char *name)
{
    int i;
    for(i=0;i<strlen(name);i++)
    {
        if(!(name[i]&0x80))        return 0;
    }
    return 1;
}

int pan_sex(char *sex)
{
    char ch1[3]="";
    char ch2[3]="";
    if((strcmp(ch1,sex)!=0)&&(strcmp(ch2,sex)>0))
            return 0;
    return 1;
}

int person()
{
    int i;
    printf("销售员编号必须为5位,姓名必须为汉字,性别必须是男或女。若输入有误请重新输入。\n\n");
    for(i=0;i<4;i++){    
        do{
            printf("第%d销售员的信息:编号,姓名,性别)\n",i+1);
            scanf("%s %s %s",p[i].p_Num,p[i].p_name,p[i].sex);
        }while(pan_num(p[i].p_Num)==0||pan_name(p[i].p_name)==0||pan_sex(p[i].sex)==0);
    }
    printf("\n");

    i=-1;
    while(++i<4)
    {
        printf("%s   %s   %s\n",p[i].p_Num,p[i].p_name,p[i].sex);
    }
    return 1;
}

int main()
{
person();
return 0;
}
2011-06-22 16:23
快速回复:怎么办,当输入的某个信息错误时,显示哪个错了,并重新输入。
数据加载中...
 
   



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

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