c++ char형 출력
조회수 524회
제가 123 456 입력받고 321 654 출력을 하려고 합니다 제 형식에서 무엇이 잘못되었나요..?
int main() {
int t = 0;
char str1[4];
char str2[4];
cin >> str1 >> str2;
char str1copy[4] = { 0 };
char str2copy[4] = { 0 };
for (int i = 2; i >= 0; i--) {
str1[i] = str1copy[t];
t++;
}
for (int a = 2; a >= 0; {
str2[a] = str2copy[t];
t++;
}
str1copy[3] = 0; str2copy[3] = 0;
cout << str1copy[t]<< str2copy[t];
}
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
4군데가 틀렸습니다.
우선 두번째 for루프 자체가 오타났네요.
for (int a = 2; a >= 0; {
위의 라인을 아래와 같이 바꾸세요.
for (int a = 2; a >= 0; a--) {
두번째 문제는 str1, str2의 값을 str1copy, str2copy에 복사하려고 하는 것 같은데, 그렇다면 아래의 문장의 좌우가 거꾸로 된거지요.
str1[i] = str1copy[t]; str2[a] = str2copy[t];
위의 문장을 아래와 같이 바꾸세요.
str1copy[t]=str1[i]; str2copy[t]=str2[a];
세번째 문제는 첫번째 for루프에서 증가된 t를 두번째 for루프에서 그대로 사용하고 있다는 점입니다. 두 번째 for루프가 시작하기 전에
t=0;
으로 초기화해 줘야 합니다.마지막 잘못된 곳은 cout이 있는 곳입니다. char형 배열의 문자열을 출력하려면 배열의 이름만 지정해야 합니다.
cout << str1copy[t]<< str2copy[t];
위의 문장을 아래와 같이 바꾸세요.
cout << str1copy<<' '<< str2copy;
아래가 수정된 전체 코드입니다.
#include <iostream> using namespace std; int main() { int t = 0; char str1[4]; char str2[4]; cin >> str1 >> str2; char str1copy[4] = { 0 }; char str2copy[4] = { 0 }; for (int i = 2; i >= 0; i--) { str1copy[t] = str1[i]; t++; } t = 0; for (int a = 2; a >= 0; a--) { str2copy[t] = str2[a]; t++; } str1copy[3] = 0; str2copy[3] = 0; cout << str1copy << ' ' << str2copy; return 0; }
결과
보통은 아래와 같이 짤것 같네요.
#include <iostream> using namespace std; int main() { char str1[20] = { 0, }; char str2[20] = { 0, }; char str1_copy[20] = { 0, }; char str2_copy[20] = { 0, }; cin >> str1 >> str2; int str1_len = strlen(str1); int str2_len = strlen(str2); for (int i = 0; i < str1_len; ++i) str1_copy[i] = str1[str1_len - 1 - i]; for (int i = 0; i < str2_len; ++i) str2_copy[i] = str2[str2_len - 1 - i]; cout << str1_copy << ' ' << str2_copy << '\n'; return 0; }
결과
-
(•́ ✖ •̀)
알 수 없는 사용자
- 선생님 정말 감사합니다............ ㅠㅠㅠㅠㅠㅠㅠㅠㅠ 그런데 멍청한 질문이지만 복사할 때 str1과 str1copy의 순서가 바뀌는 것이 왜 중요한 것인가요..? 알 수 없는 사용자 2021.5.30 20:57
- a=b;라는 문장은 a와 b가 같다라는 뜻이 아니고 b에 있는 내용을 a에 저장하라는 뜻입니다. str1copy에 좌우가 바뀐 내용을 저장하고 싶은 거니까 str1copy에 str1의 내용을 인덱스 잘 생각해 가면서 저장해야 합니다. 알 수 없는 사용자 2021.5.30 21:11
- 감사합니다.......!!!! 알 수 없는 사용자 2021.5.30 22:17
-
댓글 입력