HDU 2024 C 언어 합 법 식별 자
허허,말 도 마.본론 을 계속 하 다.
제목 링크:http://acm.hdu.edu.cn/showproblem.php?pid=2024
이 문 제 는 오랫동안 풀 었 으 니 기 초 를 계속 강조 하고 모래 를 떠 서 높 은 대 를 쌓 는 속도 가 느 리 지 않 으 면 더 많은 것 을 얻 을 수 있 을 것 이다.
제목 사고:첫 번 째 문자 가 숫자 가 아니 라 뒤의 문 자 는 모두 숫자,대문자(소문 자)영어,밑줄 범위 안에 있다 고 판단 하면 된다.
#include<stdio.h>
#include<string.h>
int main()
{
int s,len,i,sum;
char str[100];
scanf("%d",&s);
getchar();
while(s--)
{
sum=0;
gets(str);
len=strlen(str);
if(str[0]>='0'&&str[0]<='9')
printf("no
");
else
{
for(i=0;i<=len-1;i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z'||str[i]=='_')
{sum++;}
if(sum==len) {printf("yes
");}
else {printf("no
");}
}
}
return 0;
}
잘못된 코드 를 한 단락 더 붙 여 gets(str)를 비교 합 니 다.scanf("%s",str)와 함께;구별
C 언어 gets()와 scanf()함수 의 차이
scanf()함수 와 gets()함 수 는 문자열 을 입력 하 는 데 사용 되 지만 기능 적 으로 차이 가 있 습 니 다.키보드 에 문자열"hi hello"를 입력 하려 면 를 사용 해 야 합 니 다.gets__함수
gets 는 빈 칸 을 받 을 수 있 습 니 다.scanf 는 빈 칸,리 턴,Tab 키 를 만나면 입력 이 끝났다 고 생각 하고 모든 빈 칸 을 받 아들 일 수 없습니다.
char string[15]; gets(string); /*리 턴 을 만나면 입력 이 끝났다 고 생각 합 니 다*/
scanf("%s",string); /*스페이스 바 를 만 나 입력 이 끝났다 고 생각 합 니 다*/
따라서 입력 한 문자열 에 빈 칸 을 포함 할 때 gets 입력 을 사용 해 야 합 니 다.
scanf 와 gets 가 문자열 을 가 져 올 때의 차이
C 언어 에서 문자열 을 가 져 올 수 있 는 함 수 는 적어도 두 개 입 니 다.
1.scanf()
헤더 파일:stdio.h
문법:scanf("형식 제어 문자열",변수 주소 목록);
문자열 을 받 아들 일 때:scanf("%s",문자 배열 이름 또는 포인터);
2.gets()
헤더 파일:stdio.h
문법:gets(문자 배열 이름 이나 포인터);
둘 이 문자열 을 받 아들 일 때:
1.차이 점:
scanf 는 빈 칸,탭 문자 Tab,리 턴 등 을 받 아들 일 수 없습니다.
그리고 gets 는 빈 칸,탭 문자 Tab 와 리 턴 등 을 받 아들 일 수 있 습 니 다.
2.공통점:
문자열 수락 이 끝 난 후 자동 으로'\0'을 추가 합 니 다.
예 1:
#include
main()
{
char ch1[10],ch2[10];
scanf("%s",ch1);
gets(ch2);
}
asd 빈 칸 fg 리 턴,asd 빈 칸 fg 리 턴 을 순서대로 입력 하면 ch1="asd\0",ch2="asd fg\0".
예 2:
#include
main()
{
char ch1[10],ch2[10],c1,c2;
scanf("%s",ch1);
c1=getchar();
gets(ch2);
c2=getchar();
}
asdfg 리 턴,asdfg 리 턴 을 순서대로 입력 하면 ch1="asdfg\0",c1=",ch2="asdfg\0",c2 입력 이 필요 합 니 다.
scanf:리 턴 을 만나면 빈 칸 과 tab 키 는 자동 으로 문자열 뒤에'\0'을 추가 하지만 리 턴,빈 칸 과 tab 키 는 입력 한 버퍼 에 남아 있 습 니 다.
gets:Enter 키 전에 입력 한 모든 문 자 를 받 아들 이 고'대체'\0'을 사용 할 수 있 습 니 다.Enter 키 는 입력 버퍼 에 남지 않 습 니 다.
gets()는 문자열 을 읽 고 Enter 로 입력 을 끝 냅 니 다. scanf()는 모든 종류의 변 수 를 읽 을 수 있 습 니 다.
#include<stdio.h>
#include<string.h>
int main()
{
int s,len,i,sum;
char str[100];
scanf("%d",&s);
getchar();
while(s--)
{
sum=0;
scanf("%s",str);
len=strlen(str);
if(str[0]>='0'&&str[0]<='9')
printf("no
");
else
{
for(i=0;i<=len-1;i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z'||str[i]=='_')
{sum++;}
if(sum==len) {printf("yes
");}
else {printf("no
");}
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.