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.
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]);
}
#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);
}
}
'프로그래밍 > 쉽게 풀어쓴 C언어 Express' 카테고리의 다른 글
쉽게 풀어쓴 C언어 Express 11장 Exercise (1) | 2018.11.13 |
---|---|
쉽게 풀어쓴 C언어 Express 11장 Summary (0) | 2018.11.06 |
쉽게 풀어쓴 C언어 Express 10장 Exercise (2) | 2018.11.02 |
쉽게 풀어쓴 C언어 Express 10장 Summary (0) | 2018.10.29 |
쉽게 풀어쓴 C언어 Express 9장 Programming (0) | 2018.10.19 |