信息学奥赛一本通 1134:合法C标识符 | OpenJudge NOI 1.7 06
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1134:合法C标识符 | OpenJudge NOI 1.7 06
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【題目鏈接】
ybt 1134:合法C標(biāo)識符
OpenJudge NOI 1.7 06:合法C標(biāo)識符
【題目考點(diǎn)】
1. 字符判斷
- 判斷一個(gè)字符c是不是數(shù)字: c >= '0' && c <= '9'或isdigit(c)
- 判斷一個(gè)字符c是不是大寫字母:c >= 'A' && c <= 'Z'或isupper(c)
- 判斷一個(gè)字符c是不是小寫字母:c >= 'a' && c <= 'z'或islower(c)
- 判斷一個(gè)字符c是不是字母:c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' 或 isalpha(c)
- 判斷一個(gè)字符c是不是字母或數(shù)字:c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z'或 isalnum(c)
【解題思路】
- 已知輸入的字符串不會是C語言關(guān)鍵字
- 先判斷第一個(gè)字符是不是數(shù)字,如果是,則該字符串不是合法標(biāo)識符,程序結(jié)束。
- 判斷后面每一個(gè)字符,如果出現(xiàn)不是字母數(shù)字下劃線的字符,那么該字符串不是合法標(biāo)識符,程序結(jié)束。
- 如果運(yùn)行到了這里,那么字符串中每一個(gè)字符都是合法的,該字符串是一個(gè)合法標(biāo)識符。
【題解代碼】
解法1:使用字符的區(qū)間
通過判斷字符的ASCII碼在哪個(gè)區(qū)間中,來確定該字符是字母還是數(shù)字
#include <bits/stdc++.h> using namespace std; int main() {char s[25];cin>>s;if(s[0] >= '0' && s[0] <= '9')//如果第一個(gè)字符是數(shù)字{cout<<"no";return 0;}int len = strlen(s);for(int i = 0; i < len; ++i){if(!(s[i] >= '0' && s[i] <= '9' || s[i] >= 'a' && s[i] <= 'z' ||s[i] >= 'A' && s[i] <= 'Z' ||s[i] == '_'))//如果出現(xiàn)不滿足要求的字符 {cout<<"no";return 0; }}cout<<"yes";return 0; }解法2:使用<ctype>中的函數(shù)
#include <bits/stdc++.h> using namespace std; int main() {char s[25];cin>>s;if(isdigit(s[0]))//如果第一個(gè)字符是數(shù)字{cout<<"no";return 0;}int len = strlen(s);for(int i = 0; i < len; ++i){if(!(isalnum(s[i]) || s[i] == '_'))//如果出現(xiàn)不滿足要求的字符 {cout<<"no";return 0; }}cout<<"yes";return 0; }總結(jié)
以上是生活随笔為你收集整理的信息学奥赛一本通 1134:合法C标识符 | OpenJudge NOI 1.7 06的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通(1078:求分数序列和
- 下一篇: 信息学奥赛一本通 1051:分段函数 |