'C'에 해당되는 글 116건

  1. 2007.11.02 1차원 배열 by 청웨일
  2. 2007.11.02 자료형, 변수 by 청웨일
  3. 2007.11.02 switch 문 by 청웨일
  4. 2007.11.02 break, continue by 청웨일
  5. 2007.11.02 중첩된 반복문 by 청웨일

1차원 배열

C : 2007. 11. 2. 16:34

*배열 - 형이 모두 같고 같은 이름으로 참조되는 변수들의 집합.

               일련의 관련된 자료들을 편리하게 처리하기 위한 방법을 제공한다.

*

자료형 배열이름[원소개수];

*


int array[10];  //10개의 원소를 갖는 정수형 배열 array


p.170
#include <stdio.h>
int main(void)
{
 int sqrs[10];                  //sqrs[0]~sqrs[9]까지 선언
 int i;

 for(i=1; i<11; i++) sqrs[i-1] = i*i;
 for(i=0; i<10; i++) printf("%d  ", sqrs[i]);

 return 0;
}


p.171_1
#include <stdio.h>
int main(void)
{
 int temp[31], i, min, max, avg;
 int days;
 printf("How many days in the month?");
 scanf("%d", &days);
 for(i=0; i<days; i++) {
  printf("Enter noonday temperature for day %d:", i+1);
  scanf("%d", &temp[i]);
 }


//평균
 avg = 0;
 for(i=0; i<days; i++) avg = avg + temp[i];
 printf("Average temperature: %d\n", avg/days);


//최대값    최소값
 min = 200;   //초기화
 max = 0;
 for(i=0; i<days; i++) {
  if(min>temp[i]) min = temp[i];
  if(max<temp[i]) max = temp[i];
 }

 printf("Minimum temperature: %d\n", min);
 printf("Maximum temperature: %d\n", max);

 return 0;
}


p.172_2

#include <stdio.h>
int main(void)
{
 int a1[10], a2[10];
 int i;

 for(i=1; i<11; i++) a1[i-1] = i;                      //a1[]안에 i 값을 넣는다.
 for(i=1; i<11; i++) a2[i-1] = a1[i-1];            //a2[]안에 a1[]값을 넣는다.
 for(i=1; i<11; i++) printf("%d ", a2[i-1]);      //a2[]를 출력한다.

 return 0;
}


p.173_버블정열
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
 int item[100], a, b, t, count;

//수들을 읽는다.

 printf("How many number? ");
 scanf("%d", &count);


 for(a=0; a<count; a++) scanf("%d", &item[a]);


//버블정렬로 수를 정렬한다.

 for(a=1; a<count; ++a)
  for(b=count-1; b>=a; --b) {
   if(item[b-1] > item[b]) {                 //인접한 원소를 비교한다.
    t=item[b-1];                                      //원소들을 교환한다.
    item[b-1] = item[b];
    item[b] = t;
   }
  }
  for(t=0; t<count; t++) printf("%d  ", item[t]);       //정렬된 리스트를 출력한다.


 return 0;
}


p.174_2 _10개 입력 받고 출력하기
#include <stdio.h>
int main(void)
{
 int num[10], i;

 for(i=0; i<10; i++) {
  printf("enter number : ");
  scanf("%d", &num[i]);
 }
 for(i=0; i<10; i++) printf("%d  ", num[i]);

 return 0;
}



* 공부하기 -구구단 출력해보기


구구단 v1
#include <stdio.h>

int main(void)
{
 int a, b, c;

    for(c=2; c<10; c++){
     for(a=c; a<10; a++)
      for(b=1; b<10; b++) printf("%dX%d=%d\n", a, b, a*b);
 }
 return 0;
}

구구단 v2
#include <stdio.h>

int main(void)
{
 int a, b;

 for(a=2; a<10; a=a+3) {
     for(b=2; b<10; b++)
   printf("%dX%d=%d\t %dX%d=%d\t %dX%d=%d\n", a, b, a*b, a+1, b, b*(a+1), a+2, b, b*(a+2));
  if(b=10) printf("\n");

 }


 return 0;
}

Posted by 청웨일

자료형, 변수

C : 2007. 11. 2. 16:31
 

* 자료형  void, char, int, float, double

* 형수정자 signed, unsigned(%u), long(%l), short(%h)

                      - 형 이름앞에 위치한다.


   char                                  8                          -128 ~ 127                        

   unsigned char                    8                               0 ~ 55                        

   signed char                        8                          -127 ~ 27                        

   int                                  16/32                  -32,768 ~ 32,767               

   unsigned int                    16/32                           0 ~ 5,535                  

   signed int                       16/32                              = int                      

   short int                           16                                 = int                      

   unsigned short int             16                              0 ~ 65,535             

   signed short int                16                                 = short int          

   long int                             32          -2,147,483,647 ~ 2,147,483,647

   signed long int                  32                                 = long int           

   unsigned long int               32                              0 ~ 294,967,295 

   float                                 32                              6 자리수               

   double                              64                              10 자리수                

   long double                       80                              10 자리수  

     

      


*전역변수 - 함수 밖에서 선언, 선언하는 블럭의 시작부분에서 선언

                        블럭내의 어떤 문장보다 앞에 위치해야 한다.

*지역변수 - 함수 내에서 선언, 선언된 블럭 밖에선 사용할수 없다.(=매개변수)

*변수의 초기화

           - 초기화 되지 않은 전역변수는 자동으로 0을 저장한다.

           - 초기화되지 않은 지역변수는 어떤 값을 저장할지 알수 없다.

*상수 - 변경 되지 않는 고정된 값.


Posted by 청웨일

switch 문

C : 2007. 11. 2. 16:28

*여러가지 중에 한가지를 선택하게 할수 있다.
*조건이 일치하는 것만 검사한다.
* 변수 int, char형만 쓸수 있다.
*중괄호를 붙이지 않는다.
*ANSI C표준에서는 257개의 case 문을 허용한다.
*두개 이상의 case상수가 같은 값이 될수 없다.
*switch문은 중첩될수 있다.(15단계의 중첩을 허용한다.)

switch(변수) {

   case 상수(정수, 문자):

       실행문1;

       break;

   case 상수(정수, 문자):

       실행문2;

       break;

   case 상수(정수, 문자):

       실행문3;

       break;

......

   default:

       실행문;

       break;

}


p.125
#include <stdio.h>
int main(void)
{
 int i;

 printf("Enter a number between 1 and 4 : ");
 scanf("%d", &i);

 switch(i) {
 case 1:
  printf("one");
  break;
 case 2:
  printf("two");
  break;
 case 3:
  printf("three");
  break;
 case 4:
  printf("four");
  break;
 default:
  printf("unrecognized number");
 }

 return 0;
}

p.126_1
#include <stdio.h>
int main(void)
{
 int a, b;
 char ch;

 printf("Do you want to:\n");
 printf("Add, Subtract, Multiply, or Divide?\n");

 do {
  printf("Enter first letter: ");
  ch = getchar();
  printf("\n");
 }while(ch != 'A' && ch != 's' && ch != 'M' && ch != 'D');

 printf("Enter first number: ");
 scanf("%d", &a);
 printf("Enter second number: ");
 scanf("%d", &b);

 switch(ch) {
 case 'A' : printf("%d", a+b);
  break;
 case 'S' : printf("%d", a-b);
  break;
 case 'M' : printf("%d", a*b);
  break;
 case 'D' : if(b != 0) printf("%d", a/b);
  break;
 }

 return 0;
}

p.127_2
#include <stdio.h>
#include <conio.h>

int main(void)
{
 char ch;

 do {
  printf("\nEnter character, q to quit: ");
  ch = getche();
  printf("\n");

  switch(ch) {
   case 'a' :
    printf("Now is ");
   case 'b' :
    printf("the time ");
   case 'c' :
    printf("for all good men");
    break;
   case 'd' :
    printf("The summer ");
   case 'e' :
    printf("soldier ");
  }
 }while(ch != 'q');

 return 0;
}

p.128_3
#include <stdio.h>
#include <conio.h>

int main(void)
{
 char ch;

 printf("Enter the letter: ");
 ch = getche();
 
 switch(ch) {
  case 'a' :
  case 'e' :
  case 'i' :
  case 'o' :
  case 'u' :
  case 'y' :
   printf(" is a vowel");
   break;
  default:
   printf(" is a consonant");
 }

 return 0;
}

p.129_2
#include <stdio.h>
#include <conio.h>

int main(void)
{
 char ch;
 int i=0, j=0, k=0;

 printf("Enter the letter: ");

 do {
  ch = getche();


  switch(ch) {
   case '.' :
   case ',' :
   case ';' :
    i++;
    break;
   case '3':
    j++;
    break;
   default:
    k++;
    break;
  }
 }while(ch!='\r');

 printf("\n\n");
 printf("Mark ', . ;': %d\n", i);
 printf("number 3: %d\n", j);
 printf("alpabet : %d\n", k);
 return 0;
}

Posted by 청웨일

break, continue

C : 2007. 11. 2. 16:25
* break; - 주어진 종료식을 무시하고 반복문 내의 어디에서나 반복을 빠져나가게 해준다.


#include <stdio.h>
int main(void)
{
 int i;

 for(i=1; i<100; i++) { //99까지 반복문을 돌린다.
  printf("%d", i);
  if(i==10) break;       //10까지만 출력한다.
 }
 return 0;
}


* continue; - 반복문의 중간에서 만나면 현재 위치와 조건 검사 위치 사이의 모든 코드를
                   수행하지 않고 바로 조건검사 위치로 이동한다.


#include <stdio.h>
int main(void)
{
 int x;
 for(x=0; x<100; x++) {
  continue;                           //아무것도 출력하지 않는다.
  printf("%d", x);
 }
 return 0;
}
Posted by 청웨일

중첩된 반복문

C : 2007. 11. 2. 16:22
 

하나의 반복문안에 또 하나의 반복문을 중첩시킨다.

ANSIC표준에서는 적어도 15단계의 중첩까지 허용한다.


p117_예제 1
#include <stdio.h>

int main(void)
{
   int answer, count, chances, right;

   for(count=1; count<11; count++) {
      printf("What is %d+%d?", count, count);
      scanf("%d", &answer);
      if(answer == count+count) printf("Right!\n");
      else {
  printf("Sorry, you're wrong\n");
  printf("Try again\n");

  right = 0;

      //중첩된 for
  for(chances=0; chances<3 && !right; chances++) {
     printf("\nWhat is %d+%d?", count, count);
     scanf("%d", &answer);
     if(answer==count+count) {
        printf("Right!\n");
        right = 1;
     }
  }
  if(!right) printf("the answer is %d.\n", count+count);
      }
   }
   return 0;
}

p.118_예제 2
#include <stdio.h>

int main(void)
{
 int i, j, k;
 for(i=0; i<3; i++)
  for(j=0; j<26; j++)
   for(k=0; k<2; k++) printf("%c", 'A'+j);

 printf("\n\n");
 return 0;
}

p.118_연습 1
#include <stdio.h>

int main(void)
{
 int i, j, p;


 for(i=2; i<11; i++) {
  p = 1;                       //p는 참이다.
  for(j=2; j<=i/2; j++) {
   if(!(i%j)) p = 0;
   //if(i%j == 0) p = 0;   같은 의미다.
  }
  if(p==1) printf("%d\t", i);
 }

 return 0;
}

p.118_연습 2
#include <stdio.h>
#include <conio.h>

int main(void)
{
 int i;
 char ch;

 printf("enter: ");
 ch = getche();
 printf("\n\n");

 for(i=0; i<ch; i++) {
  if(i%10 == 0) printf("\n");
  printf(".");
 }

 printf("\n\n");
 return 0;
}


*공부하기

for문 사용하여 구구단 만들기.


Posted by 청웨일