[대체] 8.다중반복문

2011. 2. 16. 01:12 from PROGRAMMING/C

/* 18다중반복문.c
    2단
------------
2 X 1 = 2
2 X 2 = 4
...
2 X 9 = 18
    3단
...
9 X 9 =81
*/

#include <stdio.h>
int main()
{
    int i,j;
    char jul[]="----------";
    for(i=2;i<=9;i++)
    {
        system("cls");
        printf("  %d단\n",i);
        printf("%s\n",jul);
        for(j=1;j<=9;j++)
        {
            printf("%d X %d= %2d\n",i,j,i*j);
        }//for j
        system("pause");
    }//for i

    return 0;
}

 

/*20.c 다중for
문)
i = 2   j = 1
i = 3   j = 1
i = 4   j = 1

i = 2   j = 3
i = 3   j = 3
i = 4   j = 3

i = 2   j = 5
i = 3   j = 5
i = 4   j = 5
*/

#include<stdio.h>
int main()
{
    int i,j;
    for(j=1;j<=5;j+=2)
    {
        for(i=2;i<=4;i++)
        {
            printf("i = %d\tj = %d\n",i,j);
        }
        printf("\n");
    }
    return 0;
}


/*21소수구하기.c
1~100까지의 수중 소수(prime number)를 출력(1행에 5개씩)
소수(prime number) : 약수가 2개 뿐인  수 (1과 자신으로만 나눠지는 수)
2 3 5 7 11 13 ......
...
총 개수 : XX개
------------------------------------------------------------
수? 3
1 3  개수 : 2  소수
수? 6
1 2 3 6  개수 : 4  소수X
*/

#include<stdio.h>
int main()
{
    int a,i,cn,count=0;
    for(a=1;a<=100;a++)
    {
        cn=0;//약수 개수를 세는 변수 초기치
        for(i=1;i<=a;i++)
        {
           if(a%i==0) cn++;//printf("%d ",i);
        }
        if(cn==2)//약수가 2개 뿐인 수
        {
            printf("%4d",a);
            count++;
            if (count%5==0) printf("\n");
        }
    }
    printf("\n총 개수 : %d개\n",count);

    return 0;
}

'PROGRAMMING > C' 카테고리의 다른 글

[대체] 9. 배열 예제  (0) 2011.02.17
[대체] 9.배열 ① 일차원배열  (0) 2011.02.17
[대체] 7. 반복문(do~while)  (0) 2011.02.16
[대체] 6. continue;  (0) 2011.02.16
[대체] 5. 반복문(while, 반복문에서의 break)  (0) 2011.02.16
Posted by 마마필로 :

do~while

do

{

  문1;

  문2;

}while(조건식);

한번은 {}안을 실행하고 조건식을 만족하면 do로 올라가고, 만족하지 못하면 while{}이후의 문장을 실행

 

/*16do~while.c

10 20 30 40 50
*/

#include<stdio.h>
int main()
{
    int i;
    i=10;//초기치
    do
    {
        printf("%d ",i);
        i+=10;//증감식
    }while(i<=50);//조건식
    return 0;
}

 

문)

/*17.c 평가는 평균으로 A,B,C,D,F
번호? 11
이름? 홍 길 동
국어,영어,수학??? 88 78 89
--------------------------
번호 : xx    이름 : xxx
총점 : xxx   평균 : xx.x
평가 : x

계속하시겠어요(y/ Y/n/N}?A
계속하시겠어요(y/ Y/n/N}?B
계속하시겠어요(y/ Y/n/N}?y   [y/Y]

번호? 66
...

계속하시겠어요(y/Y/n/N) ? N   [n/N]
작업종료!

 

콘솔입력함수: enter key없이 한 문자 할당

 

변수=getche();//모니터에 입력문자 나타남

변수=getch();//모니터에 입력문자 나타나지 않음


*/
#include<stdio.h>
#include<conio.h>//변수=getche();변수=getch()
#include<ctype.h>
int main()
{
    int no,a,b,c,t;
    char ch,grade,name[15];
    float ave;
    while(1)
    {
        printf("\n번호? ");
        scanf("%d",&no);
        printf("이름? ");
        fflush(stdin);
        gets(name);
        printf("국어,영어,수학??? ");
        scanf("%d%d%d",&a,&b,&c);
        t=a+b+c;
        ave=t/3.0f;
        switch((int)ave/10) //(int)98.2-->98   98/10  -->9(몫)
        {
            case 10:
            case 9:grade='A';break;
            case 8:grade='B';break;
            case 7:grade='C';break;
            case 6:grade='D';break;
            default:grade='F';break;
        }//switch
        printf("--------------------------\n");
        printf("번호 7: %d\t이름 : %s\n",no,name);
        printf("총점 : %d\t평균 : %.1f\n",t,ave);
        printf("평가 : %c\n\n",grade);
          do
          {
            printf("\n계속하시겠어요(y/Y/n/N) ? ");
            fflush(stdin);
            ch=tolower(getche());//'y','n','a'
          }while(ch!='y' && ch!='n');//주의
          if(ch=='n') break;
        }//while
        printf("\n작업종료!\n");
        return 0;
}

'PROGRAMMING > C' 카테고리의 다른 글

[대체] 9.배열 ① 일차원배열  (0) 2011.02.17
[대체] 8.다중반복문  (0) 2011.02.16
[대체] 6. continue;  (0) 2011.02.16
[대체] 5. 반복문(while, 반복문에서의 break)  (0) 2011.02.16
[대체] 4. 난수  (0) 2011.02.16
Posted by 마마필로 :

[대체] 6. continue;

2011. 2. 16. 01:09 from PROGRAMMING/C

i) for에서 continue;를 만나면 continue;이하의 문장은 실행하지 않고 증감식으로 분기

ii) while, do ~ while에서 continue;를 만나면 continue;이하의 문장은 실행하지 않고 조건식으로 분기

 

문)

/*14continue.c
100 ~ 200까지의 수중 7의 배수가 아닌수의 합을 구하면?(for/continue)
*/
#include<stdio.h>
int main()
{
    int i,s=0;
    for(i=100;i<=200;i++)
    {
        if(i%7==0) continue;
        s+=i;
    }
    printf("7의 배수가 아닌수의 합 : %d\n",s);
    return 0;
}
/*
  for(i=100;i<=200;i++)
    {
        if(i%7!=0) s+=i;//printf("%d ",i);
    }
    printf("7의 배수가 아닌수의 합 : %d\n")
*/

문)

/*15while~continue.c
100 ~ 200까지의 수중 7의 배수가 아닌수의 합을 구하면?(for)
ii)while, do ~ while에서 continue;를 만나면 continue;이하의 문장은 실행하지 않고 조건식으로 분기
*/
#include<stdio.h>
int main()
{
    int i,s=0;
    i=99;
    while(i<200)
    {
        i++;//증감식의 위치 주의
        printf("%d\n",i);
        if(i%7==0) continue;
        s+=i;//printf("%d ",i);

    }

    printf("7의 배수가 아닌수의 합 : %d\n",s);
    return 0;
}

'PROGRAMMING > C' 카테고리의 다른 글

[대체] 8.다중반복문  (0) 2011.02.16
[대체] 7. 반복문(do~while)  (0) 2011.02.16
[대체] 5. 반복문(while, 반복문에서의 break)  (0) 2011.02.16
[대체] 4. 난수  (0) 2011.02.16
[대체] 3. 반복문(for)  (0) 2011.02.16
Posted by 마마필로 :

while(조건식)

{

  문1;

  문2;

}

조건식을 만족하면 {}안을 실행하고, 만족하지 못하면 while{}이후의 문장을 실행

ex.)

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

    int i;
    i=10;
    while(i<50)
    {
        printf("%d",i);
        i+=10;//i=i+10
    }
    return 0;
}
/*
  int i;
  for(i=10;i<=50;i+=10))
  {
      printf("%d",i);
  }
*/

반복문에서의 break;는 가장 가까운 반복문을 탈출!!

 

문) 1+2+...100, 1~100까지 더하는 중에 처음으로 합이 2500을 넘을때 마지막으로 더한 항값은?

/*13break.c
*/
#include<stdio.h>
int main()
{
    int i,s=0;
    for(i=1;i<=100;i++)
    {
        s+=i;
        if(s>2500) break;
    }
    printf("마지막항 값 : %d\n",i);
    return 0;
}

 

'PROGRAMMING > C' 카테고리의 다른 글

[대체] 7. 반복문(do~while)  (0) 2011.02.16
[대체] 6. continue;  (0) 2011.02.16
[대체] 4. 난수  (0) 2011.02.16
[대체] 3. 반복문(for)  (0) 2011.02.16
[대체] 2. 증감연산자, 전위연산자, 후위연산자  (0) 2011.02.16
Posted by 마마필로 :

[대체] 4. 난수

2011. 2. 16. 01:07 from PROGRAMMING/C

4. 난수 : 컴퓨터가 임의로 발생 시키는 수

rand()

1) a<=난수<=b를 구하려면?

rand()%(상-하+1)+하;

rand()%(b-a+1)+a;

 

문) 난수를 5개 발생

#include<stdio.h>
#include<stdlib.h>//rand()
#include<time.h>//time()
int main()
{
    int r,i;
    //srand(unsigned int)time(NULL));
    srand(time(NULL));
    for(i=1;i<=5;i++)//i발생회수
    {
        r=rand();
        printf("%d\n",r);
    }
    return 0;
}

 

문) 주사위를 100번던져 그의 눈을 출력

 

/*9주사위.c
문)주사위를 100번던져 그의 눈을 출력
4 5 2 2 ...
......
1의 눈의 개수 : xx개
2의 눈의 개수 : xx개
...
6의 눈의 개수 : xx개
    1<=주사위<=6
    0+1<=rand()%6+1<=5+1
    1<=rand()%6+1<=6
*/

#include<stdio.h>
#include<stdlib.h>//rand()
#include<time.h>//time()
int main()
{
    int r,i,c1,c2,c3,c4,c5,c6;
    //srand(unsigned int)time(NULL));
    //c1=0;c2=0;
    c1=c2=c3=c4=c5=c6=0;//할당순서 우 ---> 좌
    //srand(unsigned int)time(NULL));
    srand(time(NULL));
    for(i=1;i<=100;i++)//i발생회수
    {
        r=rand()%(6-1+1)+1;//r=rnad()%6+1;
        printf("%d ",r);
        if(i%10==0) printf("\n");
        switch(r)
        {
            case 1:c1++;break;
            case 2:c2++;break;
            case 3:c3++;break;
            case 4:c4++;break;
            case 5:c5++;break;
            case 6:c6++;break;
        }
    }
    printf("-----------------------\n");
    printf("1의 눈의 개수 : %d개\n",c1);
    printf("2의 눈의 개수 : %d개\n",c2);
    printf("3의 눈의 개수 : %d개\n",c3);
    printf("4의 눈의 개수 : %d개\n",c4);
    printf("5의 눈의 개수 : %d개\n",c5);
    printf("6의 눈의 개수 : %d개\n",c6);
    printf("%d\n",c1+c2+c3+c4+c5+c6);

    return 0;
}

 

문) 덧셈

 

/* 10.덧셈.c 문)2자리수 난수, 1자리수난수를 발생시켜 4개의 덧셈문제를 풉니다.
1)87 + 7 = ? 94 (사용자 답 입력)
    정답
2)55 + 2 = > 60
    오답!
...
------------------------------------
정답수 : x개 xx점 (1문제당 20점)
*/

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
int main()
{
    int a,b,sdap,i,jdap,cn;
    char pan[6];
    srand((unsigned int)time(NULL));
    cn=0;
    for(i=1;i<=5;i++)
    {
        a=rand()%(99-10+1)+10;//10<=2자리수 난수 <=99
        b=rand()%(9-0+1)+0;//0<=1자리수난수<=9
        jdap=a+b;//정답지
        printf("%d) %d + %d =?",i,a,b);//문제 제시
        scanf("%d",&sdap);//학생답 입력
        if(sdap==jdap)
        {strcpy(pan,"정답!");}
        else
        strcpy(pan,"오답!");
        printf(" %s\n",pan);
    }
    printf("--------------------\n");
    printf("정답수 : %d개 %d점\\n",cn,cn*20);
     return 0;
}

 

문) 사칙연산

 

/* 11.사칙연산.c 문)2자리수 난수, 1자리수난수를 발생시켜 5개의 덧셈문제를 풉니다.
10ㅡ=2자리수 난수<=99, 0<=1자리수난수<=9

*/

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
int main()
{
    int a,b,sdap,i,op,opr,jdap,cn;
    char pan[6];
    srand((unsigned int)time(NULL));
    cn=0;
    for(i=1;i<=5;i++)
    {
        a=rand()%(99-10+1)+10;//10<=2자리수 난수 <=99
        b=rand()%(9-0+1)+0;//0<=1자리수난수<=9
        op=rand()%(4-1+1)+1;//1<=연산자로 이용할 난수<=4
        //printf("op : %d\n",op);
        switch(op)
        {
            case 1: opr='+';jdap=a+b;break;
            case 2: opr='-';jdap=a-b;break;
            case 3: opr='*';jdap=a*b;break;
            case 4: opr='/';jdap=a/b;break;

                    if(b==0) b=rand()%(9-1+1)+1; // 1<=b<=9 주의
                    jdap=a/b;break;
        }

        printf("%d)  %d %c %d=?",i,a,opr,b);//문제 제시
        scanf("%d",&sdap);//학생답 입력
        if(sdap==jdap)
        {strcpy(pan,"정답!");cn++;}
        else
        strcpy(pan,"오답!");
        printf(" %s\n",pan);
    }
    printf("--------------------\n");
    printf("정답수 : %d개 %d점\\n",cn,cn*20);
     return 0;
}

Posted by 마마필로 :

[대체] 3. 반복문(for)

2011. 2. 16. 01:06 from PROGRAMMING/C

3. 반복문

for(반복횟수가 정확히 떨어지는 경우 주로 사용), while, do~while

1) for(변수=초기치;조건식;증감식)

   {

문1;

문2;

   }

 

ex1.) for를 이용하여 10,20,30,40,50을 출력하고 합 계산

#include<stdio.h>
int main()
{
    int a,s=0;
    for(a=10;a<=50;a+=10)
    {
        printf("%d\n",a);
        s+=a;
    }
    //printf("for를 탈출해서의 a값 : %d\n",a);//60
    printf("--------------\n");
    printf("합 : %d\n",s);
    return 0;
}

 

Q5)

/* 5.c 수를 입력하여 그 수의 factorial값을 구해 아래처럼!
수? 3  [3!=1*2*3, 6!=1*2*3*4*5*6]
3! = 6
*/

#include<stdio.h>
int main()
{
    int a,i;
    double f;
    printf("수?");
    scanf("%d",&a);
    f=1,0;
    for(i=1;i<=a;i++)
    {
        f*i;//f=f*i;
    }
    //printf("%d!=%f\n"a,f);
    //printf("%d!=%e\n"a,f);//xxxxxxe+xxx
    printf("d!=%.3e\n",a,f);
    //printf("%d!=%12.3e\n"a,f);
    return 0;
    }

Q6)

① 두 수를 입력 받아, 두 수 사이의 수 출력, 합 출력

/* 6.c 수를 입력받아, 두 수 사이의 수를 출력하고 합도 출력!
a? 10
b? 20
11 12 13... 19 합 : xxx

a?
b?

...
a? 1
b? 1(같은 수의 입력시 종료!)
*/

#include<stdio.h>
int main()
{
    int a,b,i,s;
    printf("a?");
    scanf("%d",&a);
    printf("b?");
    scanf("%d",&b);
    s=0;
   
    for (i=a+1;i<b;i++)
    {
        printf("%d",i);
        s+=i;
    }
    printf("합 : %d\n",s);
    return 0;
}

② 같은 수가 입력되면 종료

/* 6.c 수를 입력받아, 두 수 사이의 수를 출력하고 합도 출력!
a? 10
b? 20
11 12 13... 19 합 : xxx

a? 2
b? 5
3 4 합 : xx

...
a? 1
b? 1(같은 수의 입력시 종료!)
*/

#include<stdio.h>
int main()
{
    int a,b,i,s,temp;
Dasi:
    printf("a?");
    scanf("%d",&a);
    printf("b?");
    scanf("%d",&b);
    if(a = b) return 0;
    if(a > b)
    {
        //방바꾸기
        temp=a;
        a=b;
        b=temp;
    }
    //printf("a=%d\tb=%d\n",a,b);
    s=0;
    for (i=a+1;i<b;i++)
    {
        printf(" %d",i);
        s+=i;
    }
    printf("합 : %d\n",s);
    goto Dasi;
    return 0;
}
Q7) 6의 약수의 갯수와 합 구하기

#include<stdio.h>
int main()
{
    int a,i,cn;
    printf("수?");
    scanf("%d",&a);
    printf("%d의 약수 : ",a);
    cn=0;
    for(i=1;i<=a;i++)
    {
        if(a%i==0)
        {
            printf("%d ",i);
            cn++;
        }

    }

 printf(", 총 개수 : %d\n",cn);
 return 0;

}

Posted by 마마필로 :

2.

증감연산자(++,--) : ++는 1증가, --는 1감소

전위연산자: ++a; --b;

후위연산자: a++; b--;

i) 전위, 후위연산자는 변수 단독으로 왔을 때는 차이가 없다.

ii) 전위, 후위연산자는 다른 것과 같이 왔을 때는 차이가 있다.

   1) 전위 : 자신이 변화후 연산에 참여

   2) 후위 : 연산에 참여후 최종적으로 자신이 참여

 

ex.)

#include<stdio.h>
int main()
{
    int a=10, b=50,s=100;
    ++a;
    --b;
    printf("a = %d\tb = %d\n",a,b);//a=11 b=49
    a++;//a=a+1;
    b--;//b=b-1;
    printf("a = %d\tb = %d\n",a,b);//a=12 b=48;
    printf("전위 연산자가 다른것과 같이 왔을 때 : 자신이 변화후 연산에 참여\n");
    s=s+ ++a;//100+13-->s
    printf("a = %d\ts = %d\n",a,s);//a=13 s=113
    t=t+ --b;//50+47 ---> t
    printf(" = %d\tt = %d\n",b,t);// b=47 t=97
    printf("후위 연산자가 다른것과 같이 왔을 때 : 연산에 참여후 최종적으로 자신이 연산에 참여\n");
    s=s+a++;//113+13--->s,a증가(14)
    printf("a=%d\ts = %d\n",a,s);//a=14 s=126
    t=t+b--;//97-47 --->t, b감소(46)
    printf("b = %d\tt = %d\n",b,t);// b=46 t=144
    return 0;
}

'PROGRAMMING > C' 카테고리의 다른 글

[대체] 6. continue;  (0) 2011.02.16
[대체] 5. 반복문(while, 반복문에서의 break)  (0) 2011.02.16
[대체] 4. 난수  (0) 2011.02.16
[대체] 3. 반복문(for)  (0) 2011.02.16
[대체] 1. 합, 배수 출력  (0) 2011.02.16
Posted by 마마필로 :

1. 10,20,30,40,50 출력/합

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

    int a,s;
    s=0;
    a=10;
aa:
    printf("%d\n",a);
    s+=a;//s=s+a
    a+=10;//a=a+10

    if(a <= 50)
    goto aa;

    printf("---------------\n");
    printf("합 : %d\n",s);
    return 0;
}

2. 1~100까지의 수중 3의 배수만 출력하고(1행에 5개씩), 그의 개수를 구하면?

① 1~100까지 출력

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

    int i;
    i=1;
aa:
    printf("%d",i);
    i+=1;//i=i+1;
    if(i <= 100)
    goto aa;

    return 0;
}

② 3의 배수만 출력

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

    int i;
    i=1;
aa:
    if(i%3==0) //3의 배수냐?
    printf("%d",i);
   
    i+=1;//i=i+1;
   
    if(i <= 100)
    goto aa;

    return 0;
}
③ 3의 배수와 갯수 출력

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

    int i,cn;
    cn=0;
    i=1;
aa:
    if(i%3==0) //3의 배수냐?
    {
        printf("%d ",i);
        cn+=1;//cn=cn+1
    }

    i+=1;//i=i+1;

    if(i <= 100)
    goto aa;
    printf("\n총 개수: %d\n",cn);
    return 0;
}
④ 1행에 5개 출력

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

    int i,cn;
    cn=0;
    i=1;
aa:
    if(i%3==0) //3의 배수냐?
    {
        printf("%3d ",i);
        cn+=1;//cn=cn+1;
        if(cn%5==0) printf("\n");
    }

    i+=1;//i=i+1;

    if(i <= 100)
    goto aa;
    printf("\n총 개수: %d\n",cn);
    return 0;
}

'PROGRAMMING > C' 카테고리의 다른 글

[대체] 6. continue;  (0) 2011.02.16
[대체] 5. 반복문(while, 반복문에서의 break)  (0) 2011.02.16
[대체] 4. 난수  (0) 2011.02.16
[대체] 3. 반복문(for)  (0) 2011.02.16
[대체] 2. 증감연산자, 전위연산자, 후위연산자  (0) 2011.02.16
Posted by 마마필로 :