HDU 2024 C 언어 합 법 식별 자 [입문]
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 80984 Accepted Submission(s): 31241
Problem Description
C 의 합 법 적 인 식별 자 인지 아 닌 지 문자열 을 입력 하 십시오.
Input
입력 데 이 터 는 여러 개의 테스트 인 스 턴 스 를 포함 합 니 다. 데이터 의 첫 줄 은 하나의 정수 n 입 니 다. 테스트 인 스 턴 스 의 개 수 를 표시 하고 n 줄 은 데 이 터 를 입력 합 니 다. 줄 마다 길이 가 50 을 넘 지 않 는 문자열 입 니 다.
Output
각 그룹의 입력 데이터 에 대해 한 줄 을 출력 합 니 다.입력 데이터 가 C 의 합 법 적 인 식별 자 라면 "yes" 를 출력 합 니 다. 그렇지 않 으 면 "no" 를 출력 합 니 다.
Sample Input
3 12ajf fi8x_a ff ai_2
no yes no
问题链接:HDU2024 C语言合法标识符。
问题简述:(略)
问题分析:
C语言的标识符是字母或下划线('_')开头的,字母、下划线('_')和数字的字符串。
程序说明:
本来是用函数scanf()读入字符串的,但是空行(直接输入回车)时,有个小陷阱。所以,改用函数gets(),AC通过。这事情有点费解,细节决定成败。
用字符指针来处理也是一种常见的做法。求字符串长度,用for循环语句来出来需要两次查看字符串。
AC的C语言程序如下:
/* HDU2024 C */
#include
#include
int main(void)
{
int n;
char s[50+1], *t;
gets(s);
n = atoi(s);
while(n--) {
gets(s);
if(!isalpha(s[0]) && s[0] != '_') {
//
printf("no
");
} else {
int flag = 1;
t = s + 1;
while(*t && flag) {
// 、 ,
if(isalpha(*t)) {
t++;
continue;
}
if(*t == '_') {
t++;
continue;
}
if(isdigit(*t)) {
t++;
continue;
}
// 、
flag = 0;
break;
}
if(flag)
printf("yes
");
else
printf("no
");
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.