| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2268 人关注过本帖
标题:生成新数问题(只剩下奇数)
只看楼主 加入收藏
牧人马
Rank: 4
等 级:业余侠客
威 望:6
帖 子:49
专家分:229
注 册:2017-12-24
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:7 
生成新数问题(只剩下奇数)
【题目描述】
编写函数Fun,其功能是:将整数n各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数。
【输入】
仅一行。一个整数n(0<n≤100000000)。
【输出】
仅一行。一个整数,表示组成的新数。

输入显示:
    27638496↵
输出显示:
    739↵

-------------------------------------------------------------------------------------------------------------------
以下是自己写的程序,
程序代码:
#include<stdio.h>
#include<math.h>
int num1(int a)
{
    int i,o;
    o=a;
    for(i=0; o>1; i++)
        o=o/10;
    printf("number=%2d\n",i);
    return i;
}

int Fun(int *pn)
{
    int a=*pn;
    int num=num1(a);
    int i,o,j=0,n=-1,m;
    for(i=0; i<num; i++)
    {
        o=a%10;
        a=a/10;
        if(o%2!=0)
        {
            n++;
            j=j+o*pow(10,n);
            printf("o=%d    j=%d\n",o,j);
        }
    }
    *pn=j;
}


int main()
{
    int n;
    scanf("%d", &n);
    Fun(&n);
    printf("%d\n", n);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

不知道自己错在哪里了,所以添加了其他输出。刚刚练习指针,不知道在这程序中指针用的地方恰当不恰当。
望指点,谢谢
搜索更多相关主题的帖子: 生成 Fun 整数 输出 int 
2017-12-24 11:45
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
#include <stdio.h>

int fun(int n)
{
    int i=1, j, k=0;
    for (; n; n/=10)
    {
        j = n%10;
        if (j&1)
        {
            k = i*j + k;
            i *= 10;
        }
    }
    return k;
}

main()
{
    int n;
    scanf("%d", &n);
    printf("%d\n", fun(n));
}
2017-12-24 12:31
牧人马
Rank: 4
等 级:业余侠客
威 望:6
帖 子:49
专家分:229
注 册:2017-12-24
收藏
得分:0 
回复 2楼 吹水佬
刚刚C语言不久,看不懂 for(;n;n/=10)中循环控制条件的n,return k(这是返回到函数的k中了吗?) 和 if(j&1)中&的意思,可以解释一下吗?

[此贴子已经被作者于2017-12-24 12:40编辑过]

2017-12-24 12:38
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:5 
回复 3楼 牧人马
等价于if (j%2)
具体了解可以搜搜位运算的用法~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-12-24 13:01
山东包子
Rank: 2
等 级:论坛游民
威 望:1
帖 子:33
专家分:58
注 册:2017-12-21
收藏
得分:5 
n/=10    就是  n=n/10 当n/10中的n  小于10时,,,n/10就等于0了,,循环就停止了。 设计整数除法的问题,,5/6 ,7/8 都等于0.


if(j&1)是位运算,任何一个偶数j &1的值就是0 ,  奇数j &1等于1
2017-12-24 13:03
牧人马
Rank: 4
等 级:业余侠客
威 望:6
帖 子:49
专家分:229
注 册:2017-12-24
收藏
得分:0 
回复 4楼 九转星河
谢谢
2017-12-24 13:16
牧人马
Rank: 4
等 级:业余侠客
威 望:6
帖 子:49
专家分:229
注 册:2017-12-24
收藏
得分:0 
回复 5楼 山东包子
嗯嗯,就是n=0是循环终止,n>0时循环吧,判断奇偶这个我以前都是用if(j%2==0)的,感觉用&更简单了,谢谢
2017-12-24 13:19
悠过三年
Rank: 2
等 级:论坛游民
帖 子:6
专家分:15
注 册:2017-12-24
收藏
得分:5 
#include "stdio.h"
int pf(int a,int n)
{int b=1,i;
for(i=0;i<n;i++)
b=b*a;
return b;}
int sa(int i)
{
    int a,b,x=0,c=0;
    b=i;
    a=i%10;
    while(b>=1)
    {
        if(a%2!=0)
        {
        c=c+a*pf(10,x);
        b=b/10;a=b%10;x++;
        }
    else
    {
        b=b/10;a=b%10;
    }
   
        }
return c;
}
void main()
{int r,s;
scanf("%d",&r);
s=sa(r);
printf("%d",s);
}
2017-12-24 14:47
快速回复:生成新数问题(只剩下奇数)
数据加载中...
 
   



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

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