小白写博客的第一天
今天放假啦,为期7天的大一acm培训结束了。今天在家里看了一天的C Primer Plus,这本书超级好,强力推荐。由于今天看了前两章的内容,所以都比较简单,也没有遇到什么比较高深的题目。所以在这里分享一道合法标识符的题目,两种做法。嘿嘿,请注意查收。
Problem 433
方案一
#include <stdio.h>
#include <stdlib.h>``
int main()
{
int i,n,j,flag;
char a[50];
while(scanf("%d",&n)!=EOF)
{
getchar();//scanf输入的,以下是字符,要吃回车
for(i=1; i<=n; i++)
{ gets(a);//此处不能用scanf输入,scanf不能输入空格.每一行单独输入,否则所有组的数据都是最后一组的
for(j=0; a[j]!='\0'; j++)
{ flag=0;
if(j==0)
{
if(a[j]>='0'&&a[j]<='9')
{
flag=0;
break;
}
}
if(j>0)
{
if((a[j]>='0'&&a[j]<='9')||(a[j]>='a'&&a[j]<='z')||(a[j]>='A'&&a[j]<='Z')||a[j]=='_')
flag=1;
else
{
flag=0;
break;
}
}
}
if(flag==1)
printf("yes\n");
if(flag==0)
printf("no\n");
}
}
return 0;
}
方案二
#include <stdio.h>
#include <stdlib.h>
int main()/*学习*/
{
int n,j,i;
char c[50];
while(~scanf("%d",&n))
{
getchar();/*因为是输入数字以后才要输入字符,所以要吃回车*/
/*如果用gets输入不需要吃回车,因为gets会把回车变成'\0'*/
for( i=0; i<n; i++)
{
gets(c);
if((c[0]>='a'&&c[0]<='z')||(c[0]<='Z'&&c[0]>='A')||c[0]=='_')
{
for(j=1; c[j]!='\0'; j++)
{
if((c[j]>='a'&&c[j]<='z')||(c[j]>='A'&&c[j]<='Z')||(c[j]>='0'&&c[j]<='9')||c[j]=='_')
/*字母有大写和小写两种!!*/
continue;
else
break;
}
if(c[j]=='\0')/*如果循环能自己走到结尾*/
printf("yes\n");
else printf("no\n");
}
else printf("no\n");
}
}
return 0;
}
嘿嘿,第二个代码片真好看O(∩_∩)O!明天继续哦!!⊙0⊙!