栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言入门100例十八题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言入门100例十八题

#循环输入。每组输入为一个长度不超过80的字符串,判断它是否是 C语言合法标识符。没有任何输入时,程序结束。C语言合法标识符需要满足如下条件:   
1)出现空格(或tab)非法;   
2)首字符不能是数字;   
3)中间不能出现空格;   
4)字符集合只有 数字、_、大写字母、小写字母;
解题思路1,设计一个函数,满足上面就返回1,否则返回0
2,第一个出现空格或者tap,一个if判断可以解决。
3,数字判断用if判断在0和1之间。
4,空格用if判断。
代码详解:

#include 
const int __UNDEFINE= 100000;
char str[100];
//第一步判断是否是数字
int isNum(char c){
return c>='0'&&c<='9';
}
//第二步判断是否是空格或者是tap
int is_space_or_tap(char c){
return c==' '||c=='t';
}
//字符集合中只有数字_大写字母小写字母
int judge_char(char c){
if(isNum(c))return 1;//数字判断
if(c>='A'&&c<='Z')retrun 1;
if(c>='a'&&c<='z')return 1;
if(c=='_')return 1;
retrun 0;
}
int judge(const char* str)
//函数的某个参量如果声明为const,
就表示在该函数内部不能对该参数进行修改。
这个参数如果是非地址变量,就没有必要加const
,因为这样的变量本身就是不可改变的,
只有参数是地址(数组名和指针)时,
加const才有意义,这里表示传入的是str指针,指针不可变,str可变。
{
int i;//计数器
int s,t;
s=__UNDEFINE;
t=0;
for(i=0;str[i];i++){
if(!is_space_or_tap(str[i])){
if(s==__UNDEFINE){
s=i;//对字符串进行遍历,得到最后一个不为空格和tap的下标,传给s
}
t=i;//全部遍历完成后,将长度给t
}else{
retrun 0;//存在空格或者tap就直接返回0
}
}
if(s>t){
retrun 0;//空字符串最后一个是真值0,所以s会比t大
}
if(isNum(str[s])){
retrun 0;//第一个不为空格的字符为数字,返回0
}
for (i = s; i <= t; ++i) {         
if (is_space_or_tab(str[i])){ 
return 0;
}
if (!judge_char(str[i])){   
return 0;
}
}
return 1;
}
int main() {
    int t;
    scanf("%d", &t);
    getchar();
//scanf针对%c的输入而言:%c遇到空格、回车、跳格等结束符都是会读取的。所以用getchar获得回车
    while (t--) {
        gets(str);
        printf("%sn", judge(str) ? "yes" : "no");
    }
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928130.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号