c语言 如何做到只能输入数字,输入其他的,比如字母。就会提示重新输入。

输入1234,结果它出来4321.。。谁能帮改下。我有标出来大概哪里错了。#include<stdio.h>#include<string.h>intinput;intm... 输入1234,结果它出来4321.。。 谁能帮改下。我有标出来大概哪里错了。

#include <stdio.h>
#include <string.h>
int input;

int main()
{int test1();
test1();
printf("您输入的是%d\n",input);
}

int test1() {
char s[20];
int num = 0,n,len,i;
while(1) {

printf("请输入一个整数 : ");
gets(s);
len = strlen(s);
for(n = 0; s[n] == '0'; ++n);

for(i = len - 1; i >= n; --i) { //应该是这里有问题

if((s[i] < '0') || (s[i] > '9')) break; //

num = 10 * num + s[i] - '0'; //
}
if(i > n) printf("输入错误,重新输入。\n");
else break;
}

for(n = 0; s[n] == '0'; ++n);

input = num ;

return 0;
}
展开
 我来答
北丐0501
2013-10-03 · TA获得超过118个赞
知道答主
回答量:29
采纳率:0%
帮助的人:34.5万
展开全部

将你的test1函数更改如下:

int test1()

{

    char s[20];

    int num = 0,n,len,i;

    while(1) {

        printf("请输入一个整数 : ");

        gets(s);

        len = strlen(s);

        //for(n = 0; s[n] == '0'; ++n);

        

        num = 0; //每次输入前,要确保num=0

        

        for(i = len-1; i >= 0; --i)

        {                                       

            if((s[i] < '0') || (s[i] > '9'))

            {

                printf("输入错误,重新输入。\n");

                break;                              //

            }

            num = 10 * num + s[i] - '0';                                    //

        }

        if(i < 0)

            break;

    }

    //for(n = 0; s[n] == '0'; ++n);

    input = num ;

    return 0;

}

chujiangke001
2013-10-02 · TA获得超过1605个赞
知道小有建树答主
回答量:1352
采纳率:0%
帮助的人:714万
展开全部

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include<cctype> //here



int main()

{


  while(true)

  {


char s[20];

    int num = 0,n,len,i;

    i=0;

printf("请输入一个整数 : ");

    gets(s);

    len = strlen(s);

    for(i=0;i<len;i++)

    {

       if (!isdigit(s[i]))

       break;


    }

    if(i==len)

    {

        printf("您输入的是%s\n",s);

        break;

    }


  }


}


追问
这个是可以,但是我希望的是,只把我指出来的那几句改一下,其他不要变。。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuki_heu
2013-10-03 · TA获得超过347个赞
知道答主
回答量:149
采纳率:0%
帮助的人:72.1万
展开全部
for(i = len - 1; i >= n; --i) 改成for(i = 0 ; i < n; i ++)

你是不是想说这个意思啊
追问
是这个意思 不过像你这样改了还是不对。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljf10000
2013-10-02 · TA获得超过199个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:113万
展开全部
用 atoi函数 判断字符串是否为“纯数字”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式