2020.01.06 7장 배열
모든 예시들은 실전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;
}