책문제 풀기 - 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 |