C 언어 강화 (9) 문장의 단 어 를 뒤 집 는 순서
이 문 제 를 통 해 당신 은 파악 할 수 있 습 니 다.
예 를 들 어 'I am a student' 를 입력 하면 'student. a am I' 를 출력 합 니 다.
사고의 방향
문자열 가 져 오기
우선 사용자 가 입력 한 문자열 을 가 져 올 수 있 습 니 다. 두 가지 주의 가 필요 합 니 다.
1. cin < < 를 사용 하면 출력 할 때 빈 칸 뒤의 문자열 이 출력 되 지 않 는 것 을 발견 할 수 있 습 니 다. 다음 그림 입 니 다.
해결 방법: cin. getline (str, length) 사용
2. 사용자 가 입력 한 문자열 의 길 이 는 일반적으로 우리 가 만 든 문자 배열 의 길이 와 같 지 않 기 때문에 전통 적 인 i < str. size () 로 옮 겨 다 니 면 여러 개의 '뜨 거 운' 출력 을 발견 할 수 있 습 니 다. 배열 이 초기 화 되 지 않 았 기 때 문 입 니 다.
아래 그림
해결 방법: strlen (str) 을 사용 하여 문자 배열 의 유효 길 이 를 가 져 옵 니 다.
다음은 사용자 입 출력 코드 입 니 다.
<span style="font-size:14px;"> char str[100];
//
cout<<" , 100"<<endl;
//
cin.getline(str,100);
cout<<" :";
//
cout<<strlen(str)<<endl;
//
for(int i=0;i<strlen(str);i++){
cout<<str[i];
}
cout<<endl;</span>
뒤집다
입 출력 을 실현 한 후 관건 적 인 반전 문자열 입 니 다.
어떻게 뒤 집 습 니까?문자 배열 의 커서 변환??제발, 이것 은 처음에 우리 가 C 언어 를 배 울 때 사용 한 방법 이 아니 었 습 니까? 데이터 구 조 를 배 운 사람 에 게 첫 번 째 반응 은 이런 보배 인 스 택 입 니 다!
먼저 들 어가 서 나 가 는 것 이 창고 의 특성 입 니 다!이것 은 앞에서 C 언어 강화 (2) 디자인 에서 최소 요소 의 스 택 을 구 할 수 있 습 니 다.
먼저 입력 한 문자열 을 창고 에 넣 으 면 마지막 에 나 오 는 순서 가 뒤 집 히 지 않 습 니까?
그래서 우리 가 해 야 할 일 은 문자열 을 키 문자열 로 나 누 어 창고 에 넣 고 꺼 내 서 해결 하 는 것 입 니 다!
반전 함수 코드
<span style="font-size:14px;">void reverseStr(char * str){
// ,
char * p;
vector<char*> vt;
const char * split = " ";
p = strtok (str,split);
while(p!=NULL) {
//cout<<p;
vt.push_back(p);//
p = strtok(NULL,split); //
}
// ,
while(vt.size()>0){
cout<<vt[vt.size()-1]<<" ";
vt.pop_back();
}
cout<<endl;
}</span>
전체 소스 코드
<span style="font-size:14px;">#include <stdio.h>
#include<stdlib.h>
#include <iostream>
#include<sstream>
#include <vector>
using namespace std;
/**
。
: , , 。
。 , 。
“I am a student.”, “student. a am I”。
1. ,
2. ,
*/
void reverseStr(char * str){
// ,
char * p;
vector<char*> vt;
const char * split = " ";
p = strtok (str,split);
while(p!=NULL) {
//cout<<p;
vt.push_back(p);//
p = strtok(NULL,split); //
}
// ,
while(vt.size()>0){
cout<<vt[vt.size()-1]<<" ";
vt.pop_back();
}
cout<<endl;
}
void main()
{
/*
*/
char str[100];
//
cout<<" , 100"<<endl;
//
//cin>>str;// !
cin.getline(str,100);
cout<<" :";
//
cout<<strlen(str)<<endl;
//
//cout<<str<<endl;
/*
// !
for(int i=0;i<100;i++){
cout<<str[i];
}
*/
for(int i=0;i<strlen(str);i++){
cout<<str[i];
}
cout<<endl;
reverseStr(str);
system("pause");
}</span>
데이터 구 조 를 배 워 야 하 는 이 유 는 데이터 구조 모델 을 만족 시 키 는 현실 적 인 문제 가 많 기 때문이다.이 문제 보다 [뒤 집기 - 스 택]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.