본문 바로가기

카테고리 없음

2024000066김태윤 12주차 수업시간과제

#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int num, sum = 0;
//누적하는변수 sum은 반드시초기화
printf("1번째 수를 입력하세요=");
scanf("%d", &num);
sum = sum + num;
printf("2번째 수를 입력하세요=");
scanf("%d", &num);
sum = sum + num;
printf("3번째 수를 입력하세요=");
scanf("%d", &num);
sum = sum + num;
printf("합:%d,평균:%lf \n", sum, sum / 3.0);
return 0;
}

3개의 수를 입력받아서 합과 평균을 구하는 프로그램작성.

#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int num,i, sum = 0;
//누적하는변수 sum은 반드시초기화
for (i = 1; i <= 3;i++) {
printf("%d번째 수를 입력하세요=",i);
scanf("%d", &num);
sum = sum + num;
}
printf("합:%d,평균:%lf \n", sum, sum / 3.0);
return 0;
}

위의 프로그램을 for문을 이용하여 작성(같음)

#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int num,i, sum = 0,number;
//누적하는변수 sum은 반드시초기화
printf("몇개의 수를 합과 평균 구하고 싶어==");
scanf("%d", &number);
for (i = 1; i <= number;i++) {
printf("%d번째 수를 입력하세요=",i);
scanf("%d", &num);
sum = sum + num;
}
printf("합:%d,평균:%lf \n", sum, (double)sum / number);
return 0;
}

내가 원하는 만큼의 숫자를 받아서 합과, 평균을 구하는 코드(위의 코드를 수정함,)

#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int num,i, sum = 0,number;
//누적하는변수 sum은 반드시초기화
printf("몇개의 수를 합과 평균 구하고 싶어==");
scanf("%d", &number);
for (i = 1; i <= number;i++) {
printf("%d번째 수를 입력하세요=",i);
scanf("%d", &num);
sum = sum + num;
}
printf("합:%d,평균:%lf \n", sum, (double)sum / number);
return 0;
}

무한루프를 for문을 이용하여 걸음으로써, 프로그램이 계속하여 진행됨(오류있음)

누적 변수인 sum이 2번쨰 부턴 누적된 그대로 쌓이기에, for문 안쪽에 초기화를 함으로써, 루프가 돌떄마다 초기화 되게 만들어야함.

무한 루프를 끝내는 방법. if문을 하나 추가하면됨. (완)

#define _CRT_SECURE_NO_WARNINGS // 보안 경고 메시지 비활성화
#include <stdio.h>
#include <limits.h> // INT_MIN, INT_MAX가 정의되어 있음

int main(void)
{
    int i, num, sum = 0, total, max = INT_MIN, min = INT_MAX; // 변수 선언
    // sum: 입력된 수들의 합을 누적하는 변수, 반드시 초기화해야 함
    // max: int형으로 표현할 수 있는 가장 작은 값인 INT_MIN으로 초기화
    // min: int형으로 표현할 수 있는 가장 큰 값인 INT_MAX로 초기화

    for (;;) { // 무한 루프
        sum = 0, max = INT_MIN, min = INT_MAX; // 루프마다 sum, max, min 초기화
        printf("\n임의의 수의 평균을 구하는 프로그램입니다.\n");
        printf("계산하려는 수는 몇 개입니까(끝내려면 0)==");
        scanf("%d", &total); // 계산할 수의 개수 입력
        if (total == 0) break; // 입력이 0이면 루프 종료

        for (i = 1; i <= total; i++) { // 입력된 수의 개수만큼 반복
            printf("%d번째 수를 입력하세요=", i);
            scanf("%d", &num); // 수 입력
            sum += num; // 입력된 수를 누적하여 합산
            max = (num > max) ? num : max; // 입력된 수와 현재 최댓값을 비교하여 갱신
            min = (num < min) ? num : min; // 입력된 수와 현재 최솟값을 비교하여 갱신
        }

        printf("합=%d,평균=%.2f, 최댓값=%d, 최솟값=%d\n", sum, (double)sum / total, max, min); // 합, 평균, 최댓값, 최솟값 출력
    }

    return 0;
} 챗gpt에게 주석을 달아 설명해달라고 한 프로그램.

#include <stdio.h>
int main(void)
{
int n, m;

for (n = 1; n <= 1000; n++)
{
printf("%머리아픔 ", n);
for (m = 1; m <= n * 10000; m++);    //점점 느리게 하는 부분
}
for (n = 1; n <= 1000; n++)
{
printf("%많이아픔", n);
for (m = 1; m <= n * 10000000/n ; m++);    //점점 느리게 하는 부분
}
return 0;
}

점점 느리게 가다가 빠르게 가는 프로그램작성.

#include <stdio.h>

int main(void)
{
    int n, m; // 반복문에 사용할 변수 선언

    puts("작업을 시작합니다."); // "작업을 시작합니다."를 출력

    for (n = 1; n <= 1000; n++) // 1부터 1000까지의 수에 대해 반복
    {
        printf("%d%%\b\b\b\b", n); // 현재의 수 n을 백분율로 출력하고, 커서를 세 번 앞으로 이동시킴

        // 내부 for 루프: n에 비례하여 점점 더 많은 시간이 소요되도록 함
        for (m = 1; m <= n * 10000; m++); // 빈 for 루프 (아무 작업도 수행하지 않음)
        // 이 부분은 단순히 시간 지연을 위해 삽입된 것이며, 실제로는 아무 작업도 수행하지 않음
    }

    return 0;
}(주석달아 설명

구구단 9단까지 돌리기

19단표는for문 중간에 9를 19로, print문에서 %2dx%d=%3d로 하면 완성

 

#include <stdio.h>
int main(void)
{
int dan, gop;
printf(" ◆ 구구단 표 ◆ \n"); //ㅁ한자키
for (dan = 2; dan <= 9; dan++) printf(" %d단 │ ", dan);
printf("\n──────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼\n");//ㅂ한자키
for (gop = 1; gop <= 9; gop++) {
for (dan = 2; dan <= 9; dan++) { //곱
printf("%dx%d=%2d│ ", dan, gop, dan * gop);
}
printf("\n");
}
return 0;
}

구구단 깔끔하게 하는법+결과

for문은 for문에 초기값,증가,감소 한번에 쓸 수 있지만, while문은 한번에 쓰지 못하여 지저분하게 나타날 수도 있다.

for,while문에서는 세미클론;은 안해도 되지만, do while문에서는 반드시 세미클론을 해야한다.

//7.29
#include <stdio.h>
#include <conio.h>  //_getche()
int main(void)
{
char key;

printf("키 하나를 누르세요.\nq,Q를 누르면 프로그램을 종료합니다 :\n");
do {
key = _getche();
} while (key != 'q'&&key !='Q');
printf("\n바이~~\n");
return 0;
}

//7.29
#include <stdio.h>
#include <conio.h>  //_getche()
int main(void)
{
char key;

printf("키 하나를 누르세요.\nq,Q를 누르면 프로그램을 종료합니다 :\n");
do {
key = _getche();
} while (key != 'q'&&key !='Q');
printf("\n바이~~\n");
return 0;
}

이 2가지 소스는 같은거지만, 아랫쪽을 더 많이쓴다. 윗쪽은 드모르강 법칙으로 바뀐 케이스.

(기말고사에 많이 나왔던 예제라고 말씀하심)

//7.30
#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
int main(void)
{
int score; 
printf("당신의 점수를 입력하고 Enter를 누르세요\n");
do{
printf("점수가 0에서 100사이의 값이 아니면 다시 입력해야 합니다:");
scanf("%d",&score);    
}while(!(score>=0 && score<=100));//0~100사이가 아니라면
if(score<60) printf("60점 미만이므로 재수강해야 합니다.\n");
else printf("60점 이상이므로 Pass입니다.\n");
return 0;
}

0~100사이 이면 조건식 실행,  그 안에 들어오지 않는다면, 계속하여 실행하는 프로그램

C언어에서 무한루프를 돌리는 3가지방법. do while문 에서는 꼭 ;(세미클론을 써야한다.)

break문장은 루프에서 한블럭{} 을 벗어나는데 사용한다.(swith case, for문,while문,dowhile문등 벗어날떄 사용)

//7.33
#include <stdio.h>
int main(void)
{
int n;
for (n = 1; n <= 100; n+=2)
{
//if (n % 2 == 0) continue;
printf("%3d ", n);
}
return 0;
}

주석처리한 부분과, n+=2부분은 같은 역할을 한다( 홀수만 나오게)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
    int i, j, k, num, count = 1;

    printf("직각삼각형의 밑변, 높이, 빗변을 X, Y, Z로 할 때,\n");
    printf("X²+Y²=Z²을 만족하는 자연수를 피타고라스 수라고 합니다.\n");
    printf("몇 개의 피타고라스수 조합을 얻고 싶습니까==");
    scanf("%d", &num);

    for (i = 1; i <= 1000; i++) {
        for (j = 1; j <= 1000; j++) {
            for (k = 1; k <= 1000; k++) {
                if (k * k == (i * i + j * j)) {
                    printf("%3d: %3d %3d %3d\n", count, i, j, k);
                    if (count == num) goto END;
                    count++;
                }
            }
        }
    }
END:
    return 0;
}

피타고라스의 정의 goto 사용한 프로그램.(goto는 되도록 안쓰는게 좋다고합니다.)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h >
int main(void)
{
int weight;
double height, bmi;
printf("신체질량지수(Body Mass Index:BMI)에 의한 비만도 \n");
printf("계산법으로 비만도를 측정해주는 프로그램입니다.\n");
printf("이 지수가 30 이상 고도비만, 2529.9 비만, 2324.9 과체중,\n");
printf("18.6∼22.9 정상, 18.5 이하 저체중으로 판정됩니다.\n");
printf("체중을 입력하세요(kg단위로) : ");
scanf("%d", &weight);
printf("키를 입력하세요(cm단위로) : ");
scanf("%lf", &height); //주의 %f아님
height /= 100; //cm -> m
bmi = weight / (height * height);
printf("당신의 bmi는 [%.2f]이며, ", bmi);
if (bmi >= 30) {
printf("[고도비만]입니다.");
}
else if (bmi >= 25 && bmi < 30) {
printf("[비만]입니다.");
}
else if (bmi >= 23 && bmi < 25) {
printf("[정상]입니다.");
}
else {
printf("[저체중]입니다.");
}
return 0;
}

bmi수치 프로그램