쉽게 풀어쓴 C언어 Express 11장 Programming
11장 Programming
1.
#include <stdio.h>
int main(){
int x=0x12345678;
unsigned char *xp=(char *)&x;
// x의 주소값을 char형으로 변환
printf("바이트 순서: %x %x %x %x\n", xp[0], xp[1], xp[2], xp[3]);
//xp의 배열을 출력
if(xp[0]=='Ctrl-R DC2') printf("해당 CPU는 빅엔디언입니다.\n");
else if (xp[0]=='x') printf("해당 CPU는 리틀 엔디언입니다.\n");
return 0;
}
2.
#include <stdio.h>
void get_sum_diff(int x, int y, int *p_sum, int *p_diff)
{
*p_sum=x+y;
*p_diff=x-y;
}
int main()
{
int x, y;
int p_sum;
int p_diff;
printf("두개의 정수를 큰 순서대로 입력하시오: ");
scanf("%d %d", &p_sum, &p_diff);
get_sum_diff(x, y, &x, &y);
printf("두 수의 합: %d\n", p_sum);
printf("두 수의 차: %d\n", p_diff);
return 0;
}
3.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10
void array_fill(int *A, int size){
int i;
for(i=0; i<SIZE; i++)
{
A[i]=rand();
printf("A[%d]=%d\n", i, A[i]);
}
}
void main(){
srand((unsigned)time(NULL));
int A[SIZE];
array_fill(A, SIZE);
}
4.
#include <stdio.h>
void array_print(int *A, int size){
int i;
printf("A[] = { ");
for(i=0; i<size; i++){
A[i]= i+1;
if(i==size-1) printf("%d");
else printf("%d, ", A[i]);
}
printf(" }\n");
}
void main(){
int A[5];
array_print(A, 5);
}
5.
#include <stdio.h>
void convert(double *grades, double *scores, int size){
int i;
printf("scores[] = { ");
for(i=0; i<size; i++){
scores[i]=100*grades[i]/4.3;
if(i==size-1) printf("%3.2lf }", scores[i]);
else printf("%3.2lf, ", scores[i]);
}
}
void main(){
double grades[] = { 1.5, 2.3, 2.6, 3.1, 3.3, 3.5, 3.85, 4.1, 4.21, 4.3};
double scores[10];
convert(grades, scores, 10);
}
6.
#include <stdio.h>
void array_copy (int *A, int *B, int size){
int i;
printf("B[] = {");
for(i=0; i<size; i++){
B[i]=A[i];
if(i==size-1) printf("%d }", B[i]);
else printf("%d, ", B[i]);
}
}
void main(){
int A[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int B[10];
array_copy(A, B, 10);
}
7.
#include <stdio.h>
void array_add (int *A, int *B, int *C, int size){
int i;
printf("각 사원들의 총 월급액 = {");
for(i=0; i<size; i++){
C[i]=A[i]+B[i];
if(i==size-1) printf("%d만원 }", C[i]);
else printf("%d만원, ", C[i]);
}
}
void main(){
int A[]={170, 132, 123, 124, 155, 186, 171, 189, 193, 210};
int B[]={30, 12, 15, 22, 38, 25, 55, 45, 36, 19};
int C[10]={0};
array_add(A, B, C, 10);
}
8.
#include <stdio.h>
int array_sum (int *A, int size){
int i, sum=0;
for(i=0; i<size; i++)
sum+=A[i];
return sum;
}
void main(){
int A[]={170, 132, 123, 124, 155, 186, 171, 189, 193, 210};
printf("지급할 월급 총액: %d만원", array_sum(A, 10));
}
9.
#include <stdio.h>
int search (int *A, int size, int search_value){
int i;
for(i=0; i<size; i++){
if(A[i]==search_value)
printf("%d번째 사원의 월급이 200만원입니다.\n", i+1);
}
return 0;
}
void main(){
int A[]={170, 200, 123, 124, 155, 186, 200, 189, 193, 210};
search(A, 10, 200);
}
10.
#include <stdio.h>
int get_gcd(int x, int y){
while(y!=0){
int a=x%y;
x=y;
y=a;
}
return x;
}
void get_lcm_gcd(int x, int y, int *p_lcm, int *p_gcd){
*p_gcd = get_gcd(x, y);
*p_lcm = (x*y) / *p_gcd;
}
void main(){
int x, y;
int lcm, gcd;
printf("두 개의 정수를 입력하시오 : ");
scanf("%d %d", &x, &y);
get_gcd(x, y);
get_lcm_gcd(x, y, &lcm, &gcd);
printf("두 수의 최소공배수는 %d이고 최대공약수는 %d 이다", lcm, gcd);
}
11.
#include <stdio.h>
#define SIZE 4
void merge(int *A, int *B, int *C, int size){
int i, a=0, b=0;
for(i=0; i<size*2; i++){
if(a<size && b<size){
if(A[a]<=B[b]){
C[i]=A[a];
a++;
}
else if(A[a]>B[b]){
C[i]=B[b];
b++;
}
}
else if(a==size){
C[i]=B[b];
b++;
}
else if(b==size){
C[i]=A[a];
a++;
}
}
}
void main(){
int A[SIZE] = {2, 5, 7, 8};
int B[SIZE] = {1, 3, 4, 6};
int C[SIZE*2]={0};
merge(A, B, C, SIZE);
print_merge(A, SIZE);
print_merge(B, SIZE);
print_merge(C, SIZE*2);
}
void print_merge(int *A, int size){
int i;
static ch = 'A';
printf("%c[] = {" , ch);
for(i=0; i<size; i++){
if (i==size-1) printf("%d }\n", A[i]);
else printf("%d, ", A[i]);
}
ch++;
}