給定一個不包含空白符的字串,請判斷是否是C語言合法的識別符號號(注:題目保證這些字串一定不是C語言的保留字)。
C語言識別符號要求:
1. 非保留字;
2. 只包含字母、數字及下劃線(“_”)。
3. 不以數字開頭。
輸入:
一行,包含一個字串,字串中不包含任何空白字符,且長度不大于20。
輸出:
一行,如果它是C語言的合法識別符號,則輸出yes,否則輸出no。
樣例輸入:
RKPEGX9R;TWyYcp
樣例輸出:
no
我是這樣寫的
#include <string.h>
#include <stdio.h>
int h(char a)
{
if((a>='a'&&a<='z')||(a>='A'&&a<='Z')||(a>='0'&&a<='9'))
{ return 1;}
return 0;
}
int f(char a)
{
if(a>='a'&&a<='z'||a>='A'&&a<='Z')
{return 1;}
return 0;
}
int main()
{
int i,cnt;
char sym[20];
gets(sym);
if((sym[0]!='_')&&(!f(sym[0])))
{
puts("no");
return 0;
}
for(i=1,cnt=1;cnt<20;cnt++)
{
if(h(sym[cnt])||(sym[cnt]='_'))
{i=1;}
else
{i=0;
break;}
}
if(i==1)
{puts("yes");}
else
{puts("no");}
return 0;
}
可是輸出是yes
想了半天不知道哪里寫錯了,求指導
uj5u.com熱心網友回復:
有人能告訴我一下嗎?uj5u.com熱心網友回復:
這應該是==號uj5u.com熱心網友回復:
可是輸入正確的也顯示no了
uj5u.com熱心網友回復:
你的for回圈的退出條件有問題
你這是小于20但你不一定輸入20個字符,所以你的退出條件是字串的元素不等于 '\0'
uj5u.com熱心網友回復:
你的for回圈里的退出條件有問題,你是不超過20個就一直回圈,如果你就只有3個字符,那剩下的都是沒有賦值得所以只需要訪問這三個字符即可,字串結束符是'\0'所以只要不等于'\0',就會一直訪問
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/67771.html
標籤:C語言
