关于VC++的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 18:15:27
我有一个程序,其中要用户输入四位不相同的个位数,是以数组形式存放的,因为是不能相同的,从0到9这几个数,有什么办法使用户不可能输入相同的数,比如用户输入9后,第二个数又要输入9,但程序能阻止他输入9,只有输入其它非9的数才显示和让程序接受?帮帮忙。
我的要求是,用户要输入重复的数字是不可能的,在输入的界面也不显示。
怎么重载法?

int num[10];//num数组用来标记数字是否已被使用
int temp;

memset(num, 0, 10 * sizeof(int));//初始化为零

scanf("%d", &temp);//输入一个个位数
num[temp] = 1;//对应的位置标记为1

scanf("%d", &temp);//再次输入一个个位数
if(num[temp])//判断是否重复
printf("重复输入");
-----------------------------------
是在编辑框中吗? 如果是的话重载一下wm_char 实现原理一样的

我写的一个完整的源程序,其实还有问题,不过足以应付一般的错误输入了,我所说的问题是……在第一次输入时,这样写:1a,此时1会被读入,而a不被读入,但仍会有错误提示。不过如果你能保证不输入除数字字符以外的其他任何字符的话,那么就没任何问题了!

#include<iostream.h>

bool read(char &,char *);

main()
{
int num[4]={0},b=1;
char buf[4]={'#','#','#','#'},ch;

for(int i=0; i<4; i++)
{
cout<<"输入第"<<i+1<<"个数: ";
b=read(ch,buf);
while(!b)
{
cin.ignore( 1024, '\n' );
cout<<"错误,重新输入: ";
b=read(ch,buf);
}