问题链接:。入门练习题,用C语言编写程序。
问题简述:参见上述链接。
问题分析:进制转换问题,通常用除运算(/)和取余数运算(%)来实现。
程序说明:程序中,使用数组scale[]是为了提高程序的通用性。改变该数组的内容,就可以改变程序的功能,而不需要修改程序。
AC的C语言程序如下:
/* HDU2097 Sky数 */#include// 数字之和:将10进制的val转为base进制,并对各位求和int digitsum(int val, int base){ int sum = 0; while(val) { sum += val % base; val /= base; } return sum;}int main(void){ int n, sum, skyflag, i; int scale[] = {16, 12}; while(scanf("%d", &n) != EOF) { // 判定结束条件; if(n == 0) break; // 计算各位之和 sum = digitsum(n, 10); // Sky数判定 skyflag = 1; int len = sizeof(scale) / sizeof(int); for(i=0; i