杭电2024题 题目要求:输入一个字符串,判断其是否是C的合法标识符。
#include<iostream>#include<string>usingnamespacestd;intmain(){stringstr;while(cin>>st...
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
while(cin>>str)
{
int length;
int i=0;
int count=0;
length=str.length();
if(str[0]=='_'||(str[0]<'Z'&&str[0]>'A')||(str[0]<'z'&&str[0]>'a'))
{
for(i=0;i<length;i++)
{
if(str[i]!='40')
count++;
}
if(count==length)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
else
cout<<"no"<<endl;
}
return 0;
} 展开
#include<string>
using namespace std;
int main()
{
string str;
while(cin>>str)
{
int length;
int i=0;
int count=0;
length=str.length();
if(str[0]=='_'||(str[0]<'Z'&&str[0]>'A')||(str[0]<'z'&&str[0]>'a'))
{
for(i=0;i<length;i++)
{
if(str[i]!='40')
count++;
}
if(count==length)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
else
cout<<"no"<<endl;
}
return 0;
} 展开
展开全部
有空格的话,你这种读取方式会被读取成两个字符串,而且判断方式中》=字母也是行的,你没有=号,而且对合法字符串的判断思路也不对,c语言标准有两个,一个是字符串只能由字母,数字,下划线组成,第二是首位只能是下划线或字母,你那根据长度判断有无空格,若有其它字符%,。等也不能判断
另附本人代码如下,将你的稍做改动
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main()
{
char str[51];
int n,i,j;
scanf("%d\n",&n);
for( j=0; j<n; j++)
{
int length;
gets(str);
length=strlen(str);
if(str[0]=='_'||(str[0]<='Z'&&str[0]>='A')||(str[0]<='z'&&str[0]>='a'))
{
for(i=1;i<length;i++)
{
if(str[i]=='_'||(str[i]<='Z'&&str[i]>='A')||(str[i]<='z'&&str[i]>='a')|| ( str[i]<='9' && str[i]>='0'))
;
else
break;
}
if(i == length)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
else
cout<<"no"<<endl;
}
return 0;
}
另附本人代码如下,将你的稍做改动
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main()
{
char str[51];
int n,i,j;
scanf("%d\n",&n);
for( j=0; j<n; j++)
{
int length;
gets(str);
length=strlen(str);
if(str[0]=='_'||(str[0]<='Z'&&str[0]>='A')||(str[0]<='z'&&str[0]>='a'))
{
for(i=1;i<length;i++)
{
if(str[i]=='_'||(str[i]<='Z'&&str[i]>='A')||(str[i]<='z'&&str[i]>='a')|| ( str[i]<='9' && str[i]>='0'))
;
else
break;
}
if(i == length)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
else
cout<<"no"<<endl;
}
return 0;
}
追问
如果就用string 的话,怎么让有空格情况下也读取为一个字符串!还是这种办法就是行不通?
追答
可以
改动后前面部分如下:
int main()
{
int n,i,j;
scanf("%d\n",&n);
for( j=0; j<n; j++)
{
int length;
string str;
getline(cin,str);
length=str.length();
展开全部
对于读取行可以这样
char str[100];
while(gets(str))
{
cout << str << endl;
}
char str[100];
while(gets(str))
{
cout << str << endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题是???
追问
我输入的字符串有空格时出错
追答
你打个断点,然后一步一步跑下来看看,具体是那一句报的错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询