如何用c语言实现“判断用户输入一个值为正整数,如果不是提醒用户重新输入一个值”?

2024-12-20 06:38:42
推荐回答(5个)
回答1:

可以让用户输入一个字符串,然后检查每个字符是否是0~9中的任意一个,如果不是,则不是正整数。当然这里会允许000123这样的情况出现,即数字可以用0开头。如要处理,还需另外考虑,如果不考虑这个问题,可以写成如下的代码

#include 

main(){
  char input[BUFSIZ];
  printf("Input a positive integer\n");
  scanf("%s", input);
  bool flag = true;
  while (flag){
    int pos = 0;
    flag = false;
    while(input[pos]!='\0'){
      if ((input[pos]<'0')||(input[pos]>'9')){
        flag = true;
        printf("Not an integer. Please re-enter\n");
        scanf("%s", input);
        break;
      }
      pos++;
    }
  }
}

回答2:

/*判断是浮点数还是整数*/
#include 
int main()
{
    float m;
    while(1)
    {
        printf("请输入:\n");
        scanf("%f", &m);
        if(0 >= m || (m - (int)m) > 0)
        {
            printf("%f是非正整数,请重新输入...\n", m);
            continue;
        }
        printf("%d是正整数\n", (int)m);
    }
    return 0;
}

回答3:

int main()
{
    int a;
    do
    {
        printf("输入一个正整数:");
        scanf("%d", &a);
    }while(a <= 0);
}

回答4:

/*判断是浮点数还是整数*/
#include
int main()
{
float m;
while(1)
{
printf("请输入:\n");
scanf("%f", &m);
if(0 >= m || (m - (int)m) > 0)
{
printf("%f是非正整数,请重新输入...\n", m);
continue;
}
printf("%d是正整数\n", (int)m);
}
return 0;
}

回答5:

#include

int main()
{
float m;
while(1)
{
printf("请输入:\n");
scanf("%f", &m);
if(0 >= m || (m - (int)m) > 0)
{
printf("%f是非正整数,请重新输入...\n", m);
continue;
}
printf("%d是正整数\n", (int)m);
}
return 0;
}