본문 바로가기

C

박시현 13주차 C프로그래밍 과제

C프로그래밍

13주차 과제

 

 

 

 

 

과 목 명 : C프로그래밍

담당교수 : 한성현 교수님

학 과 : 컴퓨터소프트웨어학과

학 년 : 1학년

학 번 : 2024001684

이 름 : 박시현

제 출 일 : 2024 5월 28일

출처:한성현 교수님의 강의자료

https://sihyun0813.tistory.com/20

 

박시현 12주차 C프로그래밍 과제

C프로그래밍12주차 과제     과 목 명 : C프로그래밍담당교수 : 한성현 교수님학 과 : 컴퓨터소프트웨어학과학 년 : 1학년학 번 : 2024001684이 름 : 박시현제 출 일 : 2024년 5월 21일전달인자

sihyun0813.tistory.com

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

---------------------------지역 변수의 유효범위---------------------------

#include <stdio.h>
int main(void)
{
int k=10; //지역 변수
printf("%d ",k); //10
{
int k=20; //지역 변수
k+=10;
printf("%d ",k);//30
}
k+=5;
printf("%d ",k);//15
return 0;
}

----------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

 

지역 변수와 전역 변수를 블럭({})으로 구분한다

---------------------------main함수와 add함수의 x,y---------------------------

#include <stdio.h>
int add(int x,int y);
int main(void)
{
int x=5, y=10,sum;
printf("add()함수 호출 전 메인 함수 x=%d, y=%d\n",x,y);
sum=add(x,y);
printf("sum=%d\n",sum);
printf("add()함수 호출 후 메인 함수 x=%d, y=%d\n",x,y);
return 0;
}
int add(int x,int y)
{
printf("add()함수 내부 1 x=%d, y=%d\n",x,y);
x=x+5;
y=y+5;
printf("add()함수 내부 2 x=%d, y=%d\n",x,y);
return(x+y);
}

----------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

---------------------------전역변수와 지역변수---------------------------

#include <stdio.h>
void show1(void);
void show2(void);
int x; //전역 변수
int main(void)
{
printf("main()에서 x는 %d\n",x);
show1();
printf("show1()호출 후 x는 %d\n",x);
show2();
printf("show2()호출 후 x는 %d\n",x);
return 0;
}

----------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료
출처:한성현 교수님의 강의자료

자동(auto) 변수임을 선언하지 않아도 기본적으로 자동변수로 생성되기에 굳이 선언할 필요가 없다.

출처:한성현 교수님의 강의자료

------------------------------------------------------------------------------------------------------------------------------------------------------------

배열 기초

출처:한성현 교수님의 강의자료

---------------------------배열 원소의 예---------------------------

#include <stdio.h>
int main(void)
{
int num[3]; //배열 선언 시 첨자의 값은 배열의 크기
num[0]=10; //배열 원소(element)의 첨자는 순서
num[1]=20;
num[2]=30;
num[3]=40;
printf("%d, %d, %d ",num[0],num[1],num[2]);
return 0;
}

----------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

0부터 시작하기 때문에 마지막 배열 원소는 총 갯수의 -1이다(에시:5개라면 마지막은 [4])

출처:한성현 교수님의 강의자료

---------------------------배열의 초기화 1---------------------------

#include <stdio.h>
int main(void)
{
int score[5] = { 10,20,30,40,50 };
char name[] = { 'H','a','n',' ','S',' ','H','\0' };
char name1[] = "Han S H";
printf("%d %d %d\n", score[0], score[1], score[4]);
printf("%c%c%c%c\n", name[3], name[1], name[7], name[2]);
printf("%c%c%c%c\n", name1[3], name1[1], name1[7], name1[2]);
return 0;
}

----------------------------------------------------------------------------

5번째와 6번째 방법은 똑같다
출처:한성현 교수님의 강의자료

---------------------------배열의 초기화 2---------------------------

#include <stdio.h>
int main(void)
{
int han[3] = { 10,20 };
//int han1[2] = { 1,2,3 };// error C2078: 이니셜라이저가 너무 많습니다.
int han2[3] = { 0 };
printf("%d %d %d\n", han[0], han[1], han[2]);
printf("%d %d %d\n", han2[0], han2[1], han2[2]);
return 0;
}

----------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

---------------------------배열의 초기화와 대입---------------------------

#include <stdio.h>
int main(void)
{
int han[10] = { 10,20 };//배열 초기화
int x = 10; //변수 초기화
printf("%d %d %d %d\n", han[0], han[1], han[2], han[9]);
x = 20;
han[0] = 1; // 대입
han[1] = 2; // 대입
han[2] = 3; // 대입
printf("%d %d %d %d\n", han[0], han[1], han[2], han[9]);
return 0;
}

------------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료
배열의 주소

배열의 이름은 그 배열의 시작 주소다

---------------------------일차원 배열의 이름---------------------------

#include <stdio.h>
int main()
{
int i;
int han1[3] = { 5,15 };
int han2[3];
for (i = 0; i < 3; i++)
printf("han1[%d]=%2d 주소=%p\n", i, han1[i], &han1[i]);
printf("han1=%p\n", han1); //&han1[0]
han2[0] = 10;
han2[1] = 20;
han2[2] = 30;
for (i = 0; i < 3; i++)
printf("han2[%d]=%2d 주소=%p\n", i, han2[i], &han2[i]);
printf("han2=%p\n", han2); //&han2[0]
return 0;
}

---------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

---------------------------일차원 배열 활용---------------------------

#include <stdio.h>
int main(void)
{
int i, sum=0;
int score[10]={1, 2, 3, 4, 5, 6,7, 8, 9,10};
for(i=0;i<10;i++) sum=sum+score[i];
printf("평균=%f\n",sum/10.);
return 0;
}

-----------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

---------------------------입력받은 수를 역순으로 출력---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int i,num[5];
printf("5개의 수를 입력받아 역순으로 출력합니다.\n");
for(i=0;i<5;i++){
printf("%d번째 수를 입력하세요:",i+1);
scanf("%d",&num[i]);
}
for(i=4;i>=0;i--)printf(" %d ->",num[i]);
return 0;
}

--------------------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

n%를 작성해야한다.

출처:한성현 교수님의 강의자료

다차원 배열의 초기화

---------------------------2차원 배열의 초기화---------------------------

#include <stdio.h>
int main()
{
int x[2][3] = { 10,20,30,40,50,60 };
printf("%d %d %d\n", x[0][0], x[0][1], x[0][2]);
x[0][0] = 1; x[0][1] = 2; x[0][2] = x[0][0];
printf("%d %d %d\n", x[0][0], x[0][1], x[0][2]);
x[1][0] = x[0][0] + 1;
x[1][1] = x[0][0] + x[0][1];
x[1][2] = x[1][0] * x[1][1];
printf("%d %d %d\n", x[1][0], x[1][1], x[1][2]);
return 0;
}

-----------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

---------------------------문자형 배열 초기화---------------------------

#include <stdio.h>
int main(void)
{
int i;
char st[]="soft";
char ch[]={'s', 'o', 'f', 't', '\0'};
for(i=0;i<5;i++)printf("st[%d] 주소 %p =%c\n",i,&st[i], st[i]);
for(i=0;i<5;i++)printf("ch[%d] 주소 %p =%c\n",i,&ch[i], ch[i]);
return 0;
}

---------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

---------------------------문자형 배열 초기화와 배열명---------------------------

#include <stdio.h>
int main(void)
{
char eng[5]="A BC";
char kor[6]="하이a";
printf("%p:%c ",eng, eng[0]);
printf("%p:%c ",eng+1,eng[1]);
printf("%p:%c ",eng+2,eng[2]);
printf("%p:%c ",eng+3,eng[3]);
printf("%p:%c\n",eng+4,eng[4]);
printf("%s\n",eng);
printf("%p:%c ",kor, kor[0]);
printf("%p:%c ",kor+1,kor[1]);
printf("%p:%c ",kor+2,kor[2]);
printf("%p:%c ",kor+3,kor[3]);
printf("%p:%c ",kor+4,kor[4]);
printf("%p:%c\n",kor+5,kor[5]);
printf("%s\n",kor);
return 0;
}

----------------------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

문자 배열의 값은 배열의 이름만 쓰고 %s로 출력한다

---------------------------이름을 입력받아 출력하는 프로그램---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char name[10];
printf("당신의 이름을 입력하세요:");
scanf
("%s", name); //gets_s(name);와 차이점?
//scanf_s("%s", name, (unsigned int)sizeof(name));
printf("당신의 이름은 %s입니다.\n", name);
return 0;
}

-------------------------------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

%s를 쓸 땐 이름만 쓰고

%d는 이름 앞에 %를 붙인다

 

---------------------------이름을 입력받아 출력하는 프로그램(안전)---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char name[10];
printf("당신의 이름을 입력하세요:");
scanf_s("%s", name,9);
printf("당신의 이름은 %s입니다.\n", name);
return 0;
}

--------------------------------------------------------------------------------------------------------------

---------------------------성적 처리 프로그램---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int i, num[5], kor[5], eng[5], mat[5], total[5];
double avgkor = 0.0, avgeng = 0.0, avgmat = 0.0;
double avg[5];
printf(" ---------------------------\n");
printf(" 성적 처리 프로그램입니다. \n");
printf(" ---------------------------\n");
for (i = 0; i < 5; i++) {
printf("%d번째 학생의 학번을 입력하고 Enter를 누르세요:", i + 1);
scanf("%d", &num[i]);
printf("국어 점수를 입력하고 Enter를 누르세요:");
scanf("%d", &kor[i]);
printf("영어 점수를 입력하고 Enter를 누르세요:");
scanf("%d", &eng[i]);
printf("수학 점수를 입력하고 Enter를 누르세요:");
scanf("%d", &mat[i]);
total[i] = kor[i] + eng[i] + mat[i]; //각 학생의 총점
avg[i] = total[i] / 3.0; //각 학생의 평균
avgkor = avgkor + kor[i]; //국어 점수 누적
avgeng = avgeng + eng[i]; //영어 점수 누적
avgmat = avgmat + mat[i]; //수학 점수 누적
}
printf(" ---------------------------\n");
printf(" 성 적 처 리 결과입니다. \n");
printf(" ---------------------------\n");
printf("학번 총점 평균\n");
for (i = 0; i < 5; i++) {
printf("%3d %6d %7.2f\n", num[i], total[i], avg[i]);
}
printf("국어 평균: %.1f\n영어 평균: %.1f\n수학 평균: %.1f\n",
avgkor / 5., avgeng / 5., avgmat / 5.);
return 0;
}

---------------------------------------------------------------------------------

출처:한성현 교수님의 강의자료

---------------------------성적 처리 프로그램 C언어 추가---------------------------

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int i, num[5], kor[5], eng[5], mat[5], c[5], total[5];
double avgkor = 0.0, avgeng = 0.0, avgmat = 0.0, avgc = 0.0;
double avg[5];
printf(" ---------------------------\n");
printf(" 성적 처리 프로그램입니다. \n");
printf(" ---------------------------\n");
for (i = 0; i < 5; i++) {
printf("%d번째 학생의 학번을 입력하고 Enter를 누르세요:", i + 1);
scanf("%d", &num[i]);
printf("국어 점수를 입력하고 Enter를 누르세요:");
scanf("%d", &kor[i]);
printf("영어 점수를 입력하고 Enter를 누르세요:");
scanf("%d", &eng[i]);
printf("수학 점수를 입력하고 Enter를 누르세요:");
scanf("%d", &mat[i]);
printf("C언어 점수를 입력하고 Enter를 누르세요:");
scanf("%d", &c[i]);
total[i] = kor[i] + eng[i] + mat[i]; //각 학생의 총점
avg[i] = total[i] / 4.0; //각 학생의 평균
avgkor = avgkor + kor[i]; //국어 점수 누적
avgeng = avgeng + eng[i]; //영어 점수 누적
avgmat = avgmat + mat[i]; //수학 점수 누적
avgc = avgmat + c[i];
}
printf(" ---------------------------\n");
printf(" 성 적 처 리 결과입니다. \n");
printf(" ---------------------------\n");
printf("학번 총점 평균\n");
for (i = 0; i < 5; i++) {
printf("%3d %6d %7.2f\n", num[i], total[i], avg[i], c[i]);
}
printf("국어 평균: %.1f\n영어 평균: %.1f\n수학 평균: %.1f\nC언어 평균: %.1f\n",
avgkor / 5., avgeng / 5., avgmat / 5., avgc / 5.);
return 0;
}

---------------------------------------------------------------------------------