U E D R , A S I H C RSS

새싹교실/2014/배반/1주차



1. 개요

2. 내용

  • #include 와 #define
  • printf 와 scanf
  • 조건문과 반복문
  • 자료형
  • goto는 해로운 goto다

3. 과제


3.1. 내용

  • 국,영,수를 받아서 합과 평균을 구하고, 평균이 80점 이상이면 합격, 미만이면 불합격을 출력하는 코드를 작성.
  • 반복문을 통해 5회 반복하는 프로그램과 무한반복하는 프로그램을 작성.
  • 결과물은 이 아래 자신의 항목을 만들어서 업로드.

3.2. 임기찬


  • 문자 사용시 오류 방지를 위해 어쩔수없이ㅠㅠ 네이버의 도움을 받아 fflush(stdin) 사용
  • scanf 사용시 오류 방지를 위해 네이버의 도움을 받아 #pragma warning(disable:4996) 사용

  • 5번 반복하는 프로그램


  • #include <stdio.h>
    #pragma warning(disable:4996)
    
    int main()
    {
    	int kor,eng,mat,tot,ave,i,j,k;
    
    	for(k = 0;k<5;k++) {
    	printf("당신의 국어 점수를 입력하십시오.(0~100): ");
    	fflush(stdin);
    	i = scanf("%d",&kor);
    	j = 1;
    	while(j == 1){
    		if( i == 0){
    			printf("문자를 입력하지 말아 주십시오. \n");
    			printf("당신의 국어 점수를 입력하십시오(0~100): ");
    			fflush(stdin);
    			i = scanf("%d",&kor); }
    		else if ( kor < 0 || kor > 100) {
    			printf("1~100사이의 값을 입력하십시오. \n");
    			printf("당신의 국어 점수를 입력하십시오.(1~100): ");
    			i = scanf("%d",&kor); }
    		else {j = 0;}}
    
    	printf("당신의 영어 점수를 입력하십시오(0~100): ");
    	fflush(stdin);
    	i = scanf("%d",&eng);
    	j = 1;
    	while(j == 1){
    		if( i == 0){
    			printf("문자를 입력하지 말아 주십시오. \n");
    			printf("당신의 영어 점수를 입력하십시오(0~100): ");
    			fflush(stdin);
    			i = scanf("%d",&eng); }
    		else if( eng < 0 || eng > 100){
    			printf("1~100사이의 값을 입력하십시오. \n");
    			printf("당신의 영어 점수를 입력하십시오.(1~100): ");
    			i = scanf("%d",&eng); }
    		else{j = 0;}}
    	printf("당신의 수학 점수를 입력하십시오(0~100): ");
    	fflush(stdin);
    	i = scanf("%d",&mat);
    	j = 1;
    	while(j == 1){
    		if( i == 0){
    			printf("문자를 입력하지 말아 주십시오. \n");
    			printf("당신의 수학 점수를 입력하십시오(0~100): ");
    			fflush(stdin);
    			i = scanf("%d",&mat); }
    		else if ( mat < 0 || mat > 100) {
    			printf("1~100사이의 값을 입력하십시오. \n");
    			printf("당신의 수학 점수를 입력하십시오.(1~100): ");
    			i = scanf("%d",&mat); }
    		else { j = 0;}}
    	tot = kor + eng + mat;
    	ave = tot / 3;
    	if ( ave >= 80){
    		printf("합격입니다. \n");}
    	else {
    		printf("불합격입니다. \n");}}
    	return 0;
    }
    

    • 무한 반복 프로그램(단, 모든 과목의 점수가 0일시 프로그램 종료)


    #include <stdio.h>
    #pragma warning(disable:4996)
    
    int main()
    {
    	int kor,eng,mat,tot=1,ave,i,j;
    
    	while( tot > 0 ) {
    	printf("당신의 국어 점수를 입력하십시오.(0~100): ");
    	fflush(stdin);
    	i = scanf("%d",&kor);
    	j = 1;
    	while(j == 1){
    		if( i == 0){
    			printf("문자를 입력하지 말아 주십시오. \n");
    			printf("당신의 국어 점수를 입력하십시오(0~100): ");
    			fflush(stdin);
    			i = scanf("%d",&kor); }
    		else if ( kor < 0 || kor > 100) {
    			printf("1~100사이의 값을 입력하십시오. \n");
    			printf("당신의 국어 점수를 입력하십시오.(1~100): ");
    			i = scanf("%d",&kor); }
    		else {j = 0;}}
    
    	printf("당신의 영어 점수를 입력하십시오(0~100): ");
    	fflush(stdin);
    	i = scanf("%d",&eng);
    	j = 1;
    	while(j == 1){
    		if( i == 0){
    			printf("문자를 입력하지 말아 주십시오. \n");
    			printf("당신의 영어 점수를 입력하십시오(0~100): ");
    			fflush(stdin);
    			i = scanf("%d",&eng); }
    		else if( eng < 0 || eng > 100){
    			printf("1~100사이의 값을 입력하십시오. \n");
    			printf("당신의 영어 점수를 입력하십시오.(1~100): ");
    			i = scanf("%d",&eng); }
    		else{j = 0;}}
    	printf("당신의 수학 점수를 입력하십시오(0~100): ");
    	fflush(stdin);
    	i = scanf("%d",&mat);
    	j = 1;
    	while(j == 1){
    		if( i == 0){
    			printf("문자를 입력하지 말아 주십시오. \n");
    			printf("당신의 수학 점수를 입력하십시오(0~100): ");
    			fflush(stdin);
    			i = scanf("%d",&mat); }
    		else if ( mat < 0 || mat > 100) {
    			printf("1~100사이의 값을 입력하십시오. \n");
    			printf("당신의 수학 점수를 입력하십시오.(1~100): ");
    			i = scanf("%d",&mat); }
    		else { j = 0;}}
    	tot = kor + eng + mat;
    	ave = tot / 3;
    	if ( ave >= 80){
    		printf("합격입니다. \n");}
    	else {
    		printf("불합격입니다. \n");}}
    	return 0;
    }
    


    3.3. 최필립


  • 3월 24일 6피에서 함
  • 창이 사라져서 용준동기의 도움으로 windows.h 와 pause 추가함
  • 현재 시도한 횟수는 그냥 머리아파서 넣어봄




  • 5회반복


    #include <stdio.h>
    #include <Windows.h>
    
    int main(void)
    {
    	int kor=0,eng=0,tot=0,mat=0,ave=0,i=0;
    		
    		
    		
    		while(i<5)
    		{
    			printf("국어성적을 입력하세요. ex 90점->90\n");
    			scanf("%d",&kor);
    			
    			printf("영어성적을 입력하세요. ex 44점->44\n");
    			scanf("%d",&eng);
    
    			printf("수학성적을 입력하세요. ex 33점->33\n");
    			scanf("%d",&mat);
    			
    			tot=kor+eng+mat;
    			ave=tot/3;
    
    			printf("평균점수:%d\n",ave);
    			printf("총점수:%d\n",tot);
    			
    			i++;
    			
    			if(ave>=80)
    			{
    				printf("합격입니다.\n");
    			}
    			else
    			{
    				printf("불합격입니다.\n");
    			}
    
    			printf("현재 시도한 횟수 %d/5 \n\n\n\n\n\n\n\n",i);
    		}
    		system("pause > NULL");
                    return 0;
    }
    





    무한반복


    *원래 i를 선언할 필요가 없지만 현재 시도한 횟수 넣으려고 내비뒀음
    *무한반복이므로 windows.h 삭제
    *if(kor=0,eng=0,mat=0) break; 하다가 두시간 날림.... ==이었음


    #include <stdio.h>
    
    int main(void)
    {
    	int kor=0,eng=0,tot=0,mat=0,ave=0,i=0;
    		
    		
    		
    		while(1)
    		{
    			printf("국어성적을 입력하세요. ex 90점->90\n");
    			scanf("%d",&kor);
    			
    			printf("영어성적을 입력하세요. ex 44점->44\n");
    			scanf("%d",&eng);
    
    			printf("수학성적을 입력하세요. ex 33점->33\n");
    			scanf("%d",&mat);
    			
    			tot=kor+eng+mat;
    			ave=tot/3;
    			
                            if(kor==0,eng==0,mat==0)
    				break;
    
    			printf("평균점수:%d\n",ave);
    			printf("총점수:%d\n",tot);
    			
    			i++;
    			
    			if(ave>=80)
    			{
    				printf("합격입니다.\n");
    			}
    			else
    			{
    				printf("불합격입니다.\n");
    			}
    
    			printf("현재 시도한 횟수 %d\n\n",i);
    		}
                    return 0;
    }
    
    • 함수에 대해서 가르쳐 줄 때 얘기하겠지만 main 함수를 int형 반환으로 선언했다면 return 값이 있는 게 올바른 형태입니다. - 원준연
      • 넵 고쳤습니다.

    3.4. 홍성현


    2014/3/23(일) 11:04 am
    -문자 입력시 터지는 현상(해결불가)ㅠ, 0~100 이외의 숫자 넣을 경우(해결) 고려해서 막을 방법을 재고려하겠습니다. -



    5회반복

    #include <stdio.h>
    int main()
    {
    int kor=0,eng=0,mat=0,ave=0,i=0;
    for(i=0;i<5;i++)
    {
    printf("국어 성적 입력 :");
    scanf("%d",&kor);
    if(kor>=0,kor<=100)
    {printf("국어 성적 :%d\n",kor);
    }
    else
    {
    printf("ㅗ\n");
    break ;
    }
    printf("영어 성적 입력 :");
    scanf("%d",&eng);
    if(eng>=0,eng<=100)
    {printf("영어 성적 :%d\n",eng);
    }
    else
    {
    printf("ㅗ\n");
    break;

    }
    printf("수학 성적 입력 :");
    scanf("%d",&mat);
    if(mat>=0,mat<=100)
    {printf("수학 성적 :%d\n",mat);
    }
    else
    {
    printf("ㅗ\n");
    break;
    }
    ave=(kor+eng+mat)/3;
    printf("평균 :%d\n",ave);
    if(kor==0,eng==0,mat==0)
    {break ;
    }


    if(ave>=80)
    {printf("합격\n");
    }
    else
    {
    printf("불합격\n");
    }

    }

    return 0 ;
    }

    ㅁ...무한반복 ㅈ..절대 귀찮아서 이렇게 한거 ㅇ..아니...ㄹ거에요

    무한반복
    #include <stdio.h>
    int main()
    {
    int kor=0,eng=0,mat=0,ave=0,i=0;
    for(i=0;i<5;i==0)
    {
    printf("국어 성적 입력 :");
    scanf("%d",&kor);
    if(kor>=0,kor<=100)
    {printf("국어 성적 :%d\n",kor);
    }
    else
    {
    printf("ㅗ\n");
    break ;
    }
    printf("영어 성적 입력 :");
    scanf("%d",&eng);
    if(eng>=0,eng<=100)
    {printf("영어 성적 :%d\n",eng);
    }
    else
    {
    printf("ㅗ\n");
    break;

    }
    printf("수학 성적 입력 :");
    scanf("%d",&mat);
    if(mat>=0,mat<=100)
    {printf("수학 성적 :%d\n",mat);
    }
    else
    {
    printf("ㅗ\n");
    break;
    }
    ave=(kor+eng+mat)/3;
    printf("평균 :%d\n",ave);
    if(kor==0,eng==0,mat==0)
    {break ;
    }


    if(ave>=80)
    {printf("합격\n");
    }
    else
    {
    printf("불합격\n");
    }

    }

    return 0 ;
    }
    • 조건확인이 동시에 일어난다면 if를 여러 번 쓰지 말고 else if로 하는게 더 좋습니다. 그리고 무한반복 틀렸습니다. - 원준연
      ㄴ 넹

    4. 코드 올리는 법

    #include <stdio.h>
    
    int main(void){
    printf("위키소스코드를 보고 써먹으세요.\n");
    return 0;
    }
    

    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:29:51
    Processing time 0.0110 sec