帮忙看个程序
//2.编写一个函数 int digit (int d, int k),
//求整数d从低位数过来的第k位的值,例如:digit(3728, 2) 等于7, digit(3728, 5) 等于0。
#include<stdio.h>
int digit(int d,int k);
int main()
{
int num;
int i;
int j;
printf("input a number for num:"); //输入数
scanf("%d",&num);
printf("input a number for i:"); //输入第几位
scanf("%d",&i);
j=digit( num, i);
printf("digit(%d,%d)=%d\n",num,i,j);
return 0;
}
int digit(int d,int k)
{
int a[100]={0};
int i=1;
int j;
int s=1;
int len=0;
do
{
for(j=0;j<i;j++)
s*=10;
a[i]=d%10;
d=d/10;
i++;
len++;
}while(a[i-1]!=0);
if(len<k)
return 0;
else
return a[len-k];
}
这个是我编的,有点麻烦,有人能帮我改进一下吗?重编也行
[解决办法]
#include<stdio.h>
int digit(int d,int k);
int main()
{
int num;
int i;
int j;
printf("input a number for num:"); //输入数
scanf("%d",&num);
printf("input a number for i:"); //输入第几位
scanf("%d",&i);
j=digit( num, i);
printf("digit(%d,%d)=%d\n",num,i,j);
return 0;
}
int digit(int d,int k)
{
int a[100]={0};
int i=0;
int len=0;
while(d!=0) //楼主原来的这个地方写的有点乱,整个程序按照你的思路改的~
{
a[i]=d%10;
d=d/10;
i++;
len++;
}
if(len<k)
return 0;
else
return a[k];
}
[解决办法]
int digit(int d,int k)
{
int temp=1;
int count=0;
while(count++<k){
temp*=10;
}
if(temp>d)
return 0;
else
return d/temp%10;
}