孙悟空皮肤至尊宝好吗:写个函数int digit(long int n, int k)返回长整数n从右边开始第k个数字的值,若不存在第k个数字则返回-1。

来源:百度文库 编辑:高考问答 时间:2024/05/12 13:51:07
这道题用c语言怎么做啊~~???
如:digit(1234567,2)=6 digit=(9831,5)=-1题中的dight应改为digit~不好意思啊~打错了啊~

我也用VC写了个C语言版的,看看吧

#include <stdio.h>

////////////////////////////
//异常处理我没做!
int digit(long int n, int k)
{
if(k <= 0) return -1;//没办法,这是题目给定的函数声明的参数漏洞
if(n == 0 && k == 1) return 0;
unsigned long i = 1;
n = (n < 0 ? -n: n);//这行可以用n=abs(n)替换
for(k = k - 1; k > 0; k--) i *= 10;//整个循环可以用i=(unsigned long)pow(10,k-1)替换
if((unsigned)n >= i)
return ((int)(n / i) % 10);
return -1;
}

void main(void)
{
digit(-0, 1);//返回0
digit(-0, 2);//返回-1
digit(127, 2);//返回2
digit(1,-1);//返回-1
digit(12,1.1);//返回2
digit(12,0.1);//返回-1
}

main()
{
int digit();
long n;
int k,r;
k=0;r=0;n=0;
scanf("%ld,%d",&n,&k);
r=digit(n,k);
printf("%d",r) ;
getch();
}

int digit(long int n, int k )
{
int i,j;
j=0;
for(i=1;i<=k;i++)
{

j=n%10;
n=n/10;

}
if (n>0) return j;
else return -1;
}