| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2439 人关注过本帖
标题:小白提问,一个判断输入是否为C语言合法标识符的题目,一旦我输入合法标识符 ...
只看楼主 加入收藏
grayhooo
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2018-10-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
小白提问,一个判断输入是否为C语言合法标识符的题目,一旦我输入合法标识符后程序就会提前结束,这是为什么
#include<stdio.h>
int main()
{
    char c[100];
    int h,i,m;
    scanf("%d",&m);
    getchar();
    for(i=0;i<m;i++)
    {
      h=0;
     gets(c);
     if((c[0]>='A'&&c[0]<='z')||(c[0]==32)||(c[0]>='a'&&c[0]<'z'))
     {
         for(i=1;i<m;i++)
         {
             if((c[i]>='A'&&c[i]<='z')||(c[i]==32)||(c[i]>='a'&&c[i]<'z')||(c[i]>='1'&&c[i]<='9'))
             h=1;
         }
     }
         if(h==1)
         {
            printf("yes\n");
         }
         else
         {
             printf("no\n");
         }
    }
    return 0;
}
输入数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据
搜索更多相关主题的帖子: 提问 输入 合法 标识符 || 
2018-10-15 19:50
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:20 
输入示例是?
期望得到什么结果?

126邮箱联系方式:no1xijin@126. com
2018-10-15 21:47
grayhooo
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2018-10-11
收藏
得分:0 
回复 2楼 no1xijin
3
12ajf
fi8x_a
ff  ai_2
输入实例
输出结果
no
yes
no
2018-10-15 22:08
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:0 
修正见代码中的注释
程序代码:
#include<stdio.h>
int main()
{
    char c[100];
    int h,i,m;
    int j; // 新加一个变量用于控制第二个循环,这个是用于解决你提前结束循环的问题
    scanf("%d",&m);
    getchar();
    for(i=0;i<m;i++)
    {
        h=0;
        gets(c);
    // if((c[0]>='A'&&c[0]<='z')||(c[0]==32)||(c[0]>='a'&&c[0]<'z')) // 第一个'z'应当大写;c[0]==32,应当改为c[0]=='_'数字;末尾<z应当改为<=1
        if((c[0]>='A'&&c[0]<='Z')||(c[0]=='_')||(c[0]>='a'&&c[0]<='z')) 
        {
            //for(i=1;i<m;i++)  // 将变量i换成j,此处i的值会变,导致大循环中的i会提前结束,结束条件为将输入的所有数据进行检查
            for(j=1;c[j]!='\0';j++) 
            {
            //    if((c[i]>='A'&&c[i]<='z')||(c[i]==32)||(c[i]>='a'&&c[i]<'z')||(c[i]>='1'&&c[i]<='9')) //同上部分略,c[i]>='1'应当改c[j]>='0'
                if((c[j]>='A'&&c[j]<='Z')||(c[j]=='_')||(c[j]>='a'&&c[j]<='z')||(c[j]>='0'&&c[j]<='9'))
                    h=1;
                else  // 新加。一旦检查到含有不满足条件的字符,立即修改标志并跳出循环
                {
                    h=0;
                    break;
                }
            }
        }
        if(h==1)
        {
            printf("yes\n");
        }
        else
        {
            printf("no\n");
        }
    }
    return 0;
}

126邮箱联系方式:no1xijin@126. com
2018-10-16 09:32
grayhooo
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2018-10-11
收藏
得分:0 
回复 4楼 no1xijin
非常感谢!!
2018-10-16 13:42
快速回复:小白提问,一个判断输入是否为C语言合法标识符的题目,一旦我输入合法 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027362 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved