秃头的直上


私信TA

用户名:TTDZS

访问量:2636

签 名:

等  级
排  名 16560
经  验 800
参赛次数 0
文章发表 10
年  龄 0
在职情况 学生
学  校 桂林电子科技大学
专  业

  自我简介:

解题思路:

算是贪心算法吧,当每个.前的格式符合规则,那么整串字符串也是符合规则的

注意事项:

1.求长度写成len=strlen(str);编译没办法通过

   因为strlen()是用来求C风格字符串的长度的

   string 是C++的对象。这样求长度str1.length(); 


2.    string中的每个元素其实上就是char类型

    这是由string 类的构造函数决定的 

(原因如下可看可不看)

老祖宗模板类basic_string的原型:template<class CharType, class Traits = char_traits<CharType>, class Allocator = allocator<CharType> >class basic_string;

第一个参数Chartype:表示存储在basic_string字符串里的单个字符的数据类型。当CharType = char的时候,我们就定义了string类,如本文第二行所示

第二和第三个参数正如其名字,Trait(特点,特性),allocator(分配算符),一个描述了CharType元素的属性,另一个封装了有关字符串内存分配和解除分配的详细信息。它们都设有了默认值(等号= 后边的即是)。 

    



参考代码:


#include<iostream>

#include<string.h>

#include<string>

using namespace std;

int sign;//定义跳出标记为全局变量 


int JUDGE (char a[100],int n) //数组做形参不需要指针啥的,因为数组本质上就是一个指针 

{

    if(n>3)

    {

    sign=1;

    return 0; 

    } 



    for(int i=0;i<n-1;i++)

    {

    if(a[i]==0&&a[i+1]!=0)

    {

    sign=1;

    return 0;

    }

    } 


}



int judge(char s)   //判断字符串中的一个字符是否符合规则 

{

    if(s<'0'||s>'9')//不是数字

    {

    if(s=='.')

    return 1; //是.返回1 

    else

    return 0;//不是数字不是.返回0 

    } 


    else

    return 2;//是数字返回2 



}




int main()

{

    string str;

    int len;  //输入字符串的长度


    char a[100];//用于判断字符串 

    int n=0; 

    

     

     

    while(cin>>str)

    {

    

        sign=0;//符合规则标记 

        len=str.length();

    for(int i=0;i<len;i++)

    {

    if(judge(str[i])==0) //输入的字符不是数字不是.,sign为1 

        sign=1; 

    if(judge(str[i])==1) //输入的字符是.

    {

         JUDGE(a,n); //判断.前面的是否符合规则 

         //数组做参数直接写数组名就完了 ,不需要加上[]

        n=0;     //把判断数组归零 

    }


    if(judge(str[i])==2) //输入的字符是数字

    {

    a[n]=str[i];

    n++;

    }


    if(sign==1)

    break;


    }

    if(sign==0)

    cout<<'Y'<<endl;

    else

    cout<<'N'<<endl;



    }




    return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »