当前位置: 代码迷 >> C语言 >> 求一道编程题,急用
  详细解决方案

求一道编程题,急用

热度:116   发布时间:2007-01-02 16:15:34.0
6楼的答案有点问题 比如输入2eee会显示合法 这就不对了 谁能改一下 或再给个答案
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<string.h>
int main()
{
char str[10];
int i=0;
gets(str);
if(str[0]>='A'&&str[0]<='Z'||str[0]>='a'&&str[0]<='z'||str[0]=='_')
{
while(str[i]!='\0')
if(int(str[i])>=0&&int(str[i])<=255) i++;
}
if(i==strlen(str)) printf("valid!!\n");
else printf("invalid!!\n");
return 0;
}
----------------解决方案--------------------------------------------------------

非常感谢


----------------解决方案--------------------------------------------------------

我有个疑问,觉得十二楼的代码还 不够完美
那个只判断输入的第一个字符是否符合C语言标识符的规定。
而事实上C语言的标识符只能由字母,数字和下划线组成。
而上述代码只限定第一个字符符合规定而已,如果输入的字符串中有规定以外的字符而第一个字符符合规定,那么是输出是合法的。显然这就判断错误了.
而且 if(int(str[i])>=0&&int(str[i])<=255) i++;
在 Turbo c/c++ for windows 中运行说错误。
改为如下
if(strlen(str)>=0&&strlen(str)<=255) i++;
就通过。
具体怎样改,对于这方面我不够深入。希望各位能给点意见。


----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
  相关解决方案