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
0