杭电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;
}
展开
 我来答
dalewzm
2012-12-15 · TA获得超过105个赞
知道答主
回答量:128
采纳率:0%
帮助的人:156万
展开全部
有空格的话,你这种读取方式会被读取成两个字符串,而且判断方式中》=字母也是行的,你没有=号,而且对合法字符串的判断思路也不对,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;
}
追问
如果就用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();
kku28
2012-12-15
知道答主
回答量:32
采纳率:0%
帮助的人:34.5万
展开全部
对于读取行可以这样
char str[100];
while(gets(str))
{
cout << str << endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
豆小笔
2012-12-14 · TA获得超过362个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:84.5万
展开全部
问题是???
追问
我输入的字符串有空格时出错
追答
你打个断点,然后一步一步跑下来看看,具体是那一句报的错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式