우리나라의 컴공 교육에 대한 생각이 들게 하는 면접
#include <stdio.h>
#include <stdlib.h> // func system()
void Reverse(char* szStr);
int main(int agrc,char **argv)
{
char szStr1[] = "abcde"; // 홀수 개
char szStr2[] = "abcdef"; // 짝수 개
Reverse(szStr1);
printf("%s\n",szStr1); //결과 edcba
Reverse(szStr2);
printf("%s\n",szStr2); //결과 fedcba
system("pause");
return 0;
}
void Reverse(char* szStr)
{
// 구현하시오
char *pA = szStr;
char *pB = szStr;
while(*++pB); --pB;
while( pB > pA )
{
*pA = *pA ^ *pB;
*pB = *pB ^ *pA;
*pA = *pA ^ *pB;
pA++;
pB--;
}
}
스왑시, 임시변수없이 해보았습니다~
ㅜㅜ 덧글로 하니, 코딩 습관상 너무 길어보이는게 민폐같아서 트랙백합니다.
덧) 아래로는 잡설이옵니다.
소스를 자꾸 보게되네요. 먼가 더 기괴한게 없을까하는,...
그리고 개인적인 강박이지만
if(bTemp) Run();
이라는 코드를 보면
if(bTemp)
{
Run();
}
으로 꼭, 괄호까지 해주는지라,
while(*++pB); --pB;
도 그렇게 풀어주고싶은데 그러면 소스가 길어보이고하니, 아예 while(~); 에서
어쩔수없을까 계속 보게되네요. 우아 L5 갈것같아 < 이거가지고?!
#include <stdio.h>
#include <stdlib.h> // func system()
void Reverse(char* szStr);
int main(int agrc,char **argv)
{
char szStr1[] = "abcde"; // 홀수 개
char szStr2[] = "abcdef"; // 짝수 개
Reverse(szStr1);
printf("%s\n",szStr1); //결과 edcba
Reverse(szStr2);
printf("%s\n",szStr2); //결과 fedcba
system("pause");
return 0;
}
void Reverse(char* szStr)
{
// 구현하시오
char *pA = szStr;
char *pB = szStr;
while(*++pB); --pB;
while( pB > pA )
{
*pA = *pA ^ *pB;
*pB = *pB ^ *pA;
*pA = *pA ^ *pB;
pA++;
pB--;
}
}
스왑시, 임시변수없이 해보았습니다~
ㅜㅜ 덧글로 하니, 코딩 습관상 너무 길어보이는게 민폐같아서 트랙백합니다.
덧) 아래로는 잡설이옵니다.
소스를 자꾸 보게되네요. 먼가 더 기괴한게 없을까하는,...
그리고 개인적인 강박이지만
if(bTemp) Run();
이라는 코드를 보면
if(bTemp)
{
Run();
}
으로 꼭, 괄호까지 해주는지라,
while(*++pB); --pB;
도 그렇게 풀어주고싶은데 그러면 소스가 길어보이고하니, 아예 while(~); 에서
어쩔수없을까 계속 보게되네요. 우아 L5 갈것같아 < 이거가지고?!
태그 : 글적글적잡담




덧글
프로그램쪽 공부하시나 봐요 ㅜㅜ
그래서 카테고리중에 『우리들은 전자과(わたし達は電子課)』 도 있답니다 >ㅅ<v
전기전자과에서도....C언어를 배우는군요. ^^ 왠지 잘 하실것같은 느낌이...
가만생각해보니 전 전공과목에도 프로그램언어가 있었긴 한데....프로그램이라면 쳐다도 안본다죠.
관심이 많아서, 홀로 공부하기도했습니다~
위에 쓰신 세줄짜리 XOR연산은 *pA ^= *pB ^= *pA ^= *pB; 요렇게 한줄로 처리도 가능해서 사족을 달고 가봅니다. 근데 저는 전에 이렇게 한번 썼다가 가독성 떨어진다고 한소리 들었었죠 ㅎㅎ
저도 생각하기에, 제 포스트의 소스가 가독성은 떨어집니다.
제 생각에는 위방법은 뭐 한문제에 몇개의 변수만 쓰시오
라던가 그런 ACM(?) 같은 곳에서 쓸만한 솔루션일것같습니다.