题意:判断输入的每一个字符数组是否为合法的字符串;如果每个字符数组的第一个字符为非字母或非下划线,则字符串不合法;如果整个字符数组中存在不是字母、数字、下划线的字符,则字符串不合法;
思路:
1、声明一个整形变量n,定义为测试次数;一个字符数组g[60],用来存储字符串;
2、输入n,并用getchar()清空缓存区,建立循环,控制测试次数;
用gets()给字符数组赋值【用scanf(“%s”,g);会忽略空格字符】;
3、定义一个整形变量a,它的值只有1和0;判断首字符是否合法(只能为字母和下划线),如果不合法a为0;合法a为1,继续用内循环判断后面的字符是否合法(只能为字母、数字、下划线),若合法,a仍为1;一旦判断到不合法字符,a为零,停止内循环;
4、将a的值作为判断条件,若a=1,则输出yes;若a=0,输出no;
代码:
#include<stdio.h>
main()
{
int n;
char g[60];
int i,j,a;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
gets(g);
if((g[0]>='a'&&g[0]<='z')||(g[0]>='A'&&g[0]<='Z')||(g[0]=='_'))
{
a=1;
for(j=1;g[j]!='\0';j++)
{
if((g[j]>='a'&&g[j]<='z')||(g[j]>='A'&&g[j]<='Z')||(g[j]=='_')||(g[j]>='0'&&g[j]<='9'))
{
a=1;
}
else
{
a=0;
break;
}
}
}
else a=0;
if(a==0)printf("no\n");
if(a==1)printf("yes\n");
}
}