首页 > 代码库 > 算法竞赛入门经典 习题 3-5 3-6 进制转换

算法竞赛入门经典 习题 3-5 3-6 进制转换

习题3-6

输入基数b(2<=b<=10)和正整数n(十进制),输出n的b进制表示。 


#include <stdio.h>
#include <stdlib.h>
#define MAXN 100
int a[MAXN];

int main(int argc, char *argv[])
{
  int b, n, i = 0, j;
  scanf("%d %d", &b, &n);
  while(n/b != 0 || n%b != 0)
  {
     a[i++] = n%b;
     n = n/b;
  }
  for(j = i-1; j >= 0; j--)
     printf("%d", a[j]);
  printf("\n");
  system("PAUSE");	
  return 0;
}

总结:可以用n>0作为判断条件

习题3-7 

输入基数b(2<=b<=10)和正整数n(b进制),输出n的十进制表示。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MAXN 100
char a[MAXN];

int main(int argc, char *argv[])
{
  int b, length, i, j;
  int n = 0;
  scanf("%d", &b);
  scanf("%s", a);
  length = strlen(a);
  for(i = length-1, j = 0; i >= 0; i--, j++)
  {
     n = n + (a[i] - '0')*pow(b,j);
  }
  printf("%d\n", n);
  system("PAUSE");	
  return 0;
}


算法竞赛入门经典 习题 3-5 3-6 进制转换