題意:判斷輸入的每一個字符數(shù)組是否為合法的字符串临谱;如果每個字符數(shù)組的第一個字符為非字母或非下劃線袖迎,則字符串不合法鸽心;如果整個字符數(shù)組中存在不是字母聊闯、數(shù)字布疼、下劃線的字符摊趾,則字符串不合法币狠;
思路:
1、聲明一個整形變量n砾层,定義為測試次數(shù)漩绵;一個字符數(shù)組g[60],用來存儲字符串肛炮;
2止吐、輸入n,并用getchar()清空緩存區(qū),建立循環(huán)侨糟,控制測試次數(shù)碍扔;
? ? ? 用gets()給字符數(shù)組賦值【用scanf(“%s”,g);會忽略空格字符】;
3秕重、定義一個整形變量a不同,它的值只有1和0;判斷首字符是否合法(只能為字母和下劃線)溶耘,如果不合法a為0二拐;合法a為1,繼續(xù)用內(nèi)循環(huán)判斷后面的字符是否合法(只能為字母凳兵、數(shù)字百新、下劃線),若合法庐扫,a仍為1饭望;一旦判斷到不合法字符,a為零聚蝶,停止內(nèi)循環(huán)杰妓;
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");
? ? }
}