输入一个字符串,判断其是否是C的合法标识符。用c语言编写程序。 c语言 输入一个字符串,判断其是否是C的合法标识符。

\u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u5224\u65ad\u5176\u662f\u5426\u662fC\u7684\u5408\u6cd5\u6807\u8bc6\u7b26\u3002 C\u8bed\u8a00\u65b0\u624b

\u6055\u76f4\u8a00\uff0c\u4f60\u7684\u4ee3\u7801\u6ca1\u6cd5\u770b\u4e0b\u53bb\u3002\u7ed9\u4f60\u5199\u4e00\u4e2a\u4f60\u5bf9\u7167\u770b\uff0c\u6709\u6ce8\u91ca\u3002
//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"int main(void){ char a[50]; int i; while(1){ printf("Pleale input a string(## end)...\nstr="); if(gets(a),a[0]=='#' && a[1]=='#')//\u8f93\u5165\u4e86\u4e24\u4e2a##\u5219\u7ed3\u675f break; if(!(a[0]>='a' && a[0]='A' && a[0]='a' && a[i]='A' && a[i]='0' && a[i]<='9')){ printf("\'%s\' --- NO!\n",a); break; } if(a[i]=='\0')//\u6392\u9664\u4ee5\u4e0a\u60c5\u51b5\u5269\u4e0b\u7684\u80af\u5b9a\u662f printf("\'%s\' --- YES!\n",a); } } return 0;}

1\u3001\u4f7f\u7528\u4e2d\u6587\u5f53\u6807\u8bc6\u7b26\uff0c\u5176\u524d\u63d0\u662f\u7f16\u8bd1\u5668\u652f\u6301\u4e2d\u6587\u5f53\u6807\u8bc6\u7b26\uff0cC++11\u4e4b\u540e\uff0c\u901a\u7528\u5b57\u7b26\u540d\u8986\u76d6\u5230\u4e86\u6c49\u5b57\u3002

2\u3001\u4f7f\u7528\u4e2d\u6587\u4f5c\u4e3a\u6807\u8bc6\u7b26\u65f6\uff0c\u5176\u5934\u6587\u4ef6\u4e0e\u539f\u6765\u4e00\u6837\u3002

3\u3001\u7a0b\u5e8f\u4e2d\u7684\u540d\u5b57\u7a7a\u95f4\uff0c\u4fdd\u6301\u4e0d\u53d8\u3002

4\u3001\u53ef\u4ee5\u5c06\u4fdd\u7559\u5b57\u5b9a\u4e49\u4e3a\u4e2d\u6587\uff0c\u7528define\u5b9a\u4e49\u3002

5\u3001\u53ef\u4ee5\u7528\u7c7b\u578b\u540d\uff0c\u76f4\u63a5\u5b9a\u4e49\u4e2d\u6587\u7684\u53d8\u91cf\u540d\u3002

6\u3001\u4e2d\u6587\u6807\u8bc6\u7b26\u7684\u4f7f\u7528\uff0c\u548c\u666e\u901a\u6807\u8bc6\u7b26\u4e00\u6837\u3002

C语言合法标识符由数字,字母,下划线组成。

且第一个字母不能为数字。

于是,根据其定义,可以进行判断,代码如下:

#define is_upper(x) (x>='A' && x<='Z')//大写字母判断。
#define is_lower(x) (x>='a' && x<='z')//小写字母判断。
#define is_char(x) (is_upper(x) || is_lower(x)) //字母判断。
#define is_num(x) (x>='0' && x<='9')//数字判断。
#define is_down_link(x) (x == '_')//下划线判断。

int check_first_char(char x)//判断第一个字符是否合法。
{
    return is_char(x) || is_down_link(x);//当为字母或下划线时合法。
}

int check_other_char(char x)//判断其它字符是否合法。
{
    return is_char(x) || is_down_link(x) || is_num(x);//当为数字,字母或下划线时合法。
}

int check(char *str)//判断标识符str是否合法,如果合法返回1,否则返回假。
{
    int i;
    if(check_first_char(str[0]) == 0) return 0;//检查第一字符。
    for(i = 1; str[i]; i ++)
        if(check_other_char(str[i]) == 0) return 0; //检查其它字符。
        
    return 1;
}

int main()
{
    char id[200];
    scanf("%s",id);//读入标识符。
    if(check(id)) //进行判断并输出结果。
        printf("标识符合法
");
    else printf("标识符非法
");
}


杭电给的一个代码示例。
#include <ctype.h>
#include <stdio.h>
int main(void)
{
int n, d, i;
char sym[64];

scanf("%d%*c", &n);
while (n--)
{
gets(sym);
if (sym[0] != '_' && !isalpha(sym[0]))
{
puts("no");
continue;
}
for (d = i = 1 ; sym[i] ; i++)
{
if (!isalnum(sym[i]) && sym[i] != '_')
{
d = 0;
break;
}
}
puts(d ? "yes" : "no");
}

return 0;
}

其中库函数:
isalpha
语法:
#include <ctype.h>
int isalpha( int ch );
功能:如果参数是字母字符,函数返回非零值,否则返回零值。
isalnum
语法:
#include <ctype.h>
int isalnum( int ch );
功能:如果参数是数字或字母字符,函数返回非零值,否则返回零值。

合法标示符是由字母,数字,下划线组成,开头不能是数字
还有一点,标示符不能用C的关键字
楼上的代码好像遗漏了这方面的判断

满意的话,请采纳,谢谢啦
#include<stdio.h>
#define N 21
void isLegal(char *p)
{
if(*p>='0'&&*p<='9')
{
printf("illegal\n");
return ;
}
else
while(*++p)
if(!(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z'||*p>='0'&&*p<='9'||*p=='_'))
{
printf("illegal\n");
return ;
}
printf("legal\n");
}
int main()
{
char s[N],*p=s;
int i;
gets(s);
isLegal(s);
return 0;
}

  • C璇█绋嬪簭,鍒ゆ柇涓涓瓧绗︿覆鏄惁鏄鍙︿竴涓瓧绗︿覆鐨勫瓙涓,濡傛槸鍒欒緭鍑虹涓娆...
    绛旓細include<stdio.h>#include<string.h>int iszstr(char *str,char *zstr);//zstr鏄痵tr鐨勫瓙涓 杩斿洖鍑虹幇鐨勪綅缃笅鏍囷紝鍚﹀垯杩斿洖-1int main( ){ int renum; char str[100],zstr[100]; while(1) { str[0]=zstr[0]=0; printf("杈撳叆姣涓锛"); scanf("%s",str); ...
  • 姹侸ava澶х, 浠荤粰瀛楃涓,鍒ゆ柇鍏舵槸鍚︿负鈥渁bcttcba鈥濆瀷鐨勫瓧绗︿覆銆
    绛旓細out.println(isMatch(str));// System.out.println(isMatchPlain(str));// System.out.println(isMatchEasy(str));}// 澶嶆潅鐗,涓ユ牸鍒ゆ柇,璋冪敤璇ユ柟娉,鍒ゆ柇瀛楃涓叉槸鍚绗﹀悎瑕佹眰private static boolean isMatch(String str) {//濡傛灉娌℃湁瀛楃涓查暱搴﹁姹,灏卞垹闄ょ涓涓ifif (str.length() !
  • 鎬庝箞鍒ゆ柇涓涓瓧绗︽槸涓嶆槸鏁板瓧瀛楃?
    绛旓細1銆佸彲浠ョ敤sacnf鎴杇ets鍑芥暟鐩存帴鎺ユ敹杈撳叆鐨勫瓧绗︿覆锛岀劧鍚庣敤寰幆閬嶅巻瀛楃涓蹭腑姣涓涓瓧绗︼紝鍒ゆ柇鍏舵槸瀛楁瘝杩樻槸鏁板瓧銆2銆佸彲浠ョ敤寰幆璋冪敤getch()鎴杇etchar()鍑芥暟鏉ヤ竴涓竴涓瓧绗︾殑鎺ユ敹杈撳叆锛屽悓鏃跺垽璇昏緭鍏ョ殑鏄瓧姣嶈繕鏄暟瀛椼3銆佸亣璁瀛楃c锛屾弧瓒 (c>='a'&& c<='z'锛墊| (c>='A' && c<='Z'锛夊氨鏄瓧姣...
  • C璇█缂栧啓涓涓▼搴,鍒ゆ柇杈撳叆鐨涓涓瓧绗︿覆鏄惁鏄鍥炴枃銆
    绛旓細include <stdio.h> int main(){ int n, reversedInteger = 0, remainder, originalInteger;printf("杈撳叆涓涓鏁存暟: ");scanf("%d", &n);originalInteger = n;// 缈昏浆 while( n!=0 ){ remainder = n%10;reversedInteger = reversedInteger*10 + remainder;n /= 10;} // 鍒ゆ柇 if (...
  • 鐢C璇█缂栧啓涓瀹屾暣婧愮▼搴,浠庨敭鐩杈撳叆涓涓瓧绗︿覆Str1,鍦ㄦ柊鐨勪竴琛岃緭鍏ヤ竴...
    绛旓細include "stdio.h"#include "string.h"void deleteChar(char *a,char c)//浠庣壒瀹氬瓧绗︿覆涓垹闄ょ壒瀹氬瓧绗 int i; char *d=NULL;if((d=strchr(a,c))!=NULL)//鎵惧埌杩欎釜瀛楃锛浠庡悗涓浣嶅悜鍓嶇Щ浣嶏紝灏嗗叾瑕嗙洊锛岃揪鍒板垹闄ょ殑鐩殑 { for(i=0;*(d+i)!=0;i++)(d+i)=*(d+i+1);} }in...
  • c璇█鎬庝箞鍒ゆ柇鏄惁鏄鎸囧畾瀛楃涓
    绛旓細瀛楃涓姣旇緝?include "string.h"if ( strcmp(str,"microsoft") ==0 ) printf("鐩哥瓑"); //str涓 "microsoft" 姣旇緝
  • c璇█缂栫▼棰 杈撳叆涓瀛楃涓,鍒ゆ柇璇ュ瓧绗︿覆鏄惁涓鍥炴枃銆
    绛旓細include <stdio.h> include<stdlib.h> int main(){ char a[100];int i=0,j=0;printf("璇杈撳叆瀛楃涓:\n");gets(a);while(a[i]!='\0')i++;i--;for(;j<=i;i--,j++){ if(a[i]!=a[j]){ break;} } if(j<=i){ printf("涓嶆槸鍥炴枃涓瞈n",a);} else { printf("鏄...
  • C璇█缂栫▼:浠庨敭鐩杈撳叆涓涓瓧绗鍜涓涓瓧绗︿覆,鍒ゅ畾璇ュ瓧绗﹁兘鍚﹀湪杈撳叆鐨勫瓧...
    绛旓細include "stdio.h"int main(){ char s[100],c;int i;printf("瀛楃涓锛");gets(s);printf("瀛楃锛");c=getchar();for(i=0;s[i]!='\0'&&s[i]!=c;i++);if(s[i]=='\0') printf("Not found.\n");else printf("璇ュ厓绱犵殑涓嬫爣:%d\n",i);} ...
  • C璇█鍒ゆ柇涓涓瓧绗︿覆鏄惁鏄鍙︿竴涓瓧绗︿覆鐨勫瓙涓
    绛旓細浠ュ強瀛楃涓茬殑瀛愪覆銆3銆佸畾涔変袱涓暣鍨嬪彉閲忥紝淇濆瓨鍚屾瀯瀛楃涓蹭腑鎵鏈夊瓧姣嶇殑鏁伴噺銆4銆侀噸缃暟缁刵鐨勫硷紝鍒濆间负0銆5銆鍒ゆ柇瀛楃涓茬殑瀛涓诧紝鏄惁涓鍚屾瀯瀛愪覆銆6銆佸鏋滃瓙涓叉槸鍚屾瀯瀛愪覆锛屽垯缁熻鍊艰嚜鍔1銆7銆佽繍琛岀▼搴忥紝杈撳叆涓涓瓧绗︿覆鍚庯紝鐢佃剳灏变細缁熻鍑烘墍鏈夊悓鏋勫瓙涓茬殑鏁伴噺銆
  • c璇█浠庨敭鐩樹笂杈撳叆涓涓瓧绗︿覆,鍒ゆ柇鏄惁鍚湁#,濡傛灉鍖呭惈,鍒ゆ柇鏄鍑犱釜...
    绛旓細include <stdio.h>int main(){char s[200]; int i,t=0; gets(s); for(i=0;s[i];i++) if(s[i]=='#') {printf("%d\n",i+1); return 0; } if(!t)printf("0\n"); return 0;}
  • 扩展阅读:python if判断语句 ... 怎样输入多个字符串 ... c语言判断是否为回文 ... 怎样输入一个字符串 ... python判断是否是回数 ... 字符串常量的正确形式 ... c++判断是否是回文数 ... 如何输入一个字符串 ... 输入一个字符串判断是否为回文 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网