我之前用java编写了一个程序,它将一个字符串作为输入作为输入并检查它是否有效。决定的规则是:
1)字符串是可识别的当且仅当它包含单词“pi”,“ka”,“chu”作为其片段,以任何顺序重复任意次数。
2)如果它包含任何其他片段(或子序列),那么它是无法识别的
我可以在 java 中轻松地做到这一点,因为 java 对字符串函数有更好的支持。我的代码是(这很好用)
import java.util.Scanner;
public class RecognisingWords {
public static void main(String[] args) throws Exception
{
Scanner inp= new Scanner(System.in);
String str;
System.out.println("Enter the string to be tested:");
str=inp.nextLine();
while(str.length()>0)
{
if(str.startsWith("pi"))
{
str= str.substring(2);
}
else if(str.startsWith("ka"))
{
str= str.substring(2);
}
else if(str.startsWith("chu"))
{
str= str.substring(3);
}
else
{
System.out.println("Unrecognisable Sequence");
break;
}
}
if(str.length()==0)
{
System.out.println("Recognisable Sequence");
}
}
}
但是,当我在 c 中编写相应的程序(使用指针)时,我的代码会陷入无限循环。请检查我的代码并指出错误所在。也可以在不使用指针的情况下实现这个程序吗?
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main(void)
{
char str[10];
int len=0,flag=1;
char *ptr;
printf("Enter the string : ");
gets(str);
len=strlen(str);
ptr=str;
while(*ptr!='\0')
{
if(!strcmp("pi",ptr))
{
ptr=ptr+2;
}
else if(!strcmp("ka",ptr))
{
ptr=ptr+2;
}
else if(!strcmp("chu",ptr))
{
ptr=ptr+3;
}
else
{
printf("String not recognised");
flag=0;
break;
}
}
if(flag==1)
printf("String is recognised");
return 0;
}
我已经纠正了我的一些非常愚蠢的错误。希望大家不要介意