" async="async"> ', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); 책 알려주는 남자 :: 쉽게 풀어쓴 C언어 Express 10장 Programming

10장 Programming


1.

#include <stdio.h>


void main()

{

int i;

int days[]={31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

for(i=0; i<12; i++)

printf("%02d은 %d일까지 있습니다.\n", i+1, days[i]);

}



2.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>


void main()

{

srand((unsigned)time(NULL));

int i,j, least, temp, array[10];

for(i=0; i<9; i++)

array[i] = rand()%100;

for(i=0; i<9; i++)

{

least = i;

for(j=i+1; j<10; j++)

if(array[j] < array[least])

least = j;

temp = array[i];

array[i] = array[least];

array[least] = temp;

}

for(i=0; i<10; i++)

printf("%d ", array[i]);

printf("\n");

printf("최소값은 %d이고 최대값은 %d입니다.", array[0], array[9]);

}



3.

#include <stdio.h>

#define SIZE 2


int array_equal(int a[], int b[], int size)

{

int i, result=0;

for(i=0; i<SIZE; i++)

{

if(a[i]==b[i]) result += 1;

else  result += 0;

}

return result;

}


void main()

{

int a[]={1, 2};

int b[]={1, 2};

if(array_equal(a, b, SIZE)==SIZE)

printf("원소가 같다.\n");

else

printf("원소가 다르다.\n");

}



4.

#include <stdio.h>
#define SIZE 2

void array_copy(int a[], int b[], int size)
{
int i;
for(i=0; i<SIZE; i++)
{
b[i]=a[i];
printf("%d ", b[i]);
}
}

void main()
{
int a[]={1, 2};
int b[SIZE];
array_copy(a, b, SIZE);
}

5.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define SIZE 10


void main()

{

srand((unsigned)time(NULL));

int i, max=0, a[SIZE]={0};        // 0으로 초기화 하지 않으면 쓰레기값이 들어간다

for(i=0; i<100; i++)

a[rand()%SIZE]++;

printf(" 난수 빈도수\n");

printf("===============\n");

for(i=0; i<SIZE; i++)

{

printf("%3d  %4d\n", i, a[i]);

if(a[i]>a[max])

max=i;

}

printf("가장 많이 생성된 수는 %d이다", max);

}


6.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define ROW 3

#define COL 5


void main()

{

srand((unsigned)time(NULL));

int i, j, sum=0, a[ROW][COL]={0};

for(i=0; i<ROW; i++)

{

for(j=0; j<COL; j++)

printf("%4d ", a[i][j]=rand()%100);

printf("\n");

}

printf("\n");

for(i=0; i<ROW; i++)

{

for(j=0; j<COL; j++)

sum+=a[i][j];

printf("%d행의 합은 %d입니다.\n", i+1, sum);

}

sum=0;

printf("\n");

for(j=0; j<COL; j++)

{

for(i=0; i<ROW; i++)

sum+=a[i][j];

printf("%d열의 합은 %d입니다.\n", j+1, sum);

}

}


7.

#include <stdio.h>

#define ROW 10

#define COL 3


void main()

{

int i, n, result=0, a[ROW][COL]={0};

for(i=0; i<ROW; i++)

{

a[i][1]=i+1;

a[i][2]=(i+1)*(i+1);

a[i][3]=(i+1)*(i+1)*(i+1);

}

printf("정수를 입력하시오: ");

scanf("%d", &n);

for(i=0; i<ROW; i++)

{

if(n==a[i][3])

{

printf("%d의 세제곱근은 %d", n, a[i][1]);

result=1;

break;

}

}

if (result==0)

printf("해당 정수의 세제곱근은 배열에 없습니다.");

}


8.

#include <stdio.h>      // 함수 통합

#include <stdlib.h>

#include <time.h>

#include <math.h>

#define SIZE 10


void main()

{

srand((unsigned)time(NULL));

int i, sum=0, a[SIZE]={0};

float mean, sd;

for(i=0; i<SIZE; i++)

{

printf("데이터를 입력하시오: %d\n", a[i]=rand()%100);

sum+=a[i]; 

}

printf("\n");

mean = sum/SIZE;

printf("평균값은 %f\n", mean);

sum=0;

for(i=0; i<SIZE; i++)

sum+=(a[i]-mean)*(a[i]-mean);

sd = sqrt(sum/SIZE);

printf("표준편차값은 %f\n", sd);

}


============================================

#include <time.h>        // 함수 분할

#include <math.h>

#define SIZE 10


float mean(int a[], int n);

void sd(int a[], int n, float mean);


void main()

{

srand((unsigned)time(NULL));

int i, a[SIZE]={0};

float m;

for(i=0; i<SIZE; i++)

printf("데이터를 입력하시오: %d\n", a[i]=rand()%100);

m=mean(a, SIZE);

sd(a, SIZE, m);

}


float mean(int a[], int n)

{

int i, sum=0;

float mean;

for(i=0; i<SIZE; i++)

sum+=a[i];

mean=sum/SIZE;

printf("평균값은 %f\n", mean);

return mean;

}


void sd(int a[], int n, float mean)

{

int i, sum=0;

float sd;

for(i=0; i<SIZE; i++)

sum+=(a[i]-mean)*(a[i]-mean);

sd = sqrt(sum/SIZE);

printf("표준편차값은 %f\n", sd);

}



9.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define ROW 5

#define COL 3


void exam(int grade[][COL]);


void main()

{

srand((unsigned)time(NULL));

int i, j, grade[ROW][COL]={0};

printf("학번  #1  #2  #3\n");

for(i=0; i<ROW; i++)

{

for(j=0; j<COL; j++)

grade[i][j]=rand()%101;

printf("%3d  %3d %3d %3d\n", i+1, grade[i][0], grade[i][1], grade[i][2]);

}

printf("\n");

exam(grade);

}


void exam(int grade[][COL])

{

int i, j, min, max;

for(i=0; i<ROW; i++)

{

min=0, max=0;

for(j=0; j<COL; j++)

{

if(grade[i][j]<grade[i][min])

min=j;

else if (grade[i][j]>grade[i][max])

max=j;

}

printf("%d번 학생의 최대 점수는 %d, 최소 점수는 %02d 이다.\n", i+1, grade[i][max], grade[i][min]);

}

}


10.

#include <stdio.h>


void vector_add(double x[], double y[], double z[])

{

int i;

for(i=0; i<3; i++)

{

z[i] = x[i] + y[i];

printf("%4lf ", z[i]);

}

printf("\n");

}


void vector_dot(double x[], double y[])

{

int i;

double sum=0;

for(i=0; i<3; i++)

sum += x[i]*y[i];

printf("%lf", sum);

}

void main()

{

double x[3]={1, 2, 3};

double y[3]={4, 5, 6};

double z[3]={0};

vector_add(x, y, z);

vector_dot(x, y);

}



11.

#include <stdio.h>


void main()

{

int n, a[]={1, 2, 3, 4, 5, 4, 3, 2, 1, 2};

while(1)

{

printf("찾고자 하는 상품 번호를 입력하시오(종료: -1) : ");

scanf("%d", &n);

if(n==-1) return 0; 

printf("%d번 상품은 %d번 장소에 있습니다.\n", n, a[n-1]);

}

}


12.

#include <stdio.h>


void scalar_mult (int a[][3], int scalar)

{

int  i, j;

for(i=0; i<3; i++)

{

for(j=0; j<3; j++)

printf("%2d ", a[i][j]*scalar);

printf("\n");

}

}


void transpose(int a[][3], int b[][3])

{

int i, j;

for(i=0; i<3; i++)

{

for(j=0; j<3; j++)

{

b[i][j] = a[j][i];

printf("%2d", b[i][j]);

}

printf("\n");

}

}


int main(void) 

{

int a[][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

int b[][3]={0};

scalar_mult(a, 2);

printf("\n");

transpose(a, b);

return 0;

}


13.★★★

#include <stdio.h>


void main()

{

int i, n, binary[32]={0}, count=0;

printf("10진수를 입력하시오 : ");

scanf("%d", &n);

for(i=0; i<32 && n>0; i++)

{

binary[i]=n%2;

n=n/2;

count++;

}

printf("변환된 2진수 값: ");

for(i=count-1; i>=0; i--)

printf("%d", binary[i]);

}



14.★★★

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define ROW 20

#define COL 20


int main()

{

srand((unsigned)time(NULL));

int i, j, n, m;

int visit, count=0;

int tile[ROW][COL]={0}; 

n=ROW/2, m=COL/2;

tile[n][m]=1;

while(1){

visit=0;

for(i=0; i<ROW; i++)

{

for(j=0; j<COL; j++)

{

if(tile[i][j]==1)

visit++;

}

}

if(visit==ROW*COL) break;

switch(rand()%8){

case 0 : 

if(n==0) break;

tile[n--][m]=1; 

count++; 

break;

case 1 : 

if(n==0 || m==COL-1) break;

tile[n--][m++]=1; 

count++; 

break;

case 2 : 

if(n==0 || m==COL-1) break;

tile[n][m++]=1; 

count++; 

break;

case 3 : 

if(n==ROW-1 || m==COL-1) break;

tile[n++][m++]=1; 

count++; 

break;

case 4 : 

if(n==ROW-1) break;

tile[n++][m]=1; 

count++; 

break;

case 5 : 

if(n==ROW-1 || m==0) break;

tile[n++][m--]=1; 

count++; 

break;

case 6 : 

if(m==0) break;

tile[n][m--]=1; 

count++; 

break;

case 7 : 

if(n==0 || m==0) break;

tile[n--][m--]=1; 

count++; 

break;

}

}

printf("딱정벌레의 총 이동수는 %d입니다.", count);

return 0;


15.

#include <stdio.h>

#define SIZE 100


void main()

{

int seive[SIZE]={0};  

int i, j;

for(i=2; i<SIZE; i++)

{

for(j=i+1; j<SIZE; j++)

{

if(j%i==0)

seive[j]=1;

}

}

for(i=2; i<SIZE; i++)

{

if(seive[i]==0)

printf("%d ", i);

}

}

블로그 이미지

얼음꿀차

책을 한 번 읽긴 읽어야겠는데 막상 읽자니 뭘 읽을지 고민되는 당신을 위해 읽을만한 책들을 알려드립니다!

,