USTC机试-判断输入的一些字符串中合法标识符的个数
//给出标识符判断标识符是否符合规则
#include<stdio.h>
#include<string.h>
#define N 400
bool judge(char s[]){//定义判断标识符函数
int len=strlen(s);
if(len<=0) return 0;//如果标识符小0直接返回false
bool flag_1=false;//判断首字母是否符合标准
bool flag_2=true;//判断其后字母是否符合标准,由于刚开始防止只有一个字符赋值以true
flag_1=s[0]>=65 && s[0]<=90 ||s[0]>=97&&s[0]<=125||s[0]=='_'?true:false;
//如果第一个首字母是在a-z或者A-Z或者_开头均合格
int i=1;
while(i<len){
flag_2=s[i]>=65 && s[i]<=90 ||s[i]>=97&&s[i]<=125||s[i]=='_'||s[i]>=48&&s[i]<=58?true:false;
i++;
}
return flag_1&&flag_2;//两项都成立则为真
}
int main(){
char s[N];//存放输入的标识符
int count=0;
int num;
printf("输入要输入的个数:");
scanf("%d",&num);
while(num>0){
scanf("%s",s);
if(judge(s)) count++;
num--;
}
printf("合法个数是:%d\n",count);
return 0;
}
#include<stdio.h>
#include<string.h>
#define N 400
bool judge(char s[]){//定义判断标识符函数
int len=strlen(s);
if(len<=0) return 0;//如果标识符小0直接返回false
bool flag_1=false;//判断首字母是否符合标准
bool flag_2=true;//判断其后字母是否符合标准,由于刚开始防止只有一个字符赋值以true
flag_1=s[0]>=65 && s[0]<=90 ||s[0]>=97&&s[0]<=125||s[0]=='_'?true:false;
//如果第一个首字母是在a-z或者A-Z或者_开头均合格
int i=1;
while(i<len){
flag_2=s[i]>=65 && s[i]<=90 ||s[i]>=97&&s[i]<=125||s[i]=='_'||s[i]>=48&&s[i]<=58?true:false;
i++;
}
return flag_1&&flag_2;//两项都成立则为真
}
int main(){
char s[N];//存放输入的标识符
int count=0;
int num;
printf("输入要输入的个数:");
scanf("%d",&num);
while(num>0){
scanf("%s",s);
if(judge(s)) count++;
num--;
}
printf("合法个数是:%d\n",count);
return 0;
}