C语言编程,写一函数digit(n,k),它把数n从右边起的第k位数字的值给出来,其中n为正整数,若n的位数不足k
则为0,,求步骤及讲解。本人刚学了小半年,觉得编的程序还比较简单,可是现在程序越来越不会编了,网上的答案真心看不懂啊,求大神指导!...
则为0,,求步骤及讲解。本人刚学了小半年,觉得编的程序还比较简单,可是现在程序越来越不会编了,网上的答案真心看不懂啊,求大神指导!
展开
5个回答
展开全部
#include<stdio.h>
int digit(int n,int k)
{
int i,temp1,temp2;
for(i = 0;i < k; i++)
{
temp1 = n%10;
n = n/10;
}
return temp1;
}
void main()
{
int n,k,result;
printf("请输入数字n和k:\n");
scanf("%d %d",&n,&k);
result = digit(n,k);
printf("%d从右边数第%d位为%d",n,k,result);
}
很简单的,你先看看,不懂了再问。望采纳!
int digit(int n,int k)
{
int i,temp1,temp2;
for(i = 0;i < k; i++)
{
temp1 = n%10;
n = n/10;
}
return temp1;
}
void main()
{
int n,k,result;
printf("请输入数字n和k:\n");
scanf("%d %d",&n,&k);
result = digit(n,k);
printf("%d从右边数第%d位为%d",n,k,result);
}
很简单的,你先看看,不懂了再问。望采纳!
追问
temp1求得了n的余数,又返回去了,那i是表示这个数的位数吗,咋还是不明白这个程序是怎么运行的呢
追答
你想一下简单的嘛!假设k为1,那么for循环只执行一次,temp1不就是直接就是最后一位吗?这时候n就储存了n原来位数-1位。
举个简单的例子好懂一些。
比如你n = 12345;k = 4;
此时for循环会被执行4次
执行第一次循环结束时:temp1 = n%10 = 5;n = n/10 = 1234; i = 0
执行第二次循环结束时:temp1 = n%10 = 4;n = n/10 = 123; i= 1
执行第三次循环结束时:temp1 = n%10 = 3;n = n/10 = 12; i= 2
执行第四次循环结束时:temp1 = n%10 = 2;n = n/10 = 1; i= 3
i只是一个计数器,用来控制循环的,k控制循环几次。也就是取余几次。懂了没?
展开全部
#include <stdio.h>
int digit( int n , int k )
{
int i=1;
while(n) //当n不为0时循环
{
if ( i==k ) //如果当前位置i与k相同,则返回当前数字
return n%10 ;
n/=10 ; //n缩小10倍,为的是下次n%10为要取的数字
i++; //位置数+1
}
return 0 ; //找不到匹配位置时,返回0
}
int main()
{
int ret=0;
ret=digit(76543,4) ;
printf("digit(76543,4)=%d\n" , ret );
ret=digit(12,4) ;
printf("digit(12,4)=%d\n" , ret );
return 0;
}
int digit( int n , int k )
{
int i=1;
while(n) //当n不为0时循环
{
if ( i==k ) //如果当前位置i与k相同,则返回当前数字
return n%10 ;
n/=10 ; //n缩小10倍,为的是下次n%10为要取的数字
i++; //位置数+1
}
return 0 ; //找不到匹配位置时,返回0
}
int main()
{
int ret=0;
ret=digit(76543,4) ;
printf("digit(76543,4)=%d\n" , ret );
ret=digit(12,4) ;
printf("digit(12,4)=%d\n" , ret );
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序给你了,你试下,不懂的可以追问:
#include<stdio.h>
int digit(int n,int k)
{
int t=k-1;
while(t>0)
{
n/=10;
t--;
}
if(n==0)
return 0;
else
return n%10;
}
void main()
{
int n,k;
scanf("%d%d",&n,&k);
printf("%d\n",digit(n,k));
}
#include<stdio.h>
int digit(int n,int k)
{
int t=k-1;
while(t>0)
{
n/=10;
t--;
}
if(n==0)
return 0;
else
return n%10;
}
void main()
{
int n,k;
scanf("%d%d",&n,&k);
printf("%d\n",digit(n,k));
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
引用你眼中_我蓝移的回答:
#include<stdio.h>
int digit(int n,int k)
{
int i,temp1,temp2;
for(i = 0;i < k; i++)
{
temp1 = n%10;
n = n/10;
}
return temp1;
}
void main()
{
int n,k,result;
printf("请输入数字n和k:\n");
scanf("%d %d",&n,&k);
result = digit(n,k);
printf("%d从右边数第%d位为%d",n,k,result);
}
很简单的,你先看看,不懂了再问。望采纳!
#include<stdio.h>
int digit(int n,int k)
{
int i,temp1,temp2;
for(i = 0;i < k; i++)
{
temp1 = n%10;
n = n/10;
}
return temp1;
}
void main()
{
int n,k,result;
printf("请输入数字n和k:\n");
scanf("%d %d",&n,&k);
result = digit(n,k);
printf("%d从右边数第%d位为%d",n,k,result);
}
很简单的,你先看看,不懂了再问。望采纳!
展开全部
没有分析k>n怎么办啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
明白了,好的。
追问
如digit(76543)=6,digit(12,4)=0,结果为0
追答
#include
#include
void main()
{
void digit(char n[],int k);
int a=156963565;
char s[81];
sprintf(s,"%d",a);
digit(s,4);
}
void digit(char n[],int k)
{
int len=strlen(n);
if(k>len)
printf("0\n");
else
printf("%c\n",n[len-k]);
}
我是将数存在一个字符串中,也可以不用a,直接将一个数字串存在字符串中,这样可以进行很大数的表示
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询