可以让用户输入一个字符串,然后检查每个字符是否是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++;
}
}
}
/*判断是浮点数还是整数*/
#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;
}
int main()
{
int a;
do
{
printf("输入一个正整数:");
scanf("%d", &a);
}while(a <= 0);
}
/*判断是浮点数还是整数*/
#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;
}
#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;
}