c语言,怎么写一个函数去判断输入数字是否正确

如果用户输入的四个数字1)是不同的四个数字,2)都不是0,3)输入的一定是一个四位数,那么输入值是正确。main(){....print("input:”);//输入一个... 如果用户输入的四个数字1)是不同的四个数字,2)都不是0,3)输入的一定是一个四位数,那么输入值是正确。
main()
{
....
print("input: ”); //输入一个四位数
scanf("%d%d%d%d",&x,&y,&z,&w);
....
}
我写的函数是:
int valid(int n)
{
int x,y,z,w;
if(x==y || x==z || x==w)
{ printf("Invalide number.Please try again!\n");
return 0;}
else if(scanf("%d%d%d%d",x,y,z,w)!=N_DIGITS)
{ printf("Invalide number.Please try again!\n");
return 0;}
else if(x<=0 || y<=0 || z<=0 || w<=0)
{ printf("Invalide number.Please try again!\n");
return 0;}
else
return 1;
但是因为固定要用的函数是int valid(int n),也就是说一次只能读一个数字?
那我应该怎么写这个函数?
如果我输入的数字是 1234,那么 x就是1, y就是2,z 是3,w是4.
N_DIGITS=4

还是说我不应该用这个方法做?
展开
 我来答
百度网友4114162
推荐于2016-10-19 · TA获得超过152个赞
知道小有建树答主
回答量:164
采纳率:83%
帮助的人:60.5万
展开全部
  1. 应该输入一个四位数而不是输入四个一位数,这样才符合使用习惯。这样的话,你一次读完即:

    scanf("%d",&n);

  2. 判断这个数是否大于1000且小于10000(如果不是,则不是4位数,同时排除了负数)

  3. 取出各位数字,然后看是否有相等的。取千位数:x=n/1000;  取百位数:y=(n-x*1000)/100; 取十位数:z=(n-x*1000-y*100)/10 取个位数:w=n%10;

宿啥品8397
2015-03-01 · TA获得超过4526个赞
知道大有可为答主
回答量:3273
采纳率:60%
帮助的人:1712万
展开全部
哥 你把代码写上注释!你的每一个变量什么意思我都不清楚!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式