프로그래밍 공부/C

2020.01.06 7장 배열

Rocketbabydolls 2020. 11. 4. 00:13

  모든 예시들은 실전C프로그래밍(21세기사, 나중채_김도년_김영갑_박천수_박태순_양효식_임필옥_장문정_장 윤_한동일 공저)에 수록되어 있는 것들입니다.


 


 

 


 

[문제 1] 배열에 5개의 정수를 입력 받아 저장하고, 평균보다 큰 정수를 모두 출력하시오.

int main(){

    int x[5],i;
    
    float mean=0;

    for(i=0;i<5;i++){
        scanf("%d",&x[i]);
        mean+=x[i];
    }
    mean/=5;

    for(i=0;i<5;i++){
        if(x[i]>(int)mean)printf("%d\n",x[i]);
    }

return 0;

}

 

[문제 2] 배열에 7개의 문자를 입력 받아서 저장하고, 문자 중에서 cat가 몇번 있는지 횟수를 출력하시오.

 

int main(){
    char ch[7];

    for(int i=0;i<7;i++) scanf("%c",&ch[i]);
    
    int cnt=0;
    
    for(int i=0;i<7;i++) {
        if(ch[i]=='c')
        if(ch[i+1]=='a')
        if(ch[i+2]=='t') cnt++; 
    }
    
    printf("%d",cnt);
    
    return 0;
}

 

[문제 3] 사용자에게서 정수 다섯 개를 입력 받는다. 첫 번쨰 큰 수와 두번째 큰 수를 각각 출력하시오.

 

 

int main(){
    int x[5],tmp;

    for(int i=0;i<5;i++) scanf("%d",&x[i]);

    for(int i=0;i<5;i++){
        for(int j=0;j<5;j++){
            if(x[i]<x[j]){
            
            tmp=x[i];
            x[i]=x[j];
            x[j]=tmp;
            
      		}
    	}
    }

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


return 0;
}

 

[문제 4] 배열에 10개의 숫자를 입력 받아서 저장하고 , 각 숫자의 개수만큼 별표를 출력하시오.

 

int main(){
    int x[10];
    for(int i=0;i<10;i++) scanf("%d",&x[i]);
    
    printf("1:");
    
    for(int i=0;i<10;i++){
    
        if(x[i]==1) printf("*");
    }
    
    printf("\n2:");
    
    for(int i=0;i<10;i++){
    
   		if(x[i]==2) printf("*");
    }
    
    printf("\n3:");
    
    for(int i=0;i<10;i++){
    
    	if(x[i]==3) printf("*");
    }

    return 0;
}

 

[문제 5] 영어 문자 다섯 개를 입력 받아거, 예시와 같이 한 번에 한 칸씩 shift 해서 출력하는 프로그램을 작성하시오.

 

int main(){
    char ch[5];
    char tmp;
    for(int i=0;i<5;i++) scanf("%c",&ch[i]);

    for(int i=0;i<5;i++){
        for(int j=5-i;j<5;j++){
        printf("%c",ch[j]);
    }

    for(int k=0;k<5-i;k++){
    	printf("%c",ch[k]);
    }


        printf("\n");
    }

    return 0;
}

 

[문제 6] hangman(행맨)게임 

int main(){
    char ch[3],ans[3],tmp;

    for(int i=0;i<3;i++) scanf("%c",&ch[i]);
    getchar();
   
   for(int j=0;j<5;j++){
        scanf("%c",&tmp);
        
        getchar();
       
        for(int k=0;k<3;k++)
        {
            if(tmp==ch[k]) ans[k]=tmp;
         }

        for(int i=0;i<3;i++){
            if (ch[i]==ans[i]) printf(" %c",ans[i]);
            else printf(" _");
        }
        printf("\n");
    }

    return 0;
}

 

 

[문제 7] 10개의 정수를 입력 받는다. 가 정수가 몇 번 등장했는지를 입력받은 순서대로 출력하시오.

입력 받은 숫자와 총 입력 횟수를 함께 출력하시오. 동일한 숫자에 대해서는 한번만 출력하시오.

 

 

int main(){
    int x[10],in[10]={0};
    int cnt=0;
    for(int i=0;i<10;i++) scanf("%d",&x[i]);

    for(int i=0;i<10;i++){
    
        if(in[i]>0) continue;
        
            for(int j=0;j<10;j++){
            
                if (x[j]==x[i]) {
                    cnt++;
                    in[j]+=1;
	}
}



printf("%d %d\n",x[i],cnt);
cnt=0;
}
return 0;
}

[문제 8] 

 

int main(){
int x[10];
int tmp;
for(int i=0;i<5;i++) scanf("%d",&x[i]);
for(int j=0;j<4;j++){
if(x[j]>x[j+1]){
tmp=x[j];
x[j]=x[j+1];
x[j+1]=tmp;
}
}

for(int i=0;i<5;i++)printf("%d\n",x[i]);
return 0;
}

 

[문제 9] 버블 정렬

int main(){

int x[5],tmp;
for(int i=0;i<5;i++)
scanf("%d",&x[i]);

for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
if(x[i]<x[j]){
tmp=x[i];
x[i]=x[j];
x[j]=tmp;
}
}
}

for(int i=0;i<5;i++){
printf("%d\n", x[i]);
}



return 0;
}

[문제 10] 사용자에게서 총 9개의 숫자를 입력 받아, 3X3 배열을 초기화 하시오.

  int main(){

int x[3][3],sum=0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
scanf("%d",&x[i][j]);


for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(i==j) sum+=x[i][j];

printf("%d",sum);



return 0;
}

[문제 11]

int main(){

int x[3][2],sum=0;
for(int i=0;i<3;i++)
for(int j=0;j<2;j++)
scanf("%d",&x[i][j]);


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

for(int j=0;j<2;j++){

 sum+=x[i][j];

}
printf("%d\n",sum);
sum=0;
}


return 0;
}

[문제 12]

  int main(){

char  ch[6][5]={{'Z','E','R','O','-'},{'O','N','E','-','-'},{'T','W','O','-','-'},{'T','H','R','E','E'},{'F','O','U','R','-'},{'F','I','V','E','-'}};
int input;
for(int i=0;i<3;i++){
scanf("%d",&input);
for(int j=0;j<5;j++){

printf("%c",ch[input][j]);
}
printf("\n");
}

return 0;
}

[문제 13] 

  int main(){

int x[3][3],y[2][2],tmp=0;

for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
scanf("%d",&x[i][j]);
}
}

for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
scanf("%d",&y[i][j]);
}
}

for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
printf(" %d",x[i][j]);
}
printf("\n");
}

for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
printf(" %d",y[i][j]);
}
printf("\n");
}

for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(x[i][j]==y[i-1][j]&&x[i][j+1]==y[i-1][j+1]){
if(x[i+1][j]==y[i][j]&&x[i+1][j+1]==y[i][j+1])
printf("%d %d",i,j);
tmp=1;
break;
}
}
if(tmp==1) break;
}
if(tmp==0) printf("none");

return 0;
}