| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 427 人关注过本帖
标题:输入判断的问题,希望高手给与帮助。
只看楼主 加入收藏
午餐肉
Rank: 2
等 级:论坛游民
帖 子:22
专家分:16
注 册:2009-7-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
输入判断的问题,希望高手给与帮助。
#include "stdio.h"
#include "conio.h"
long shulu1(long i)
{
printf("请输入第一个整数:");
scanf("%d",&i);
return(i);
}
long shulu2(long i)
{
printf("请输入第二个整数:");
scanf("%d",&i);
return(i);
}
void main()
{
long m,n,i,a,t,b;
printf("请输入两个证整数,求其最大公约数和最小公倍数,回车键结束输入。\n");
loo1:
m=shulu1(m);
if(m>0)
{
loo2:
n=shulu2(n);
if(n<0)
{
printf("错误!请重新输入。\n");
goto loo2;
}
}
else  
{
printf("错误!请重新输入。\n");
goto loo1;
}
a=m;
i=n;
while(i!=0)
{
t=a%i;
a=i;
i=t;
}
printf("最大公约数:%d\n",a);
printf("最小公倍数:%d\n",m*n/2);
b=getch();
}
 
 我现在能实现整数和负数的判断,如果输入的不是数字而是字符,现在这个输入判断就会变成死循环,我尝试过把输入的类型改称字符类型,但是有限制了输入的数字范围只能是0到9之间的数字。  
希望能有高手指点一下。需要怎么做才能做到,输入字符或者其他符号,能从新输入数值而不是出现死循环。
搜索更多相关主题的帖子: 输出 输入 
2009-08-15 15:00
jd205
Rank: 2
等 级:论坛游民
帖 子:139
专家分:69
注 册:2006-10-26
收藏
得分:20 
写程序最好别用GOTO语句~除非一定得用再用,不到万不得已最好别用。
 
提示你点信息:

输入可以用输入字符串的形式scanf("%s",a)  判断字符串中的每个字符是否在 字符‘0’ 和 字符‘9’之间。也可以通过判断ASIC码。最后把字符串转化成数字INT类型
 
我写了个C++的输入,刚想写C,有点生疏,不知道怎么下手了~~

#include <iostream>
 
using namespace std;
/******************************************************************************/
//函数判断输入的是否为数字
/******************************************************************************/
int TestInput(char str[])
{
    int flag=0;  
    for(int i=0;i<strlen(str);i++)
    {
        if(str[i]<'0'||str[i]>'9')
        flag=1    ;
    }
    return flag;
}
/******************************************************************************/
//主函数
/******************************************************************************/
int main(int argc, char *argv[])
{
    int input_1, intput_2;        /*输入的两个变量*/
     
    cout << "Please input two number:" << endl;
     
    /*判断输入的两个字符是否为数字*/
    for (int i = 1; i < 3; i++)
    {
        if(TestInput(argv[i])==1)
        {
            cout << "" << endl;
            return 0;
        }
    }
     
    /*将字符串STRING转化成数字INT类型*/
    intput_1  = atoi(argv[1]);
    intput_2  = atoi(argv[2]);
     
    /*最大公约数···代码自己写···*/
    ......
     
     
     
    return 0;
}
2009-08-15 16:40
jd205
Rank: 2
等 级:论坛游民
帖 子:139
专家分:69
注 册:2006-10-26
收藏
得分:0 

for(int i = 0; ((a[i]=getchar)!='\n'); i++)
{
    if(a[i]>'9'||a[i]<'0')
        printf("输入的变量中含有字符,请重新输入···");
        return 0;         
}

你可以考虑下这样输入···,好久没用不太确定
2009-08-15 16:48
午餐肉
Rank: 2
等 级:论坛游民
帖 子:22
专家分:16
注 册:2009-7-27
收藏
得分:0 
太感谢二楼的jd205,给了我很大的启示。。。。
对一个初学者来说,给一点一点启示,比给一个完整的代码要强很多。
只要知道大概方向就可以继续研究下去。
2009-08-15 17:07
快速回复:输入判断的问题,希望高手给与帮助。
数据加载中...
 
   



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

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