[c언어] 기초프로그래밍 중간고사 대비 실습문제 (1~7번)

42269 단어 c언어c언어

2022년 판 중간 대비 실습문제를 주셔따..

1

#include <stdio.h>

int main(void){
    int cnt=0;
    for(int a=1;a<=100;a++){
        for(int b=1;b<=100;b++){
            for(int c=1;c<=100;c++){
                if(cnt==2)
                    break;
                if((a*a+b*b)==c*c)
                {
                    printf("%d %d %d \n",a,b,c);
                    cnt++;
                }
            }
            if(cnt==2)
                break;
        }
        if(cnt==2)
            break;
    }
    return 0;
}
![](https://velog.velcdn.com/images/seochan99/post/33f7374c-2aa9-469a-8ec0-a24995fbeed5/image.png)

그냥 단순한 중첩반복문 문제이다.

2

//코드 1 (2개의 주사위)
#include <stdio.h>

int main(void){
    for(int i=1;i<=6;i++)
    {
        for(int j=1;j<=6;j++)
        {
            if(i+j==6){
                printf("(%d,%d) ",i,j);
            }
        }
    }
    return 0;
}
//코드 2 (3개의 주사위)
#include <stdio.h>

int main(void){
    for(int i=1;i<=6;i++)
    {
        for(int j=1;j<=6;j++)
        {
            for(int k=1;k<=6;k++){
                if(i+j+k==10){
                    printf("(%d,%d,%d) ",i,j,k);
                }
            }
        }
    }
    return 0;
}

이 또한 단순 중첩반복문 문제이다.

3

#include <stdio.h>

int main(void){
    double a,b,c;
    double result=0;
    char op1,op2;
    printf("정수 3개와 operator 2개를 입력하세요 : ");
    scanf("%lf %lf %lf %c %c",&a,&b,&c,&op1,&op2);
    
if(op1 == '+' || op1 == '-'){
        if(op1 == '+'){
            result = a+b;
        }
        else{ // op1 minus
            result = a-b;
        }
        printf("< %.2f %c %.2f > %c %.2f =",a,op1,b,op2,c);
    }
    else{
        if(op1=='*')
            result=a*b;
        else
            result= a/b;

        printf("%.2f %c %.2f %c %.2f =",a,op1,b,op2,c);
    }
    
    if(op2=='+')
        result+=c;
    else if(op2=='-')
        result-=c;
    else if(op2=='*')
        result*=c;
    else
        result/=c;
    
    printf(" %.2f\n",result);
    return 0;
}

계산기 만드는 문제인데... 예외처리를 완벽하게 해주어야할것같다.
그냥 둔순히 사칙연산만 넣어서 이렇게 작성했는데, 사용자가 잘못된 값을 입력했을때의 예외처리를 해주고싶지만
그정도로 엄밀히 채점하지않을것같아서 그냥 단순하게 접근했다.

4

#include <stdio.h>

int main(void){
    int gongcha,gongbi,want,result=1;
    printf("공차와 공비, 출력항목을 입력 : ");
    scanf("%d %d %d",&gongcha,&gongbi,&want);
    
    printf("등차수열 : ");
    for(int i=1;i<want;i++)
    {
        printf("%d ",result);
        result+=gongcha;
    }
    
    result=1;
    
    printf("\n등비수열 : ");
    for(int i=1;i<want;i++)
    {
        printf("%d ",result);
        result*=gongbi;
    }
    return 0;
}

이 문제는 단순 반복문 활용 문제이다.

5

#include <stdio.h>
#include <stdlib.h> 


int main(void){
    int num;
    double n1,n2,n3,n4,n5,n6,n7,n8,n9;
    
    n1=n2=n3=n4=n5=n6=n7=n8=n9=0;
    
    printf("임의의 숫자 20개 출력\n");
    srand(30);
    
    for(int i=0;i<20;i++){
        num = rand()%9+1;// 1~9
        printf("%d ",num);
        
        switch (num) {
            case 1:
                n1++;
                break;
            case 2:
                n2++;
                break;
            case 3:
                n3++;
                break;
            case 4:
                n4++;
                break;
            case 5:
                n5++;
                break;
            case 6:
                n6++;
                break;
            case 7:
                n7++;
                break;
            case 8:
                n8++;
                break;
            case 9:
                n9++;
                break;
        }
    }
    
    printf("\n");
    
    printf("1 횟수 : %.f 확률 : %.2f\n",n1,n1/20*100);
    printf("2 횟수 : %.f 확률 : %.2f\n",n2,n2/20*100);
    printf("3 횟수 : %.f 확률 : %.2f\n",n3,n3/20*100);
    printf("4 횟수 : %.f 확률 : %.2f\n",n4,n4/20*100);
    printf("5 횟수 : %.f 확률 : %.2f\n",n5,n5/20*100);
    printf("6 횟수 : %.f 확률 : %.2f\n",n6,n6/20*100);
    printf("7 횟수 : %.f 확률 : %.2f\n",n7,n7/20*100);
    printf("8 횟수 : %.f 확률 : %.2f\n",n8,n8/20*100);
    printf("9 횟수 : %.f 확률 : %.2f\n",n9,n9/20*100);
    
    
    
    return 0;
}

작년 기출이랑 비슷한 문제이다.

6

#include <stdio.h>

int main(void){
    int sum1,sum2,sum3;
    int cnt=1;
    
    sum1=sum2=sum3=0;
    
    //while문
    while(cnt<100){
        if(cnt%3==0){
            sum1+=cnt;
        }
        cnt++;
    }
    
    
    //for문
    for(int i = 1;i<100;i++){
        //3의 배수
        if(i%3==0){
            sum2+=i;
        }
    }
    
    //Do while
    cnt=1;
    do{
        if(cnt%3==0){
            sum3+=cnt;
        }
        cnt++;
        
    }while(cnt<100);
    
    printf("While : %o(8)\n",sum1);
    printf("For : %d(10)\n",sum2);
    printf("Do..While: %x(16)\n",sum3);
    
    return 0;
}
![](https://velog.velcdn.com/images/seochan99/post/4ffaf6d9-4ee4-453f-b994-e08026491f7f/image.png)

8진수 출력 : %o
10진수 출력 : %d
16진수 출력 : %x

인것만을 유의하면 쉽게 해결할 수 있는 문제이다.

7

#include <stdio.h>
#include <time.h>

//difftim()

int main(void){
    int i=0;
    
    time_t start,end;
    
    printf("1,000,000,000 실행 결과\n");
    
    start = time(NULL);
    while (i<1000000000) {
        i+=1;
    }
    end=time(NULL);
    
    printf("i+=1 time : %.3fs\n",difftime(end, start));
    
    i=0;
    start = time(NULL);
    while (i<1000000000) {
        i++;
    }
    end=time(NULL);
    
    printf("i++ time : %.3fs\n",difftime(end, start));
    return 0;
}

초의 소수점까지 출력해야한다.
그렇기에 difftim()을 사용해주면 값을 뺀값을 실수형까지 출력해준다.

difftim(start,end) = start - end 초를 출력한다.

좋은 웹페이지 즐겨찾기