C++中如何判断是不是整数?

int main(int argc, char* argv[])
{
if(argc = 2 || ? ) //判断参数是2,并且是1-999时程序才开始,否则提示输入用法。
{程序开始... }
else
{ 提示用法... }
}
谢谢前辈们。
//判断参数是2,并且 参数内容 是1-999时程序才开始,否则提示输入用法。
Usage: <filename> number1
Example: <filename> 345 必这要输入程序才开始,否则提示输入用法。谢谢前辈们
有几位回答得很好,但还是都不行。

第1个回答  2009-03-07
if(argc = 2 || ? )
改为:
if((argc = (int)argc) //判断argc是整数
&&(argc>=1)&&(argc<=999)//判断argc是1-999时
)本回答被提问者采纳
第2个回答  2009-03-07
// 重新写了一遍程序,将判断整数部分写成一个函数

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int isInt(char* ar)
{
int i = atoi(ar); // 将参数转化为整数
if (i > 0 && i < 1000) // 是否是1-999之间
{
char temp[4] ;
if (strlen(itoa(i, temp, 10)) == strlen(ar)) // 排除参数中混有非数字字符或小数点的情况
return 1 ;
}
return 0 ;
}

int main(int argc, char* argv[])
{
if(argc == 2 && isInt(argv[1])) // 之前看到楼主举了两个参数的例子,只要稍作修改即可。 应注意到argc包含了程序文件名。
{
printf("程序开始\n") ;
return 1 ;
}
else
{
printf("参数有误 !") ;
return 0 ;
}
}

===========
应考虑到参数的可能情况:
参数数量;
参数是否在1-999之间;
参数中是否含有非数字字符,如atoi("12a")或atoi("12.0")得到的均为整数12,将整数12转回字串后再比较长度可排除这种情况.
第3个回答  2009-03-07
int main(int argc, char* argv[])
/*既然是判断你传进来的参数是否是整数,你传参的时候就不能把argc定义成int,应该是float型,然后在进入if语句时进行判断.但是我不晓得你的第二个参数char数组是什么意思.可以的话看看我的回答嘛*/
int main(float argc, char* argv[])
{
if(argc==(int)argc||((argc>1)&&(argc<999)))
{
printf("%d是整数",argc);
}
else
{
printf("你的输入有误请重新输入.");
}
}
第4个回答  2009-03-09
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
if (2 == argc && atoi(argv[1]) >= 1 && atoi(argv[1]) <= 999 )
{
printf("ok.\n");
}
else
{
printf("use xxx arg\narg must be an integer between 1 and 999\n");
}

return 0;
}

argc 是参数的个数;
argv[] 是参数列数组,argv[0] 是当前程序的完整路径,argv[1] 是第一个参数;

仔细看了看,竟然只有我的回答是正确的。
哈哈。

uynah 的回答看似正确,但是浮点数是不能那样直接比较大小的。

其余都是胡扯。

我的答案已经说的够明白了。你自己拷贝下来,调试运行一下就知道了嘛。

不要老等着,不动手……

你自己看看嘛,我都运行过的,真是……
第5个回答  2009-03-09
#include <stdio.h>
#include <stdlib.h>

/* 仔细看我这里的例子,加入了错误判断和使用提示,非常标准的C程序开头参数判断和处理,如果你对C学习具有一定深度,肯定会选用我这个 */

int main(int argc, char *argv[])
{
int narg;
if (argc != 2) {
fprintf(stderr, "usage: %s <1 - 999>\n", argv[0]);
exit(1);
} else {
if ((narg = atoi(argv[1])) < 1 || narg > 999) {
fprintf(stderr, "usage: %s <1 - 999>\n", argv[0]);
exit(1);
}
}
/* 从这里写你正式的其他代码 */
/* 例如仅仅提示一个 test OK */
printf("test OK\n");
}
相似回答