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

来源:互联网 发布:mac android ndk path 编辑:程序博客网 时间:2024/05/22 23:38

习题3-6

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


#include <stdio.h>#include <stdlib.h>#define MAXN 100int 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 100char 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;}


0 0