问题标题: 酷町堂:1088 合法文件名

0
0
已解决
李瑞曦
李瑞曦
高级天翼
高级天翼

嘤嘤嘤,50分代码如下:

#include<iostream>
#include<string>
using namespace std;
string a;
int main(){
    cin>>a;
    if(a[0]>='A'&&a[0]<='Z'){
        bool f=0;
        for(int i=0;i<=a.size()-1;i++){
            if((a[i]>='A'&&a[i]<='Z')||(a[i]>='0'&&a[i]<='9')||(a[i]>='a'&&a[i]<='z')||a[i]=='_'){
                f=1;
            }
        }
        if(f==0){
            cout<<"No";
        }
        else{
            cout<<"Yes";
        }
        return 0;
    }
    else {
        cout<<"No";
    }    
}

 


0
已采纳
王子逸
王子逸
新手天翼
新手天翼

你的有一点小问题

getline输入

把cin>>a;改成getline(cin,a);

王子逸在2020-08-03 11:11:36追加了内容

在结合其他人的AC哦

王子逸在2020-08-03 11:12:57追加了内容
定义s;
 getline(cin,s);
    for(int i=0;i<s.size();i++){
        if(!((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||(s[i]>='0'&&s[i]<='9')||s[i]=='_')){
            cout<<"No";
            return 0;
        }
    }
    if(s[0]>='0'&&s[0]<='9'){
        cout<<"No";
    }
    else{
        if((s[0]>='A'&&s[0]<='Z')||s[0]=='_')
            cout<<"Yes";
            else
            cout<<"No";
    }

 

王子逸在2020-08-03 11:13:34追加了内容

头文件自己想

1
赵逸凡
赵逸凡
初级启示者
初级启示者

这里不对,不能遇到一个字符满足条件就认为整个字符串合法,应该是判断如果任意一个字符不满足题目条件就标记f=1,f=1应该表示这个字符串不合法,因为f=1的意义变了,所以后面的判断也要改变

1
邵悦媛
邵悦媛
新手光能
新手光能

https://wenda.codingtang.com/questions/8885/

还有:

if不对,可以把f+1改成f+=1,最后判断一下f是不是等于a.size(),如果不等于,输出No,如果等于,输出Yes,

核心:

for(定义 i;循环遍历0~a.size){
if(a[i]符合所有条件)
f+=1;
}
if(f==a.size)
cout<<"Yes";
else
cout<<"No";

 

我要回答