C언어 두 문자열 비교 

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

int mystrcmp(char s[], char t[]); // mystrcmp 함수 선언

int main(void) {

   // 변수 선언
   char s[100];
   char t[100];

   int i = 0;
   int j = 0;
   int result;

   printf("사전 순위를 비교할 첫 번째 단어를 입력하세요: ");
   while ((s[i++] = getchar()) != '\n'); // null 문장 
   s[--i] = '\0';
   printf("사전 순위를 비교할 두 번째 단어를 입력하세요: ");
   while ((t[j++] = getchar()) != '\n'); // null 문장 
   t[--j] = '\0';

   result = mystrcmp(s, t); // mystrcmp 함수 콜 

   printf("%d\n", result);

   if (result == 1)
      printf("두 번째 단어가 사전에 먼저 나옵니다.\n");
   if (result == 0)
      printf("두 단어가 같습니다.\n");
   if (result == -1)
      printf("첫 번째 단어가 사전에 먼저 나옵니다.\n");

   return 0;
}


int mystrcmp(char s[], char t[])
{
   int result = 0;
   int i;

   int cmp_len = strlen(s) < strlen(t) ? strlen(t) : strlen(s);

   for (i = 0; i <= cmp_len; i++)
   {
      if (s[i] < t[i])
      {
         result = -1;
         break;
      }
      else if (s[i] > t[i])
      {
         result = 1;
         break;
      }
      else
         result = 0;
   }

   return result;
}

코드가 엄청 짧고 간결하다... 분석이 필요하다 

밑에 mystrcmp 부분 이해가 더 필요하다. 

1. For 문

#include <stdio.h>

int main(void)
{
	for(int i = 1; i <= 10; i++)
    {
    	printf("Hello World %d\n", i);
    }
    return 0;
}

실행결과

Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Hello World 6
Hello World 7
Hello World 8
Hello World 9
Hello World 10

2. While 문 

#include <stdio.h>

int main(void)
{
	int i = 1;
    while(i <= 10)
    {
    	printf("Hello World %d\n",i++);
    }
}

실행결과 

Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Hello World 6
Hello World 7
Hello World 8
Hello World 9
Hello World 10

3. Do while

#include <stdio.h>

int main(void)
{
	int i = 1;
    do {
    	printf("Hello World %d\n", i++);
       } while(i <= 10);
       return 0;       
}


실행결과

#include <stdio.h>

int main(void)
{
	int i = 1;
    while(i <= 10)
    {
    	printf("Hello World %d\n",i++);
    }
}

실행결과 

Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Hello World 6
Hello World 7
Hello World 8
Hello World 9
Hello World 10

4. 2중 반복문

#include <stdio.h>

int main(void)
{
	for (int i = 1; i <= 3; i++)
     { 
   		printf("첫 번째 반복문 : %d\n", i);
        
        for (int j = 1; j <=5; j++)
        {
        	printf("   두 번째 반복문 : %d\n", j);
        }
     }
     return 0;
}

실행결과 

첫 번째 반복문 : 1
	두 번째 반복문 : 1
    두 번째 반복문 : 2
    두 번째 반복문 : 3
    두 번째 반복문 : 4
    두 번째 반복문 : 5
첫 번째 반복문 : 2
	두 번째 반복문 : 1
    두 번째 반복문 : 2
    두 번째 반복문 : 3
    두 번째 반복문 : 4
    두 번째 반복문 : 5
첫 번째 반복문 : 3
	두 번째 반복문 : 1
    두 번째 반복문 : 2
    두 번째 반복문 : 3
    두 번째 반복문 : 4
    두 번째 반복문 : 5
    
    

5. 구구단 

#include <stdio.h>

int main(void)
{
	for (i = 2; i <= 9; i++)
    { 
    	for (j=1; j <= 9; j++)
        {
        	printf("%d x %d = %d\n", i, j, i*j);
        }
     }
     return 0;
}


실행결과 

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
4 x 1 = 4
4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
6 x 1 = 6
6 x 2 = 12
6 x 3 = 18
6 x 4 = 24
6 x 5 = 30
6 x 6 = 36
6 x 7 = 42
6 x 8 = 48
6 x 9 = 54
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
8 x 1 = 8
8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72
9 x 1 = 9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81

6. 별

#include <stdio.h>

int main(void)
{
	for (i = 0; i < 5; i++)
    {
    	for (j= ; j <= i; j++)
        print("*");
    }
    printf("\n");
    }
    return 0;
}

실행결과 

*
**
***
****
*****

7. 별 (역순으로)

# include <stdio.h>

int main(void)
{
	for(int i = 0; i < 5; i++)
    	{
        	for(int j = i; j < 5-1; j++)
        	{
            	printf(" ");
            }
            for(int k=0; k <= i; k++)
            {
                printf("*");
            }
            printf("\n");
         }
     return 0;
     
     
실행결과
     
      *
     **
    ***
 ****
*****

8. 피라미드 쌓기

#include <stdio.h>

int main(void)
{
	int floor;
    printf("몇 층으로 쌓겠느냐?");
    scanf_s("%d", &floor);
    for (int i = 0; i < floor; i++)
    {
    	for (int j = i; j < floor -1; j++)
        {
        	printf(" ");
        }
        for (int k = 0; k < i * 2 + 1; k++)
        {
        	printf("*");
        }
        printf("\n");
     }
     return 0;
}


실행결과
만약에 10 입력시 
           *
          ***
        *****
       *******
      *********
     ***********
    *************
   ***************
  *****************
*******************

맥과 리눅스는 scanf_s는 안되고 scanf로 해야함.

키보드로부터의 정수입력을 위한 scanf 함수의 호출

int main(void)
{
	int num;
    scanf("%d", &num);
}

// 키보드로 입력된 정수를 변수 num에 저장하라.

printf에서의 %d와는 반대로 '10진수 정수형태의 입력'을 뜻한다

printf에서의  %d = '10진수 정수형태의 출력'을 뜻한다.

 

SimpleAddFour.c

#include <stdio.h>

int main(void) {
	int result;
    int num1, num2, num3;
    
    printf("세 개의 정수 입력: ");
    scanf("%d %d %d, &num1, &num2, &num3);
    
    result=num1+num2+num3;
    printf("%d + %d + %d = %d \n", num1, num2, num3, result);
    return 0;
}

실행결과 

세 개의 정수 입력 : 4 5 6 
4 + 5+ 6 = 15

 

문제 1. 

프로그램 사용자로부터 두 정수를 입력 받아서 두 수의 뺄셈과 곱셈의 결과를 출력하는 프로그램을 작성해보자.

#include <stdio.h>

int main(void)
{
	int result;
    int num1, num2;
    
    printf("두 개의 정수 입력 :");
    scanf("%d %d", &num1, &num2);
    printf("%d - %d = %d \n", num1, num2, num1-num2);
	printf("%d x %d = %d \n", num1, num2, num1*num2);
    return 0;
}

실행결과 

만약 5와 3을 입력한다면 

5-3 = 2 
5*3 = 15

문제 2. 

프로그램 사용자로부터 세 개의 정수 num1, num2, num3를 순서대로 입력 받은 후에 계산의 결과를 출력하는 프로그램을 작성해보자.

#include <stdio.h>

int main(void){
	int num1,num2,num3
	int result;
    printf("세 개의 정수 입력: ");
    scanf("%d %d %d, &num1, &num2, &num3);
    result= num1*num2+num3;
    printf("%d x %d +%d = %d \n", num1, num2, num3, result);
    return 0;
}

실행결과

2,4,6 입력시 
2x4+6=14

문제 3.

하나의 정수를 입력받아서 그 수의 제곱의 결과를 출력하는 프로그램을 작성해보자.

#include <stdio.h>

int main(void)
{
	int num;
    printf("하나의 정수 입력: ");
    scanf("%d", &num); 
    printf("%d의 제곱의 결과: %d \n", num, num*num);
    return 0;
}

실행결과

하나의 정수 입력: 5
5의 제곱의 결과: 25

문제4.

입력받은 두 정수를 나누었을 때 얻게 되는 몫과 나머지를 출력하는 프로그램을 작성해보자. 예를 들어서 7과 2가 입력되면 몫을 ㅗ3, 나머지로 1이 출력되어야 한다.

#include <stdio.h>

int main(void)
{
	int num1, num2;
    printf("두 개의 숫자를 입력하세요")
    scanf("%d %d", &num1,&num2)
    printf("몫 %d, 나머지 %d \n", num1/num2, num1%num2);
    return 0;
}

실행결과

17과 5입력 시 

몫 3, 나머지 2 

문제5.

입력 받은 세 개의 정수 num1, num2, num3을 대상으로 다음 연산의 결과를 출력하는 프로그램을 작성해보자.

(num1-num2)x(num2+num3)x(num3%num1)

#include <stdio.h>

int main(void)
{
	int num1,num2,num3;
    int result;
    printf("세 개의 정수 입력 : ");
    scanf("%d %d %d \n", &num1,&num2,&num3);
    result=(num1-num2)*(num2+num3)*(num3%num1);
    printf("연산결과: %d \n", result);
    return 0;
}

실행결과

세 개의 정수 입력: 6 3 2
연산결과: 30

+ Recent posts