728x90
반응형
배열 요소를 역순으로 정렬하는 과정을 일일히 출력하는 프로그램을 작성하라.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define swap(tmp, x,y)do{tmp = x; x = y; y=tmp;}while(0)
void reverse(char *rst){
int rep = (int)strlen(rst),tmp;
for(int i=0;i<rep/2;i++){
swap(tmp,rst[i],rst[rep - i -1]);
printf("a[%d]과 a[%d]를 교환합니다.\n",i,rep-i-1);
for(int i=0;i<rep;i++) printf("%d ",rst[i]);printf("\n");
}
}
int main(){
char spr[] = " ,\n",str[10000],*pstr = str;
gets(str);
int num = strlen(str),cnt = 0;
// printf("num = %d",num);
char *rst = NULL;
rst = (char *)malloc(sizeof(char)*num);
char *token = strtok(str,spr);
while(token != NULL){
// printf("Token: %s\n",token);
rst[cnt] = atoi(token); cnt ++;
token = strtok(NULL,spr);
}
reverse(rst);
}
기수를 바꾸는 프로그램을 작성하되, 배열의 맨 앞쪽에 윗자리가 아니라 아랫자리를 저장하는 프로그램을 작성하라.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define swap(tmp, x,y)do{tmp = x; x = y; y=tmp;}while(0)
void reverse(char *rst){
int rep = (int)strlen(rst),tmp;
for(int i=0;i<rep/2;i++)swap(tmp,rst[i],rst[rep - i -1]);
}
int card_convr(unsigned x,int n,char arr[]){
/**
x: 바꾸고자하는 진수
n: 입력받은 숫자(진수 변환할 숫자)
arr: 배열이름
*/
char dchar[] = "0123456789ABCDEFGHIJKLMNOPRSTUVWXYZ";
int digits = 0;
if(x == 0)arr[digits++] = dchar[0];
else
while(x){
arr[digits ++] = dchar[x%n];
x/=n;
}
return digits;
}
int main(){
int x,n,rep;
char arr[37]={0};
printf("10진수를 기수변환합니다.\n변환할 숫자를 입력하세요: ");scanf("%d",&x);
do{printf("변환할 기수를 입력하세요(2-36): ");scanf("%d",&n);}while(n<2 || n>36);
rep = card_convr(x,n,arr);
reverse(arr);
printf("변환된 값을 출력합니다: ");
for(int i=0;i<rep;i++)printf("%c",arr[i]);
}
728x90
반응형
'Datastructure > [Algorithm]' 카테고리의 다른 글
[자료구조] 배열 연습문제(3): 행렬 (0) | 2022.01.19 |
---|---|
[자료구조] 연결리스트의 활용(1) : 위치 변환 (0) | 2022.01.17 |
[자료구조] 배열 연습문제(2): 뒤깁기 정보 (0) | 2022.01.14 |
[자료구조] 재귀 (0) | 2022.01.11 |
[자료구조] 분석 :비트 행렬 분석 알고리즘 (0) | 2022.01.10 |