책문제 풀기 - 1

2021. 11. 9. 20:26코딩/C언어

231P-3번문제

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>

int main(void)
{
	char str1[80], str2[80];
	char temp[80];

	printf("두 문자열 입력 : ");
	scanf("%s %s", str1, str2);
	printf("바꾸기 전 : %s, %s\n", str1, str2);
	strcpy(temp, str1);
	strcpy(str1, str2);
	strcpy(str2, temp);
	printf("바꾼 후 %s, %s\n", str1, str2);

	return 0;
}

2. P231의 3번을 변형하여 아래와 같이 출력 되도록 프로그램을 작성 한다.

2.1~2.3을 while(1)문으로 연속 실행 하되, 입력 문자열이 exit이면 실행을 종료하고

현재까지 입력한 가장 긴 문자열과 가장 짧은 문자열을 출력 한다.

2.1 두 문자열을 입력한다.

단 입력한 문자열이 exit이면 프로그램 실행을 종료 한다.

2.2 두 문자열의 길이를 출력 한다.

2.3 두 문자열을 합쳐서 출력 한다.

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>

int main(void) {
	char str1[80], str2[80]; //문자열을 입력받음
	char temp[80];
	char shortstr[80] = { 0,};//가장짧은 문자열을 저장할 변수
	char longstr[80] = { 0,};//가장긴 문자열을 저장할 변수
	int longest = 0;
	int shortest = 80;
	printf("-----문자열 조합 program-----\n");
	while(1)
	{
		
		printf("첫번째 문자열 입력 :");
		scanf("%s", str1, sizeof(str1));

		if (longest < strlen(str1))
			{
				longest = strlen(str1);
				strcpy(longstr, str1);
			}

		if (shortest > strlen(str1))
			{
				shortest = strlen(str1);
				strcpy(shortstr, str1);
			}

		if (strcmp(str1, "exit") == 0)
			{
				break;
			}
		printf("두번째 문자열 입력 :");
		scanf("%s", str2);

		if (longest < strlen(str2))
			{
				longest = strlen(str2);
				strcpy(longstr, str2);
			}

		if (shortest > strlen(str2))
			{
				shortest = strlen(str2);
				strcpy(shortstr, str2);
			}

		if (strcmp(str2, "exit") == 0)
			{
				break;
			}
		printf("첫번째 문자열 %s 길이 : %d \n", str1, strlen(str1));
		printf("첫번째 문자열 %s 길이 : %d \n", str2, strlen(str2));

		
		strcat(str1, str2);

		printf("합친 문자열 : %s \n",str1 );
		

		printf("\n \n");



	}
	printf("가장긴 문자열 : %s \n", longstr);
	printf("가장짧은 문자열 : %s \n", shortstr);
	return 0;
}

 

303P-3번문제

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>

int main(void)
{
	char ch;
	printf("문자입력: ");
	scanf("%c", &ch);
	printf("%c문자의 아스키코드 값: %d\n", ch, ch);
    return 0;
}

4. P303의 2번 문제를 참고하여 아래와 같이 실행 되도록 프로그램을 작성 한다.

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>

int main()
{
	char ch;
	int i = 0;
	int binary[8] = { 0 }; // 바이너리 {0,0,0,0,0,0,0,0}
	
	printf("----실행 결과----\n");

	while (1)
	{
		printf("\n");
		printf("문자입력 :");
		scanf("%s", &ch);
		
		
		if (ch == 'x') //ch에 x가 할당되면 break
		{
			break;
		}

		int num = (ch); //문자입력을 위해 ch값을 입력하면 이쪽 num에도 입력이 된다

		printf("DEC    HEX    OCT    BINARY\n");
		printf("%d     %x      %o   ", ch, ch, ch);
		
		while (1)
		{
			binary[i] = num % 2; //바이너리는 2진수 이기 때문에 0,1중 하나만 나오도록 % 2 가 들어간거
			num = num / 2;		// 시프트 연산자라고 보면된다?

			i++;

			if (num == 0)		// 아스키 코드 0은 null이므로 바이너리를 표시할수 없어서 break
				break;
		}
		for (int i = 7; i >= 0; --i)  //8자리 숫자까지 나타냄
		{
			printf("%d", binary[i]);
		}

		i = 0; //i값을 0으로 초기화
	}
	printf(" 프로그램이 종료 되었습니다.");

	return 0;
}

335P-5번문제

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>

int main()
{
	char ani[20];
	char why[80];
	printf("좋아하는 동물 :");
	scanf("%s", ani);
	fgetc(stdin);
	printf("좋아하는 이유 :");
	fgets(why, sizeof(why), stdin);
	printf("%s is %s", ani, why);
	return 0;
}

 

'코딩 > C언어' 카테고리의 다른 글

[자료구조] Circulr Queue / Sort(bubble, selection)  (0) 2021.11.09
책문제풀기 - 3  (0) 2021.11.09
책문제풀기 - 2  (0) 2021.11.09