目录
1144:题目描述 输入一个十进制整数n,转换成2、3、7、8进制输出
1.1
1144:题目描述
输入一个十进制整数n,转换成2、3、7、8进制输出
要求程序定义一个dToK()函数,功能是将十进制数转化为k进制整数,其余功能在main()函数中实现。
void dToK(int n, int k, char str[])
{
//将n转化为k进制数,存入str
}
输入
输入一个int范围内的正整数n
输出
输出为4行,分别是n对应的2、3、7、8进制数
1.2
答案:
#include<stdio.h>
void dToK(int n, int k, char str[]);
int main()
{
int x;
char a[99999];
scanf("%d",&x);
dToK(x,2,a);
dToK(x,3,a);
dToK(x,7,a);
dToK(x,8,a);
return 0;
}
void dToK(int n, int k, char str[])
{
int i;
for(i=0; n!=0; i++,n=n/k)
str[i]=n%k;
for(i; i>0 ; i--)
printf("%d",str[i-1]);
printf("\n");
}
2.1
1145:题目描述
某辆汽车有一个里程表,该里程表可以显示一个整数,为该车走过的公里数。然而这个里程表有个毛病:它总是从3变到5,而跳过数字4,里程表所有位(个位、 十位、百位等)上的数字都是如此。例如,如果里程表显示15339,汽车走过1公里之后,该里程表显示15350。
输入
输入一个整数num,表示里程表显示的数值,长度不超过9位,且一定不含整数4。
输出
输出一个整数,表示实际行驶的里程。
2.2
答案:
循环模拟(数字较大时会超时):
#include<stdio.h>
#include<math.h>
int main()
{
int x,i,a=0,b,j,y[99999];
scanf("%d",&x);
for(i=0; a<x; i++)
{
a++;
for(j=0,b=a; b>0; j++)
{
y[j]=b%10;
b=b/10;
}
for(j;j>0;j--)
if(y[j-1]==4)
a=a+pow(10,j-1);
}
printf("%d",i);
}
进制转化(10进制转化9进制):