프로그래밍 기초_C언어개념전범위_총정리

728x90

[1-8주차 정리]

 


9주차 필기 내용

//배열 (9-1) : 변수 여러 개 입력 받는 경우 한꺼번에 배열로 저장

//같은 자료형에 대한 여러 개 선언

//변수 10개 입력받아서 배열로 간편하게 선언, 저장

#include <stdio.h>

int main()
{
	int n0, n1, n2, n3, n4, n5, n6, n7, n8, n9;
	int n[10]; //크기 10인 정수형 배열 장소 선언 
	int i;

	printf("Input 10 scores : ");
	for (i = 0; i <= 9; i++) {  //for문 돌면서 10개 숫자 순차
		scanf_s("%d", &n[i]); //배열로 순차 입력받아 저장 
	}

	printf("10 scores in reverse order: "); //역순 출력 
	for (i = 9; i >= 0; i--) { 
		printf("%d", n[i]);
	}
	

	return 0; 
}
 
 
//10개 정수 입력 받아서 배열로 저장한 후, 배열의 값들 중 양수, 음수 구분 저장 
#include <stdio.h>

int main() {

	int num[10];
	int pos_num = 0, neg_num = 0; //개수 세는 변수 0으로 초기화해둠 
	int n;
	int i; //for 돌릴 때 사용할 컨트롤 정수i 선언 

	printf("Input 10 intteger numbers : ");
	for (i = 0; i <= 9; i++) {
		scanf_s("%d", &n);
		num[i] = n;
	}

	for (i = 0; i <= 9; i++) {
		if (num[i] > 0) //인덱스 i번째 배열 원소 값이 0보다 클 경우 
			pos_num++; //양의 정수 개수 변수 1증가 시킴
		if (num[i] < 0) //원소 값 0보다 작은 경우 (음의 정수) 
			neg_num++;  //음의 정수 개수 변수 1증가 
	}
	printf("Number of positive integer inputs = %d\n ", pos_num); 
	printf("Number of negative integer inputs = %d\n", neg_num);


	return 0; 
}

//******(1) 양의 정수의 합, 음의 정수의 합 

#include <stdio.h>

int main() {

	int num[10]; //정수형 크기가 10인 배열 num을 선언 
	int pos_num = 0, neg_num = 0; //개수 세는 변수는 0으로 초기화해둠
	int pos_sum = 0, neg_sum = 0; //양, 음의 정수끼리의 합 변수 선언 
	float pos_avg, neg_avg; //평균 변수 실수형 선언 

	int n;
	int i; 

	printf("Input 10 integer numbers : ");
	for (i = 0; i <= 9; i++) {
		scanf_s("%d", &n);
		num[i] = n;
	}

	for (i = 0; i <= 9; i++) {
		if (num[i] > 0) { //원소값 양수인 경우 
			pos_num++;
			pos_sum = pos_sum + num[i];
		}

		if (num[i] < 0) { //원소값 음수인 경우 
			neg_num++;
			neg_sum = neg_sum + num[i];
		}
	}
	printf("Number of positive integer inputs = %d\n ", pos_num); 
	
	if (pos_num == 0) printf("Sum of positive input can not be calculated , \n");
	if (pos_num > 0) printf("Sum of positive inputs = %d", pos_sum);

	printf("Number of negative integer inputs = %d\n", neg_num);
	
	if (neg_num == 0) printf("Sum of negative input can not be calculated, \n");
	if (neg_num > 0) printf("Sum of negative inputs = %d", neg_sum);
	
	return 0; 
}

//양의 정수 평균, 음의 정수 평균 구하기

#include <stdio.h>

int main() {

	int num[10]; //정수형 크기가 10인 배열 num을 선언 
	int pos_num = 0, neg_num = 0; //개수 세는 변수는 0으로 초기화해둠
	int pos_sum = 0, neg_sum = 0; //양, 음의 정수끼리의 합 변수 선언 
	float pos_avg, neg_avg; //평균 변수 실수형 선언 

	int n;
	int i; 

	printf("Input 10 intteger numbers : ");
	for (i = 0; i <= 9; i++) {
		scanf_s("%d", &n);
		num[i] = n;
	}

	for (i = 0; i <= 9; i++) {
		if (num[i] > 0) { //원소값 양수인 경우 
			pos_num++;
			pos_sum = pos_sum + num[i];
		}

		if (num[i] < 0) { //원소값 음수인 경우 
			neg_num++;
			neg_sum = neg_sum + num[i];
		}
	}
	printf("Number of positive integer inputs = %d\n ", pos_num); 
	
	if (pos_num == 0) {
		printf("Sum of positive input can not be calculated\n");
		printf("Average of positive input can not be calcuated");
	}
	if (pos_num > 0) {
		printf("Sum of positive inputs = %d", pos_sum);
		
		pos_avg = (float)pos_sum / (float)pos_num; //강제 형번환 후 평균 계산  
		printf("Average of positive inputs = %.3f\n", pos_avg); 
	}



	printf("Number of negative integer inputs = %d\n", neg_num);
	
	if (neg_num == 0) {
		printf("Sum of negative input can not be calculated \n");
		printf("Average of negative input can not be calcuated");
	}
	if (neg_num > 0) {
		printf("Sum of negative inputs = %d", neg_sum);
		neg_avg = (float)neg_sum / (float)neg_num; //강제 형변환 후 평균 계산 
		printf("Average of negative inputs = %.3f\n", neg_avg); 
	}
	return 0; 
}
 

//역순으로 출력 후 최대값, 최소값 찾기 

#include <stdio.h>

int main() {
	int num[10];
	int i;
	int n;
	int max, min; 
// 여기 변수는 0으로 초깃값 설정하면 제대로 최소,최댓값 못 찾아낸다. 내가 입력한 값들 중에서 비교되어야 함 
	printf("Input 10 integer numbers : ");
	for (i = 0; i <= 0; i++) {
		scanf_s("%d", % n);
		num[i] = n;
	}
	max = num[0]; 
	min = num[0]; //첫 원소를 min으로 받은 후 min보다 작은 원소를 min변수에 재저장
	for (i = 0; i <= 9; i++) {
		if (num[i] > max) max = num[i]; //new max 재설정 
		if (num[i] < min) min = num[i]; //new min 재설정 
	}
	//for문 돌고 나오면 어쨋든 max변수에는 최댓값이 저장, min변수에는 최솟값이 저장 
	printf("Maximum number = %d\n ", max); //최댓값 출력 
	printf("Minimum number = %d\n", min); //최솟값 출력 


	return 0; 
}

//몇 번째 최대, 몇 번째 최소인지 찾기 

#include <stdio.h>

int main() {
	int num[10];
	int i;
	int n;
	int max, min;
	int max_index, min_index; //몇 번째 최대, 최소인지 변수 선언 


	printf("Input 10 integer numbers : ");
	for (i = 0; i <= 0; i++) {
		scanf_s("%d", % n);
		num[i] = n;
	}

	max = num[0]; 
	max_index = 0;

	min = num[0]; 
	min_index = 0;

	for (i = 0; i <= 9; i++) {
		if (num[i] > max) {
			max = num[i];
			max_index = i; //최댓값 갖는 i인덱스를 저장함 
		}
		if (num[i] < min) {
			min = num[i];
			min_index = i; //최솟값 갖는 i인덱스를 저장함 
		}
	}
	printf("Maximum number = %d\n ", max); 
	printf("Index of the maximum number = %d\n", max_index + 1); 
//배열은 0번부터 시작하므로 +1해서 인덱스 번호 출력 

	printf("Minimum number = %d\n", min); 
	printf("Index of the minimum number = %d\n", min_index + 1); 
//최솟값 저장된 인덱스i 출력 
	
	return 0; 
}

 

10주차 필기 내용

//10-1강 배열을 사용하는 수열 (첫 두 숫자 입력받아서 수열)

#include <stdio.h>

int main() {
	int num[20];
	int i;

	printf("Input the first 2 integer numbers of the numerical sequence");
	scanf_s("%d", &num[0]); 
	scanf_s("%d", &num[1]);

	for (i = 2; i <= 19; i++) {
		num[i] = num[i - 2] + num[i - 1]; // a3 = a2 + a1 을 구현
	}

	printf("Numerical Sequence : \n");

	for (i = 0; i <= 19; i++) {
		printf("[%d]     %d\n", i+1, num[i]); // 순서대로 출력 
	}


	return 0; 
}

//10-2강 분산 - 평균을 기준으로 성적 분포도 보여주는 것 (격차 퍼진 수준)

// V(x) = E(X^2) - {E(X)}^2 = 제곱의 평균 - 평균의 제곱

#include <stdio.h>

int main() {
	int a[10]; //a반에 있는 10명의 학생 성적값 
	int sum; ///합
	float avg; //평균 
	float var; // 분산 저장 
	float x; //분자 
	int i;

	printf("Input 10 scores : "); //입력받은 정수 배열로 순차 저장 
	for (i = 0; i <= 9; i++) {
		scanf_s("%d", &a[i]);
	}
	//합을 구한다
	sum = 0;
	for (i = 0; i <= 9; i++) {
		sum = sum + a[i];
	}
	//평균을 구한다, 
	avg = (float)sum / 10;

	//분산식의 분자에 해당하는 부분을 구한다 
	x = 0.0; //실수로 받음
	for(i = 0; i <= 9; i++) {
		x = x + (a[i] - avg) * (a[i] - avg);
	}

	//분산을 구한다. 
	var = x / 10;


	printf("Sum = %d\n", sum);
	printf("Average = %f\n", avg);
	printf("Variance = %f\n	", var);;

	return 0; 
}

//10-2강 - 정렬(두 수 비교해서 큰 값 앞으로, 작은 값은 뒤로 (내림차순) 
#include <stdio.h>
int main() {

	int a[10] = { 5, 4, 6, 3, 7, 2, 8, 1, 9, 10 } ; //뒤죽박죽 숫자를 일렬로 정렬
	int i, j; //for 두 번 돌릴 컨트롤 변수 두개 저장 
	int n, temp; //마지막 변수 n번째를 지정, 바꿔치기 할 임의의 변수 temp 선언 

	n = 9;
	for (i = n - 1; i >= 0; i--) { //바깥으로 for한 번 돌리고 
		for (j = 0; j <= i; j++) { //   j를 기준으로 비교 목적 
			if (a[j] < a[j + 1]) // 더 큰 수를 배열 앞으로 바꿔치기 
				temp = a[j];
			a[j] = a[j + 1];
			a[j + 1] = temp;
		}
		printf("Result after Bubble sorting. \n");
		for (i = 0; i <= 9; i++) {
			printf("%d ", a[i]);
		}
	}
	return 0; 
}


//10-3강 입력값을 음수, 양수 배열로 구분 후
 양수 분산, 음수 분산 각각  구하기 

#include <stdio.h>

int main() {

	int pos[10];
	int neg[10];
	int pos_num = 0, neg_num = 0;
	int pos_sum = 0, neg_sum = 0;
	float pos_avg, neg_avg;
	float pos_var, neg_var;
	float pos_son, neg_son; //분자 구하는 변수 선언 

	int i;
	int n;

	printf("Input 10 integer numbers: "); //입력값 10개 받음

	for (i = 0; i <= 9; i++) {
		scanf_s("%d", &n);

		if (n > 0) { //양의 정수인 경우 
			pos_num++; //개수 변수 1 증가 
			pos[pos_num - 1] = n; //배열에 순차 저장하면서 
			pos_sum = pos_sum + n; 
		}
		if (n < 0) { //음의 정수인 경우 
			neg_num++;
			neg[neg_num - 1] = n;
			neg_sum = neg_sum + n; //합 구하기 
		}
	}
		//평균 구하기
		if (pos_num == 0) printf("There is no positive integer");
		if (pos_num > 0) {
			pos_avg = (float)pos_sum / (float)pos_num; //E(x)구함

			pos_son = 0.0;
			//양의 정수 분산 연산에 필요한 '분자' 구하기 
			for (i = 0; i = pos_num - 1; i++) {
		pos_son = pos_son + (pos[i] - pos_avg) * (pos[i] - pos_avg);

			}

			//양의 정수의 분산 구하기 
			pos_var = pos_son / pos_num;

			printf("Number of positive inputs = %d\n", pos_num);
			printf("Sum of positive inputs = %d\n", pos_sum);
			printf("Average of positive inputs = %f\n", pos_avg);
			printf("Variance of positive inputs = %f\n", pos_var);

			//평균 구하기
			if (neg_num == 0) printf("There is no negative integer");
			if (neg_num > 0) {
				neg_avg = (float)neg_sum / (float)neg_num; //E(x)구함

				neg_son = 0.0;
				//음의 정수 분산 연산에 필요한 '분자' 구하기 
				for (i = 0; i = neg_num - 1; i++) { 
		neg_son = neg_son + (neg[i] - neg_avg) * (neg[i] - neg_avg);

				}
				//음의 정수의 분산 구하기 
				neg_var = neg_son / neg_num;


				printf("Number of negative inputs = %d\n", neg_num);
				printf("Sum of negative inputs = %d\n", neg_sum);
				printf("Average of negative inputs = %f\n", neg_avg);
				printf("Variance of negative inputs = %f\n", neg_var);

				return 0;
			}
		}
	
	}

11주차 필기 내용

//11-2강 사용자로부터 10개의 정수를 입력받은 후에

//홀수들의 분산과 짝수들의 분산을 각각 구하시오

//제곱의 평균 - 평균의 제곱 꼴로 다시 분산 구하기

#include <stdio.h>

int main() {
	int even[10], odd[10]; //홀,짝 각각 저장할 배열 변수 2개 선언 
	int even_num=0, odd_num=0; //even=짝수, odd=홀수
	int even_sum=0, odd_sum=0; //반복문 돌릴 목적으로 0초기화 

	float even_avg, odd_avg; //평균 변수 
	float even_2_avg, odd_2_avg; //제곱의 평균 변수 
	int even_2_sum = 0, odd_2_sum = 0; //제곱의 합 

	float even_var, odd_var; //분산 변수 
	float even_var_son, odd_var_son; //분자변수 각각 선언  
	float even_2_var, odd_2_var;//두 번째 분산 변수 선언

	int i,j; //for 돌릴 컨트롤 변수 선언 
	int m; //입력받을 정수 

	printf("Input 10 integer numbers : ");
	for (i = 1; i <= 10; i++) { //홀,짝 분류해서 각각의 배열에 나누어 저장
		scanf_s("%d", &m);

		if (m % 2 == 0) { //짝수의 경우 
			even_num++; //입력받은 짝수의 개수 
			even[even_num - 1] = m; 
			even_sum = even_sum + m;//합

			even_2_sum = even_2_sum + m * m;//제곱의 합
		}
		if (m % 2 != 0) {//홀수인 경우
			odd_num++;
			odd[odd_num - 1] = m;
			odd_sum = odd_sum + m;//합

			odd_2_sum = odd_2_sum + m * m; //제곱의 합 
		}
	}

	//짝수에 대한 분산 연산 과정 
	if (even_num == 0) printf("Varianve of even number can not calculated");
	if (even_num > 0) {
		even_avg = (float)even_sum /(float)even_num;  
		
	//분산의 분자 구할 연산 
		even_var_son = 0.0;
		for (i = 0; i = even_num - 1; i++) {
		even_var_son = even_var_son + (even[i] - even_avg) * (even[i] - even_avg);
		} 

	//분산을 구한다.
		even_var = even_var_son / (float)even_num;

		
		even_2_avg = (float)even_2_sum / (float) even_num; //제곱의 평균
		 //분산 = 제곱의 평균 - 평균의 제곱 
		even_2_var = even_2_avg - even_avg * even_avg;

		//결과 출력 
		printf("Number of even numbers = %d\n", even_num);
		printf("Sum of even numbers = %d\n", even_sum);
		printf("Average of even numbers = %f\n", even_avg);
		printf("Varianve of even numbers = %f\n", even_var);
		printf("Variance2 of even numbers = %f\n", even_2_var);
	}

	//홀수에 대한 분산 연산 과정 
	if (odd_num == 0) printf("Varianve of odd number can not calculated");
	if (odd_num > 0) {
		odd_avg = (float)odd_sum / (float)odd_num;


		//분산의 분자 구할 연산 
		odd_var_son = 0.0;
		for (i = 0; i = odd_num - 1; i++) {
			odd_var_son = odd_var_son + (odd[i] - odd_avg) * (odd[i] - odd_avg);
		}

		//분산을 구한다.
		odd_var = odd_var_son / (float)odd_num;
		odd_2_avg = (float)odd_2_sum / (float)odd_num; //제곱의 평균
		 //분산 = 제곱의 평균 - 평균의 제곱 
		odd_2_var = odd_2_avg - odd_avg * odd_avg;


		//결과 출력 
		printf("Number of odd numbers = %d\n", odd_num);
		printf("Sum of odd numbers = %d\n", odd_sum);
		printf("Average of odd numbers = %f\n", odd_avg);
		printf("Varianve of odd numbes = %f\n", odd_var);
		printf("Varianve2 of odd numbers = %f\n", odd_2_var);
	}



	return 0;

	}
 

//11-2강 ******표준편차 구하기 
//표준편차 = 루트 분산 

#include <stdio.h>
#include <cmath> //***루트 사용할 수학 전용 헤더파일 추가 (c++ 수학함수 ) vs (c <math.h>) 

int main() {
	int even[10], odd[10]; //홀,짝 각각 저장할 배열 변수 2개 선언 
	int even_num=0, odd_num=0; //even=짝수, odd=홀수
	int even_sum=0, odd_sum=0; //반복문 돌릴 목적으로 0초기화 

	float even_avg, odd_avg; //평균 변수 
	float even_2_avg, odd_2_avg; //제곱의 평균 변수 
	int even_2_sum = 0, odd_2_sum = 0; //제곱의 합 

	float even_sd, odd_sd; //표준편차 변수 선언 

	float even_var, odd_var; //분산 변수 
	float even_var_son, odd_var_son; //분자변수 각각 선언  
	float even_2_var, odd_2_var;//두 번째 분산 변수 선언

	int i, j; //for 돌릴 컨트롤 변수 선언 
	int m; //입력받을 정수 

	printf("Input 10 integer numbers : ");
	for (i = 1; i <= 10; i++) { //홀,짝 분류해서 각각의 배열에 나누어 저장
		
		scanf_s("%d", &m);

		if (m % 2 == 0) { //짝수의 경우 
			even_num++; //입력받은 짝수의 개수 
			even[even_num - 1] = m; 
			even_sum = even_sum + m;//합
			even_2_sum = even_2_sum + m * m;//제곱의 합
		}
		if (m % 2 != 0) {//홀수인 경우
			odd_num++;
			odd[odd_num - 1] = m;
			odd_sum = odd_sum + m;//합
			odd_2_sum = odd_2_sum + m * m; //제곱의 합 
		}
	}




	//짝수에 대한 분산 연산 과정 
	if (even_num == 0) printf("Varianve of even number can not calculated");
	if (even_num > 0) {
		even_avg = (float)even_sum /(float)even_num;  


		//분산의 분자 구할 연산 
		even_var_son = 0.0;
		for (i = 0; i = even_num - 1; i++) {
		even_var_son = even_var_son + (even[i] - even_avg) * (even[i] - even_avg);
		} 

		//분산을 구한다.
		even_var = even_var_son / (float)even_num;

		
		even_2_avg = (float)even_2_sum / (float) even_num; //제곱의 평균
		 //분산 = 제곱의 평균 - 평균의 제곱 
		even_2_var = even_2_avg - even_avg * even_avg;

		//표준편차 구한다
		even_sd = sqrt(even_var); // 루트 

		//결과 출력 
		printf("Number of even numbers = %d\n", even_num);
		printf("Sum of even numbers = %d\n", even_sum);
		printf("Average of even numbers = %f\n", even_avg);
		printf("Varianve of even numbers = %f\n", even_var);
		printf("Variance2 of even numbers = %f\n", even_2_var);
		printf("Standard Deviation of even numbers = %f\n", even_sd);
	}

	//홀수에 대한 분산 연산 과정 
	if (odd_num == 0) printf("Varianve of odd number can not calculated");
	if (odd_num > 0) {
		odd_avg = (float)odd_sum / (float)odd_num;


		//분산의 분자 구할 연산 
		odd_var_son = 0.0;
		for (i = 0; i = odd_num - 1; i++) {
		odd_var_son = odd_var_son + (odd[i] - odd_avg) * (odd[i] - odd_avg);
		}



		//분산을 구한다.
		odd_var = odd_var_son / (float)odd_num;
		odd_2_avg = (float)odd_2_sum / (float)odd_num; //제곱의 평균
		 //분산 = 제곱의 평균 - 평균의 제곱 
		odd_2_var = odd_2_avg - odd_avg * odd_avg;

		//표준편차 구한다
		odd_sd = sqrt(odd_var); // 루트 

		//결과 출력 
		printf("Number of odd numbers = %d\n", odd_num);
		printf("Sum of odd numbers = %d\n", odd_sum);
		printf("Average of odd numbers = %f\n", odd_avg);
		printf("Varianve of odd numbes = %f\n", odd_var);
		printf("Varianve2 of odd numbers = %f\n", odd_2_var);
		printf("Standard Deviation of odd numbers = %f\n", odd_sd);
	}
	return 0;
	}

//11-2강 사용자로부터 10개의 정수를 입력받은 후에 
//홀수들의 분산과 짝수들의 분산을 각각 구하시오 

#include <stdio.h>

int main() {
	int even[10], odd[10]; //홀,짝 각각 저장할 배열 변수 2개 선언 
	int even_num=0, odd_num=0; //even=짝수, odd=홀수
	int even_sum=0, odd_sum=0; //반복문 돌릴 목적으로 0초기화 
	
	float even_avg, odd_avg;
	float even_var, odd_var;
	float even_var_son, odd_var_son; //분자변수 각각 선언  

	int i; //for 돌릴 컨트롤 변수 선언 
	int m; //입력받을 정수 

	printf("Input 10 integer numbers : ");
	for (i = 1; i <= 10; i++) { //홀,짝 분류해서 각각의 배열에 나누어 저장
		scanf_s("%d", &m);

		if (m % 2 == 0) { //짝수의 경우 
		even_num++; //입력받은 짝수의 개수 
		even[even_num - 1] = m; //짝수의 개수에서 1빼줘야 인덱스 번호가 맞음 
		even_sum = even_sum + m; //힙
		}
		if (m % 2 != 0) {//홀수인 경우
		odd_num++;
		odd[odd_num - 1] = m;
		odd_sum = odd_sum + m;
		}
	}
	//짝수에 대한 분산 연산 과정 
	if (even_num == 0) printf("Varianve of even number can not calculated");
	if (even_num > 0) {
		even_avg = (float)even_sum /(float)even_num;  
		//분산의 분자 구할 연산 
		even_var_son = 0.0;
		for (i = 0; i = even_num - 1; i++) {
		even_var_son = even_var_son + (even[i] - even_avg) * (even[i] - even_avg);
		} 
		//분산을 구한다.
		even_var = even_var_son / (float)even_num;

		printf("Number of even numbers = %d\n", even_num);
		printf("Sum of even numbers = %d\n", even_sum);
		printf("Average of even numbers = %f\n", even_avg);
		printf("Varianve of even numbes = %f\n", even_var);
	}
	//홀수에 대한 분산 연산 과정 
	if (odd_num == 0) printf("Varianve of odd number can not calculated");
	if (odd_num > 0) {
		odd_avg = (float)odd_sum / (float)odd_num;

		//분산의 분자 구할 연산 
		odd_var_son = 0.0;
		for (i = 0; i = odd_num - 1; i++) {
		odd_var_son = odd_var_son + (odd[i] - odd_avg) * (odd[i] - odd_avg);
		}
		//분산을 구한다.
		odd_var = odd_var_son / (float)odd_num;

		printf("Number of odd numbers = %d\n", odd_num);
		printf("Sum of odd numbers = %d\n", odd_sum);
		printf("Average of odd numbers = %f\n", odd_avg);
		printf("Varianve of odd numbes = %f\n", odd_var);
	}

	return 0;

	}

 

12주차 필기 내용

#include <stdio.h>
#include <cmath>	
using namespace std;

int main() {
	int scores[3][4];
	int i, j;
	int m;

	int sum[3];
	float avg[3];

	int max[3];
	int mx;

	int min[3];
	int mn;

	float var[3];
	float son;

	float sd[3];

	int sum2[4];
	float avg2[4];

	int max2[4];
	int min2[4];

	float var2[4];
	float son2;

	float sd2[4];

	//입력받아서 2차원 배열 저장
	printf("Input scores of each of 3students");
	for (i = 0; i <= 2; i++) {
		for (j = 0; j <= 3; j++) {
			scanf_s("%d", &m);

			scores[i][j] = m;
		}
	}



	//각 학생별 Sum값 배열 구현 
	for (i = 0; i <= 2; i++) {

		sum[i] = 0;
		for (j = 0; j <= 3; j++) {
			sum[i] = sum[i] + scores[i][j];
		}
	}

	//각 학생별 Avg값 배열 구현 
	for (i = 0; i <= 2; i++) {
		avg[i] = (float)sum[i] / 4;
	}

	//각 학생별 Max값 배열 구현 
	for (i = 0; i <= 2; i++) {
		mx = scores[i][0];
		for (j = 0; j <= 3; j++) {
			if (mx < scores[i][j]) mx = scores[i][j];
		}

		max[i] = mx; 
	}
	//각 학생별 min값 배열 구현  
	for (i = 0; i <= 2; i++) {
		
		mn = scores[i][0];
		for (j = 0; j <= 3; j++) {
			if (mn > scores[i][j]) mn = scores[i][j];
		}
		min[i] = mn; 
	}
	//각 학생별 4과목에 대한 분산 배열 구현 
	for (i = 0; i <= 2; i++) {
		son = 0.0;
		for (j = 0; j <= 3; j++) {
			son = son + (scores[i][j] - avg[i]) * (scores[i][j] - avg[i]);
		}
		var[i] = son / 4; //학생별 4과목 성적을 처리했으므로 n=4로 나눔
	}
	//각 학생별 4과목에 대한 표준 편차 배열 구현 
	for (i = 0; i <= 2; i++) {
		sd[i] = sqrt(var[i]); //각 학생 i에 대한 분산에 루트씌워서 i각각에 대한 표준편차
	}

	/////////////////////////////////////////////////////////////////////
	//4과목 각각에 대한 학생들의 성적 합 
	for (j = 0; j <= 3; j++) {
		sum2[j] = 0;
		for (i = 0; i <= 2; i++) {
			sum2[j] = sum2[j] + scores[i][j];
		}
	}
	//4과목 각각에 대한 학생들 성적 평균 
	for (j = 0; j <= 3; j++) {
		avg2[j] = (float)sum2[j] / 3;
	}
	//4과목 각각에 대한 학생 성적 최고점 
	for (j = 0; j <= 3; j++) {
		max2[j] = scores[0][j];

		for (i = 0; i <= 2; i++) {
			if (max2[j] < scores[i][j]) max2[j] = scores[i][j];
		}
	}
	//4과목 각각에 대한 학생 성적 최저점
	for (j = 0; j <= 3; j++) {
		
		min2[j] = scores[0][j];
		
		for (i = 0; i <= 2; i++) {
			if (min2[j] > scores[i][j]) min2[j] = scores[i][j];
		}
	}
	//4과목 각각에 대한 학생들의 성적 분산 
	for (j = 0; j <= 3; j++) {
		
		son2 = 0.0;
		
		for (i = 0; i <= 2; i++) {
			son2 = son2 + (scores[i][j] - avg2[j]) * (scores[i][j] - avg2[j]);
		}
		var2[j] = son2 / 3;
	}

	//4과목 각각에 대한 학생들의 성적 표준편차
	for (j = 0; j <= 3; j++) {

		sd2[j] = sqrt(var2[j]);
	}


	//결과출력 
	printf("\n");
	printf("\n");
	printf("\tKor\tEng\tMath\tPhy\tSUM\tAVG\tMAX\tMIN\tVAR\tSD\n");
	for (i = 0; i <= 2; i++) {
		for (j = 0; j <= 3; j++) {
			printf("\t%d", scores[i][j]);
		}

		printf("\t%d", sum[i]);
		printf("\t%.2f", avg[i]);
		printf("\t%d", max[i]);
		printf("\t%d", min[i]);
		printf("\t%.2f", var[i]);
		printf("\t%.2f", sd[i]);
		printf("\n");
	}

	printf("SUM2");
	for (j = 0; j <= 3; j++) printf("\t%d", sum2[j]);
	printf("\n");

	printf("AVG2");
	for (j = 0; j <= 3; j++) printf("\t%.2f", avg2[j]);
	printf("\n");

	printf("MAX2");
	for (j = 0; j <= 3; j++) printf("\t%d", max2[j]);
	printf("\n");

	printf("MIN2");
	for (j = 0; j <= 3; j++) printf("\t%d", min2[j]);
	printf("\n");

	printf("VAR2");
	for (j = 0; j <= 3; j++) printf("\t%.2f", var2[j]);
	printf("\n");

	printf("SD2");
	for (j = 0; j <= 3; j++) printf("\t%.2f", sd2[j]);
	printf("\n");

	return 0;
}

13주차 필기 내용

//13-2main함수 내부에서 두 정수 입력받아서 합,평균 작성 프로그램 - (1)

#include <stdio.h>

int main() {
	int num1, num2;
	int sum;
	float avg;

	printf("Input two integer numbers: ");
	scanf_s("%d", &num1);
	scanf_s("%d", &num2);

	sum = num1 + num2;
	avg = (float)sum / 2;

	printf("%d + %d = %d\n	", num1, num2, sum);
	printf("Average = %.2f\n", avg);

	return 0;
}
-------------------------------------------------------------------------------------
//13-2강 
//외부 함수 선언 후, main에서 외부 함수 호출하여 처리하는 프로그램 - (2) 
//외부함수 만들기 - (3) 

#include <stdio.h>
//(1) 연산과 출력을 모두 외부함수 자체에서 처리할 경우 void (1) 
//반환할 것이 없으므로 sum연산과 avg연산을 한꺼번에 처리
void F_SumAndAverage(int x1, int x2) { //call by value
	int sum;
	float avg;

	sum = x1 + x2;
	avg = (float)sum / 2;

	printf("%d + %d = %d\n", x1, x2, sum);
	printf("Average = %.2f\n", avg);
}

//(2) 연산은 외부함수에서 하되, 출력은 main가서 할 경우 return 자료형으로 반환 (2) 
//이 경우 return은 한 번만 가능해서 sum함수 따로, avg함수 따로 처리 
 
int F_Sum(int x1, int x2) {
	int sum;

	sum = x1 + x2;
	 
	return sum;
}

float F_AVG(int x1, int x2) {
	float avg;

	avg = (float)(x1 + x2) / 2;

	return avg;
}
int main() {
	int num1, num2;
	int sum;
	float avg;

	printf("Input two integer numbers: ");
	scanf_s("%d", &num1);
	scanf_s("%d", &num2);
	
	sum = F_Sum(num1, num2);
	avg = F_AVG(num1, num2);

	printf("%d + %d = %d\n", num1, num2, sum);
	printf("Average = %.2f\n", avg);

	return 0;
}

//-그럼 retrun 여러 개 보내고 싶을 땐 ? = 포인터를 사용 !
//13-3강 포인터 = 주소 , 포인터로 받아서 변수 바꿔치기 
//값을 보내는 방법 - call by value(값) / call by reference(주소) 
#include <stdio.h>
void F_Swapping(int *x1, int *x2) {  //call by reference 
	int temp;

	printf("\n2 Before swapping in function\n");
	printf("num1 = %d, num2 = %d\n", *x1, *x2);

	//swapping
	temp = *x1;
	*x1 = *x2;
	*x2 = temp;
	
	printf("\n3After swapping in function\n");
	printf("num1 = %d, num2 = %d\n", *x1, *x2);

}
int main() {
	int num1, num2;
	int temp; //임시변수 선언

	printf("Input two integer numbers: ");
	scanf_s("%d", &num1);
	scanf_s("%d", &num2);
	
	printf("\n1Before swapping\n");
	printf("num1 = %d, num2 = %d\n", num1, num2);
	
	F_Swapping(&num1, &num2); // 매개변수로 값이 아닌 주소 

	printf("\n4After swapping\n");
	printf("num1 = %d, num2 = %d\n", num1, num2);

	return 0;
}

-------------------------------------------------------------------------------------
#include <stdio.h>
void F_Swapping(int *x1, int *x2) {
	int temp;

	printf("\n2 Before swapping in function\n");
	printf("num1 = %d, num2 = %d\n", *x1, *x2);

	//swapping
	temp = *x1;
	*x1 = *x2;
	*x2 = temp;
	
	printf("\n3After swapping in function\n");
	printf("num1 = %d, num2 = %d\n", *x1, *x2);

}
int main() {
	int num1, num2;
	int temp; //임시변수 선언

	printf("Input two integer numbers: ");
	scanf_s("%d", &num1);
	scanf_s("%d", &num2);
	
	printf("\n1Before swapping\n");
	printf("num1 = %d, num2 = %d\n", num1, num2);
	
	F_Swapping(&num1, &num2); // 매개변수로 값이 아닌 주소를 보내야 함 

	printf("\n4After swapping\n");
	printf("num1 = %d, num2 = %d\n", num1, num2);

	return 0;
}
 

14주차 필기 내용

14-2강 강의 내용 - 배열을 매개변수로 받는 외부 함수 사용 -(1)

#include <stdio.h>
int F_MAX(int s[], int size ) { 
	int max; 
	int i;

	max = s[0]; 
	for (i = 0; i <= size - 1; i++) {
		if (max < s[i]) max = s[i];
	}

	return max;
}
int F_MIN(int s[], int size ) {
	int min;
	int i;

	min = s[0];
	for (i = 0; i <= size - 1; i++) {
		if (min > s[i]) min = s[i];
	}

	return min;

}
int main() {
	int score[10]; //10개 입력받아서 10크기의 배열에 저장 
	int i;
	int max, min;
	int n;

	printf("Input 10 integer numbers: ");
	for (i = 0; i <= 9; i++) { //for문 돌면서 차례로 저장 
		scanf_s("%d", &n);
		score[i] = n;  //값을 받아서 넣음 
	}

	//배열 이름, 배열 크기 순으로 매개변수 
	max = F_MAX(score, 10); 
	printf("Max number = %d \n", max);

	min = F_MIN(score, 10);
	printf("Min number = %d \n", min);
	return 0;
}
//MAX,MIN 동시에 구하는 외부함수 구하기 - (2) 

#include <stdio.h>
//void로 사용-반환할 것 없음 
void F_MaxAndMin(int s[], int size, int* mx, int* mn) {	
	int i;
	
	*mx = s[0];
	for (i = 0; i <= size - 1; i++) {
		if (*mx < s[i]) *mx = s[i];
	}

	*mn = s[0];
	for (i = 0; i <= size - 1; i++) {
		if (*mn > s[i]) *mn = s[i];
	}
	//값은 반환하지 않지만 main으로 돌아갈 때 주소는 돌아감 
}
int main() {
	int score[10];
	int i;
	int max, min;
	int n;

	printf("Input 10 integer numbers: ");
	for (i = 0; i <= 9; i++) {  
		scanf_s("%d", &n);
		score[i] = n;  
	}
	F_MaxAndMin(score, 10, &max, &min); //외부함수에서 주소는 돌아와서 처리됨 
	//배열 이름, 크기, call by reference이용해서 여러 값 반환하기 

	printf("Max number = %d \n", max);
	printf("Min number = %d \n", min);
	
	return 0;
}









//14-3강 구조체 - 여러 개의 서로 다른 자료형을 하나의 집합 형태로 묶은 새로운 자료형을 의미 
//typedef struct : 자료형 묶음 
//각 학생의 4과목 성적을 하나의 구조체로 묶어서 처리함 (.)연산자를 활용해서 각각 지정

#include <stdio.h>
typedef struct course {
	int kor;
	int eng;
	int math;
	int phy;
	float avg;
};
int main() {
	struct course s0, s1; //구조체 자료형을 사용할 학생 두 명을 선언 
	int n;

	printf("Input scores of 4 subjects for each of two strudents: ");
	scanf_s("%d", &n); s0.kor = n;
	scanf_s("%d", &n); s0.eng = n;
	scanf_s("%d", &n); s0.math= n;
	scanf_s("%d", &n); s0.phy = n;

	s0.avg = (float)(s0.kor + s0.eng + s0.math + s0.phy) / 4;
	printf("Average of strudent s0 = %.2f\n", s0.avg);

	scanf_s("%d", &n); s1.kor = n;
	scanf_s("%d", &n); s1.eng = n;
	scanf_s("%d", &n); s1.math = n;
	scanf_s("%d", &n); s1.phy = n;
	
	s1.avg = (float)(s1.kor + s1.eng + s1.math + s1.phy) / 4;
	printf("Average of strudent s0 = %.2f\n", s1.avg);

	return 0;
}











//14-3강 구조체 - 여러 개의 서로 다른 자료형을 하나의 집합 형태로 묶은 새로운 자료형을 의미 
//typedef struct : 자료형 묶음 
//각 학생의 4과목 성적을 하나의 구조체로 묶어서 처리함 (.)연산자를 활용해서 각각 지정

#include <stdio.h>
typedef struct course {
	int subjects[4];
	int sum;
	float avg;
};
int main() {
	struct course s[3]; //구조체 자료형을 사용할 학생 두 명을 선언 
	int n;
	int i,j;

	printf("Input scores of 4 subjects for each of 3 strudents: ");
	
	for (i = 0; i <= 2; i++) { //학생
		for (j = 0; j <= 3; j++) { //과목
			scanf_s("%d", &n); s[i].subjects[j] = n;
		}

		s[i].sum = 0; 
		for (j = 0; j <= 3; j++) { // 3학생 각각 s[i]에 대한 subjects과목4개 배열값의 합 
			s[i].sum = s[i].sum + s[i].subjects[j];
		}
		s[i].avg = (float)s[i].sum / 4; //평균 
	}
	//결과 출력 
	printf("\tKOR\tENG\tMATH\tPHY\tSUM\tAVG\n");
	for (i = 0; i <= 2; i++) {
		printf("s%d", i); //학생 s0, s1, s2 지칭용

		for(j = 0; j <= 3; j++) {
			printf("\t%d", s[i].subjects[j]);
		}
		printf("\t%d", s[i].sum);
		printf("\t%.2f\n", s[i].avg);
	}
	return 0;
}
#include <stdio.h>
#include <cmath>	
using namespace std;

int main() {
	int scores[3][4];
	int i, j;
	int m;

	int sum[3];
	float avg[3];

	int max[3];
	int mx;

	int min[3];
	int mn;

	float var[3];
	float son;

	float sd[3];

	int sum2[4];
	float avg2[4];

	int max2[4];
	int min2[4];

	float var2[4];
	float son2;

	float sd2[4];

	//입력받아서 2차원 배열 저장
	printf("Input scores of each of 3students");
	for (i = 0; i <= 2; i++) {
		for (j = 0; j <= 3; j++) {
			scanf_s("%d", &m);

			scores[i][j] = m;
		}
	}



	//각 학생별 Sum값 배열 구현 
	for (i = 0; i <= 2; i++) {

		sum[i] = 0;
		for (j = 0; j <= 3; j++) {
			sum[i] = sum[i] + scores[i][j];
		}
	}

	//각 학생별 Avg값 배열 구현 
	for (i = 0; i <= 2; i++) {
		avg[i] = (float)sum[i] / 4;
	}

	//각 학생별 Max값 배열 구현 
	for (i = 0; i <= 2; i++) {
		mx = scores[i][0];
		for (j = 0; j <= 3; j++) {
			if (mx < scores[i][j]) mx = scores[i][j];
		}

		max[i] = mx; 
	}
	//각 학생별 min값 배열 구현  
	for (i = 0; i <= 2; i++) {
		
		mn = scores[i][0];
		for (j = 0; j <= 3; j++) {
			if (mn > scores[i][j]) mn = scores[i][j];
		}
		min[i] = mn; 
	}
	//각 학생별 4과목에 대한 분산 배열 구현 
	for (i = 0; i <= 2; i++) {
		son = 0.0;
		for (j = 0; j <= 3; j++) {
			son = son + (scores[i][j] - avg[i]) * (scores[i][j] - avg[i]);
		}
		var[i] = son / 4; //학생별 4과목 성적을 처리했으므로 n=4로 나눔
	}
	//각 학생별 4과목에 대한 표준 편차 배열 구현 
	for (i = 0; i <= 2; i++) {
		sd[i] = sqrt(var[i]); //각 학생 i에 대한 분산에 루트씌워서 i각각에 대한 표준편차
	}

	/////////////////////////////////////////////////////////////////////
	//4과목 각각에 대한 학생들의 성적 합 
	for (j = 0; j <= 3; j++) {
		sum2[j] = 0;
		for (i = 0; i <= 2; i++) {
			sum2[j] = sum2[j] + scores[i][j];
		}
	}
	//4과목 각각에 대한 학생들 성적 평균 
	for (j = 0; j <= 3; j++) {
		avg2[j] = (float)sum2[j] / 3;
	}
	//4과목 각각에 대한 학생 성적 최고점 
	for (j = 0; j <= 3; j++) {
		max2[j] = scores[0][j];

		for (i = 0; i <= 2; i++) {
			if (max2[j] < scores[i][j]) max2[j] = scores[i][j];
		}
	}
	//4과목 각각에 대한 학생 성적 최저점
	for (j = 0; j <= 3; j++) {
		
		min2[j] = scores[0][j];
		
		for (i = 0; i <= 2; i++) {
			if (min2[j] > scores[i][j]) min2[j] = scores[i][j];
		}
	}
	//4과목 각각에 대한 학생들의 성적 분산 
	for (j = 0; j <= 3; j++) {
		
		son2 = 0.0;
		
		for (i = 0; i <= 2; i++) {
			son2 = son2 + (scores[i][j] - avg2[j]) * (scores[i][j] - avg2[j]);
		}
		var2[j] = son2 / 3;
	}

	//4과목 각각에 대한 학생들의 성적 표준편차
	for (j = 0; j <= 3; j++) {

		sd2[j] = sqrt(var2[j]);
	}


	//결과출력 
	printf("\n");
	printf("\n");
	printf("\tKor\tEng\tMath\tPhy\tSUM\tAVG\tMAX\tMIN\tVAR\tSD\n");
	for (i = 0; i <= 2; i++) {
		for (j = 0; j <= 3; j++) {
			printf("\t%d", scores[i][j]);
		}

		printf("\t%d", sum[i]);
		printf("\t%.2f", avg[i]);
		printf("\t%d", max[i]);
		printf("\t%d", min[i]);
		printf("\t%.2f", var[i]);
		printf("\t%.2f", sd[i]);
		printf("\n");
	}

	printf("SUM2");
	for (j = 0; j <= 3; j++) printf("\t%d", sum2[j]);
	printf("\n");

	printf("AVG2");
	for (j = 0; j <= 3; j++) printf("\t%.2f", avg2[j]);
	printf("\n");

	printf("MAX2");
	for (j = 0; j <= 3; j++) printf("\t%d", max2[j]);
	printf("\n");

	printf("MIN2");
	for (j = 0; j <= 3; j++) printf("\t%d", min2[j]);
	printf("\n");

	printf("VAR2");
	for (j = 0; j <= 3; j++) printf("\t%.2f", var2[j]);
	printf("\n");

	printf("SD2");
	for (j = 0; j <= 3; j++) printf("\t%.2f", sd2[j]);
	printf("\n");

	return 0;
}

 

//위의 내용 합본 pdf 파일

프기 C언어 강의 총정리.pdf
1.36MB

728x90

'C++, C언어 > [문법]_C언어' 카테고리의 다른 글

C언어_ch10_정리  (0) 2021.12.20
C응용_ch09_정리  (0) 2021.12.20
혼.공.C언어_프로그램예제_전체코드정리  (0) 2021.07.27
혼.공.C언어_전범위_정리  (0) 2021.07.27
나도코딩_C언어_전범위정리  (0) 2021.07.27