c언어 공부 - 소수출력 프로그램, 대소문자 변환 프로그램

2022. 1. 26. 19:28C언어

728x90

 

소수를 출력하는 프로그램이다.

# include <stdio.h>

int main(void)
{
	int i = 1, j, k;
	int count = 0;
	int n=0;
	printf("입력하신 수 이하의 소수를 출력해주는 프로그램입니다.\n");
	scanf("%d", &j);
	while (j < 2)
	{
		printf("2이상의 정수를 입력해주세요\n");
		scanf("%d", &j);
	}
	for (i = 2; i <= j; i++)
	{
		
		for (k = 1; k <= i; k++)
		{
			if (i % k == 0)
			{
				n += 1;
			}

		}
		if (n == 2)
		{
			count++;
			printf("%d\t", i);
			if (count % 5 == 0)
			{
				printf("\n");
			}
		}
		n = 0;
	}
	return 0;
}

이를 통해서 반복문,특히 n=0을 어디에 넣어야 하는 지 그리고 \t에 관해서도 알게되었다.

\t은 9칸만큼 건너띄는 것이 아니라 9칸마다 이미 지정되있다는 사실을 알았다.

 

 

아스키 코드를 이용하여 소문자는 대문자로 대문자는 소문자로 바꿔주는 프로그램을 짜보았다.

# include <stdio.h>

int main(void)
{
	char str[100];
	int i;

	printf("영문을 소문자->대문자, 대문자->소문자로 바꾸는 프로그램입니다.\n");
	printf("문장을 입력해주세요 : ");

	gets(str);
	for (i = 0; str[i] != '\0'; i++)
	{
		if ((str[i] >= 'A') && (str[i] <= 'Z'))
		{
			str[i] += ('a' - 'A');
		}
		else if ((str[i] >= 'a') && (str[i] <= 'z'))
		{
			str[i] -= ('a' - 'A');
		}

	}

	printf("바뀐 문장 : ");
	puts(str);

	return 0;
}

gets를 사용한 것은 scanf함수는 띄어쓰기르 인식하지 못하기 때문이다.

대소문자변환으로 아스키코드를 이용했는데 아스키코드란 각 문자별로 할당된 숫자가 있는 것이다.

아스키코드에는 규칙들이 일정한 규칙이 있고 이를 이용해 대소문자를 변환한 것이다.

 

이번에는 함수를 이용하여 대소문자변환 프로그램을 짜보았다.

# include <stdio.h>
# include <ctype.h>


int main(void)
{
	int i;
	char str[100];

	gets_s(str, sizeof(str));   
									   
	for (i = 0; i < strlen(str); i++)
	{
		if (isupper)
		{
			str[i] = tolower(str[i]);
		}
        	else if (islower(str[i]))
		{
			str[i] = toupper(str[i]);
		}
		
	}
	puts(str);    

	return 0;
}

gets_s함수는 gets함수와는 다르게 인자가 하나 더 필요하다.

issupper등의 함수는 문자 하나를 대상으로 한다.

 

이상입니다.

728x90