解题思路:
算是贪心算法吧,当每个.前的格式符合规则,那么整串字符串也是符合规则的
注意事项:
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 人评分