GVKun编程网logo

编写一个 lex 程序,检测并计算以大写字母开头、以小写字母结尾的模式

15

在这篇文章中,我们将为您详细介绍编写一个lex程序,检测并计算以大写字母开头、以小写字母结尾的模式的内容。此外,我们还会涉及一些关于1、编写程序:从键盘上接受一个字母,若是大写字母按原样输出,若是小写

在这篇文章中,我们将为您详细介绍编写一个 lex 程序,检测并计算以大写字母开头、以小写字母结尾的模式的内容。此外,我们还会涉及一些关于1、 编写程序:从键盘上接受一个字母,若是大写字母按原样输出,若是小写字母则将其转化为大写字母输出。、5-2 用 c 语言编程,输入一个字符,若是小写字母,转换为大写输出,若是大写字母,转换为小写字母输出、c# 在以大写字母开头的单词之间添加空格、c语言将字符串中的小写字母转换成大写字母的知识,以帮助您更全面地了解这个主题。

本文目录一览:

编写一个 lex 程序,检测并计算以大写字母开头、以小写字母结尾的模式

编写一个 lex 程序,检测并计算以大写字母开头、以小写字母结尾的模式

如何解决编写一个 lex 程序,检测并计算以大写字母开头、以小写字母结尾的模式?

我理解了这个问题并编写了以下代码。我的代码有效,当我用 ctrl+z 退出程序时,它会打印检测到的有效和无效模式的数量。

这是我的代码:

%{
int valid = 0;
int invalid = 0;
%}


%%
([A-Z][a-zA-Z0-9]*[a-z])* {valid++;}
[a-zA-Z0-9]* {invalid++;}
%%


int yywrap(){}

int main(int argc,char **argv[])
{
    printf("\n Enter inputs: \n\n");
    yylex();
    
    printf("\n\n\tNumber of VALID patterns   = %d\n",valid);
    printf("\tNumber of invalid patterns = %d\n\n",invalid);

    return 0;
}

但我想要这样的东西:

  • 每当我输入新行时,它应该打印检测到的模式、有效模式的数量和无效模式的数量。
  • 应该有一个 EXIT 命令。

解决方法

为了实现你的目标,你应该像这样修改你的代码:

/*** Definition Section ***/

%{
int valid = 0;
int invalid = 0;
%}


/*** Rules Section ***/

%%
([A-Z][a-zA-Z0-9]*[a-z])* {printf("\n\tPattern Detected: %s ",yytext); valid++;}
[a-zA-Z0-9]* {invalid++;}
"\n" {
        printf("\n\n\tNumber of VALID patterns   = %d\n",valid);
        printf("\tNumber of invalid patterns = %d\n\n",invalid); 
        valid = 0; 
        invalid = 0;
}
EXIT__ return 0;
%%


/*** User code section***/

int yywrap(){}

int main(int argc,char **argv[])
{
    printf("\n Enter inputs: \n\n");
    yylex();

    return 0;
}

主要变化出现在规则部分。

  • 规则 1: ([A-Z][a-zA-Z0-9]*[a-z])* 它检测并计算以大写字母开头、以小写字母结尾的有效模式。在实际操作中,它会打印检测到的图案并进行计数工作。此处 yytext 包含缓冲区中的文本,对于此规则,它是检测到的模式。
  • 规则 2: [a-zA-Z0-9]* 跟踪无效模式。这将有助于防止返回不匹配的模式。
  • 规则 3: "\n" 它会检测您何时输入新行。实际上,每当我输入新行时,它都会打印检测到的模式、有效模式的数量和无效模式的数量。此外,将下一行输入的计数变量重置为零。
  • 规则 4: EXIT__ 每当您输入这个确切的命令时,程序就会退出。

您可以避免在用户代码部分的主函数内打印有效和无效模式的数量。
但是如果你想在最后打印检测到的有效和无效模式的数量,那么这个程序需要一些修改。

1、  编写程序:从键盘上接受一个字母,若是大写字母按原样输出,若是小写字母则将其转化为大写字母输出。

1、 编写程序:从键盘上接受一个字母,若是大写字母按原样输出,若是小写字母则将其转化为大写字母输出。

/* 编写程序:从键盘上接受一个字母,若是大写字母按原样输出,
若是小写字母则将其转化为大写字母输出。*/ 
#include<stdio.h>
#include<ctype.h> 
int main()
{
    char c;
    printf("please input a \n");
    c=getchar();
    putchar(toupper(c));    
    return 0;
}

5-2 用 c 语言编程,输入一个字符,若是小写字母,转换为大写输出,若是大写字母,转换为小写字母输出

5-2 用 c 语言编程,输入一个字符,若是小写字母,转换为大写输出,若是大写字母,转换为小写字母输出

#include<iostream>
using namespace std;
void main()
{
    char instr[100];
    cout<<"请输入一行字符串:";
    cin>>instr;

    for(int i=0;i<strlen(instr);i++){
        if (instr[i]>=''a'' &&instr[i]<=''z'') instr[i]-=32;    
    }
    cout<<"转换后的大写字符串为:";
    for(int j=0;j<strlen(instr);j++) cout<<instr[j];
    cout<<endl;

    //return 0;
}

方法二:简洁版

 

char instr[100];
    cout<<"请输入一行字符串:";
    cin>>instr;
    cout<<"\n转换后的大写字符串为:";
    for(int i=0;i<strlen(instr);i++){
        if (instr[i]>=''a'' &&instr[i]<=''z'') instr[i]-=32;
        cout<<instr[i];
    }
    cout<<endl;

 

c# 在以大写字母开头的单词之间添加空格

c# 在以大写字母开头的单词之间添加空格

c# 在以大写字母开头的单词之间添加空格

要在以大写字母开头的单词之间放置空格,请尝试以下示例 -

首先,设置字符串。

var str = "WelcomeToMyWebsite";
登录后复制

正如您在上面看到的,我们的字符串在大写字母之前没有空格。要添加它,请使用 LINQ,如下所示 -

str = string.Concat(str.Select(x => Char.IsUpper(x) ? " " + x : x.ToString())).TrimStart(&#39; &#39;);
登录后复制

以下是在以大写字母开头的单词之间放置空格的完整代码 -

示例

using System;
using System.Linq;

class Demo {

   static void Main() {
      var str = "WelcomeToMyWebsite";

      Console.WriteLine("Original String: "+str);
      str = string.Concat(str.Select(x => Char.IsUpper(x) ? " " + x : x.ToString())).TrimStart(&#39; &#39;);

      Console.WriteLine("New String: "+str);
      Console.ReadLine();
   }
}
登录后复制

以上就是c# 在以大写字母开头的单词之间添加空格的详细内容,更多请关注php中文网其它相关文章!

c语言将字符串中的小写字母转换成大写字母

c语言将字符串中的小写字母转换成大写字母

描述

给定一个字符串,将其中所有的小写字母转换成大写字母。

输入

输入一行,包含一个字符串(长度不超过100,可能包含空格)。

输出

输出转换后的字符串。

样例输入

helloworld123Ha

样例输出

HELLOWORLD123HA

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[100001];
char ans[1001];
int Now;
int main()
{
  gets(a);
  int l=strlen(a);
  for(int i=0;i<l;i++)
  {
    if(a[i]>=97&&a[i]<=122)a[i]=a[i]-32;
  }//大小写转换
  
   puts(a);
  return 0;
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧!

今天的关于编写一个 lex 程序,检测并计算以大写字母开头、以小写字母结尾的模式的分享已经结束,谢谢您的关注,如果想了解更多关于1、 编写程序:从键盘上接受一个字母,若是大写字母按原样输出,若是小写字母则将其转化为大写字母输出。、5-2 用 c 语言编程,输入一个字符,若是小写字母,转换为大写输出,若是大写字母,转换为小写字母输出、c# 在以大写字母开头的单词之间添加空格、c语言将字符串中的小写字母转换成大写字母的相关知识,请在本站进行查询。

本文标签: