01/10/2018, 15:10
Bài toán đổi cơ số gặp lỗi khi debug
Có thể là do dùng hàm strcat_s sai cách…Mọi người giúp mình nhé…
//Bài toán đổi cơ số, cơ số tối đa là 16.
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
long po, A = 0;
char num[20], ch[20], G[20];
unsigned int i, fb, tb, len, sd, t[20];
//Nhập dữ liệu
printf("Enter a number: ");
gets_s(num);
printf("Base from: ");
scanf_s("%u", &fb);
printf("Base to: ");
scanf_s("%u", &tb);
//Tách số thành phần
len = strlen(num);
for (i = 0; i < len; i++)
{
switch (num[i])
{
case 'A': t[i] = 10; break;
case 'B': t[i] = 11; break;
case 'C': t[i] = 12; break;
case 'D': t[i] = 13; break;
case 'E': t[i] = 14; break;
case 'F': t[i] = 15; break;
default:
ch[0] = num[i];
t[i] = atoi(ch);
}
}
//Tính num ở cơ số 10 (A)
for (i = 0; i < len; i++)
{
po = pow(fb, len - (i + 1));
A = A + t[i] * po;
}
printf("
%s|10 = %ld
", num, A);
//Chuyển A sang cơ số đích
while (A != 0)
{
sd = A % tb;
switch (sd)
{
case 10: sprintf_s(ch, "%c", 'A'); break;
case 11: sprintf_s(ch, "%c", 'B'); break;
case 12: sprintf_s(ch, "%c", 'C'); break;
case 13: sprintf_s(ch, "%c", 'D'); break;
case 14: sprintf_s(ch, "%c", 'E'); break;
case 15: sprintf_s(ch, "%c", 'F'); break;
default: sprintf_s(ch, "%u", sd);
}
strcat_s(G, ch);
A = A / tb;
}
printf("%s|%u = %s|%u
", num, fb, _strrev(G), tb);
system("pause");
}
Bài liên quan