| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 616 人关注过本帖
标题:求助 希望有人帮忙一下 不会怎么编了
只看楼主 加入收藏
l2480035288
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2013-3-15
结帖率:73.33%
收藏
已结贴  问题点数:25 回复次数:9 
求助 希望有人帮忙一下 不会怎么编了
题目   编写一个函数Take(),该函数返回正整数n的第k位数字,例如,如果n为543210,则调用函数Take(n,0)返回数字0,而调用函数Take(n,3)返回数字3,注意数字的位次顺序是从右到左,从0开始。


#include<iostream.h>

int Take(int n,int i)
{
    int k=1,j;       //k代表位数,j代表第几位;
    cin>>n;      
    do
    {
        n=n/10;           //用除以10的次数来确定n的位数有几位;
        k++;
    }while(n%10<10||n%10==0);
    for(j=k;j<k;j--)        
        return i=n%10;         
}
int main()
{
    int n;
    cin>>n;
    cout<<"Take(n,i)"<<Take(int n,int i)<<endl;
}


请帮忙看看啊   不懂怎么调用Take()函数;不会怎么编下去了,思路有问题吗?
搜索更多相关主题的帖子: 数字 include return 正整数 
2013-04-26 21:01
zhangsi1
Rank: 2
来 自:安徽芜湖
等 级:论坛游民
帖 子:38
专家分:87
注 册:2012-10-4
收藏
得分:4 
l don't know
2013-04-30 17:11
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:4 
看了下,你这个程序写的一团糟啊!想法是对的,但是描述不对!
1、cout<<"Take(n,i)"<<Take(int n,int i)<<endl;这里面应该输入参数i,你没有输入;
2、 int k=1,j;       //k代表位数,j代表第几位;但是j应该有个值,没值怎么知道是哪一位呢?这个值应该从形式参数赋值而来;
3、while(n%10<10||n%10==0);不要说了,这个是恒成立的,任何数的个位数都不可能大于10(由n%10<10知道);判断条件不对;

修改如下:我给你定义很多变量,主要是因为为了保持你的原装性,所以才声明的:
#include<iostream.h>

int Take(int n,int i)
{
    int k=1,j,x,y=1,z=n;       //k代表位数,此处新声明x、y、z是为了后面的,不然数值都被你重新赋值了
    do
    {
        n=n/10;           //用除以10的次数来确定n的位数有几位;
        k++;
    }while(n>=10);
    for(j=k;j>=k-i;j--)        
    {
        x=z/y%10;
        y=10*y;
    }
    return x;
}
int main()
{
    int n,i;
    cout<<"请输入数n和所查询的位数:";
    cin>>n>>i;
    cout<<"Take(n,i)="<<Take(n,i)<<endl;
}


[ 本帖最后由 邓士林 于 2013-4-30 18:03 编辑 ]

Maybe
2013-04-30 17:46
鈴蘭
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:145
注 册:2013-4-1
收藏
得分:4 
#include<iostream>
using namespace std;
int Take(int n,int i)
{
    int k=0,m=0;
    m=n%10;
    n=n/10;
    if (i==k)
        return m;
     while(n/10)
    {
        m=n%10;
        n=n/10;           
        k++;
        if (i==k)        
            return m;      
    }
    if(++k!=i)
      cout<<"错误!"<<endl;  
    else
        return n;         
}void main()
{
    int n,i;
    cout<<"输入正整数n:"<<endl;
    cin>>n;
    cout<<"请确定要输出正整数的第i位数:"<<endl;
    cin>>i;
   cout<<"Take(n,i)="<<Take(n,i)<<endl;
}



[ 本帖最后由 鈴蘭 于 2013-4-30 23:13 编辑 ]

菜鸟一枚,回复如有错误,还望谅解!
2013-04-30 18:26
czzdcn123
Rank: 7Rank: 7Rank: 7
来 自:江西
等 级:黑侠
威 望:3
帖 子:258
专家分:510
注 册:2013-3-7
收藏
得分:4 
这是C++吧
2013-04-30 18:33
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:4 
Take(n,k)可以设计成这样的:如果n存在第k位数据(k=0,1,2,..),则计算结果为n的第k为数据,否则计算结果为-1,以下函数供参考:
int Take(int n,int k)
{
    int i;
    for(i=0;i<k ;i++)
     {
        n=n/10;
        if(n==0)
           break;
     }
    if(i<k)
       return -1;
    else
       return n%10;;
}
函数的递归形式:
int T(int n,int k)
{
    if(n==0&&k>=0)
      return -1;
    if(k==0)
       return n%10;
    return Take(n/10,k-1);
}
2013-04-30 19:27
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
回复 4楼 鈴蘭
输反了,要从右边开始

Maybe
2013-04-30 20:58
鈴蘭
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:48
专家分:145
注 册:2013-4-1
收藏
得分:0 
回复 7楼 邓士林
没有反,我的程序是从右边开始的,只是先前把 % 和 /的意义用反了,不过现在改过来了

菜鸟一枚,回复如有错误,还望谅解!
2013-04-30 23:18
chenzhibin07
Rank: 2
等 级:论坛游民
帖 子:57
专家分:64
注 册:2013-4-10
收藏
得分:4 
回复 楼主 l2480035288
#include <stdio.h>
#include <stdlib.h>

int take(int n,int m)
{  int k;
    do
    {k=n%10;
     n=n/10;
     if(n==0)
        {printf("该整数里没你要找的数!\n\n");
         getch();
         exit(0);
         }
     }while(k!=m);
  return k;
}        
int main(int argc, char *argv[])
{int n,m,i;
 printf("请输入任意整数;\n");
 scanf("%d",&n);
 printf("请输入您要找的一个整数;\n");
 scanf("%d",&m);
 i=take(n,m);
 printf("%d\n",i);
  
  system("PAUSE");   
  return 0;
}
2013-05-01 10:07
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
收藏
得分:4 
只能查右起第一次出现的位置,要是有重复的情况,就不行了?
2013-05-01 10:33
快速回复:求助 希望有人帮忙一下 不会怎么编了
数据加载中...
 
   



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

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