| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 875 人关注过本帖, 1 人收藏
标题:求正整数的第k位,分享一下你的解法来互相帮助学习
只看楼主 加入收藏
leileiyiyi
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-10-23
结帖率:80%
收藏(1)
已结贴  问题点数:20 回复次数:6 
求正整数的第k位,分享一下你的解法来互相帮助学习
题目要求如下:
 编写函数digit(n, k),使得函数返回正整数n中的第k位数字(从左边算起)。例如digit(83456, 2),返回3。当k大于n的实际位数时,返回-1。

 输入文件包含多组数据,每组数据包含2个正整数,分别对应题目中的n, k。输入以EOF结束。

 对于每组数据,输出一行,输出结果为函数digit(n, k)的返回值。
输入(例子):

83456 2
123 4
输出(例子)

3
-1
搜索更多相关主题的帖子: 正整数 学习 
2012-10-25 23:17
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:1 
这不是在处理数字,这是在处理字符串。

重剑无锋,大巧不工
2012-10-25 23:21
leileiyiyi
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-10-23
收藏
得分:0 
你有木有好的解法呢?能不能分享一下你的程序


2012-10-25 23:25
leileiyiyi
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-10-23
收藏
得分:0 
以下是引用beyondyf在2012-10-25 23:21:39的发言:

这不是在处理数字,这是在处理字符串。
有木有好的方法呢?一楼的大神
2012-10-26 00:26
xiayuqun2010
Rank: 2
等 级:论坛游民
帖 子:5
专家分:24
注 册:2012-10-25
收藏
得分:19 
我修改后的 希望有对你有帮助
#include<stdio.h>
struct number
{
    int h,l;
}stu[100];
 void main()
{
    int j,b=0,w;
    int digit(int n,int u);//函数调用
     while(1)//连续输入
    {       scanf("%d%d",&stu[b].h,&stu[b].l);
           b++;
           if(getchar()=='!')//设置退出健
                break;
    }
    w=b;
for(b=0;b<w;b++)//连续输出
    {  j=digit(stu[b].h,stu[b].l);
       printf("%d\n",j);
    }
}        
int digit(int n, int u)//函数的定义
{  
    int i,m,st[100];
    int k=1;
for(i=10;i<n;i=i*10)//确定你输入的数字的位数
{
  if((n/10)<10)
    if((n-10)<0)
      break;
   k++;
}
for(i=0;i<k;i++)//计算每一位的大小
{
    st[i]=n%10;
    n=n/10;
}
   if(u>k)//比较你想要的位数跟实际位数的大小
     return -1;
    else return   st[k-u];
}


[ 本帖最后由 xiayuqun2010 于 2012-10-26 10:16 编辑 ]
2012-10-26 09:59
leileiyiyi
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-10-23
收藏
得分:0 
我编译后无法运行的说。。。
2012-10-26 14:24
行走六月啥
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-11-14
收藏
得分:0 
#include<iostream>
using namespace std;
int digit(int n,int k)
{
    int i=0,j,s;
    while(i<k)
    {
       s=n%10;
       n=n/10;
       i++;
    }

    return s;
}
void main()
{
    int n,k,s,a=0;
    cin>>n>>k;
    while(n>0)
    {
        n=n/10;
        a++;
    }
    if(k>a)
        cout<<"error"<<endl;
    else
        cout<<digit(n,k)<<endl;
}


看看这个哪里有问题,若输入123,2,应该输出2,若123,4,输出error
2013-11-14 22:30
快速回复:求正整数的第k位,分享一下你的解法来互相帮助学习
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012316 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved