| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2652 人关注过本帖
标题:这道题用C语言咋做啊求大神指点
只看楼主 加入收藏
爱生活啊啊
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-2-11
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:13 
这道题用C语言咋做啊求大神指点
小明在家里实在是太无聊了,他就在想如果将一个数的数字顺序颠倒,然后再加上原来的数,就会得到了一个新的数。小明将这个新的数称为“反向数”。
例如,为了得到1325的“反向数”,首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原来的数,我们得到5231+1325=6556。如果颠倒之后的数有前缀零,前缀零将会被忽略。
这题用C语言咋写啊 求大神指点
搜索更多相关主题的帖子: C语言 数字 顺序 反向 前缀 
2019-02-11 13:13
李少iii
Rank: 4
来 自:KUNMING
等 级:业余侠客
威 望:2
帖 子:67
专家分:245
注 册:2018-10-4
收藏
得分:4 
/*小明在家里实在是太无聊了,他就在想如果将一个数的数字顺序颠倒,然后再加上原来的数,就会得到了一个新的数。小明将这个新的数称为“反向数”。
例如,为了得到1325的“反向数”,首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原来的数,我们得到5231+1325=6556。如果颠倒之后的数有前缀零,前缀零将会被忽略。
*/
////////////////////////////////
#include <stdio.h>
#include <math.h>
#define LOW 10
int main(void)
{
      int first,does,i,da;
      int sum=0,change=0;
      //int *arr;
   printf ("请输入你要进行操作的初始数\n");
   scanf ("%d",&first);

   //判断位数
   does=first;
   while (first)
      {
        first/=10;
        sum++;
      }

   first=does;//将first重置为初始值
        printf ("%d是个%d位数\n",first,sum);

    //颠倒位置
       int arr[sum];
       da=sum;

   for ( i=0;i<sum;i++)
  { *(arr+i)=does%10;
    does=(does-arr[i])/10;
        change+=(pow(LOW,--da))*arr[i];
  }
      printf("%d所求倒序数为%d,反向数为%d\n",first,change,change+first);

    return 0;
}
   可以达到题目目的了,写的不好,见谅

我不曾拥有梦想,但我坚信我有未来……
2019-02-11 15:25
cream111
Rank: 2
等 级:论坛游民
帖 子:2
专家分:21
注 册:2019-2-11
收藏
得分:1 
这题链接贴一下
2019-02-11 21:53
爱生活啊啊
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-2-11
收藏
得分:0 
回复 2楼 李少iii
谢谢呀
2019-02-11 23:32
爱生活啊啊
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-2-11
收藏
得分:0 
回复 3楼 cream111
没有链接的 ,书上的一道题
2019-02-12 08:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:1 
程序代码:
#include <stdio.h>

unsigned foo( unsigned n )
{
    unsigned m = 0;
    for( unsigned t=n; t!=0; t/=10 )
        m = 10*m + t%10;
    return m+n;
}

int main( void )
{
    printf( "%u\n", foo(1325) );
}
收到的鲜花
  • lxk17329422019-02-14 09:44 送鲜花  1朵  
2019-02-12 08:54
爱生活啊啊
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-2-11
收藏
得分:0 
回复 2楼 李少iii
#include <stdio.h>
#include <math.h>
#define LOW 10
int main(void)
{
      int first,does,i,da;
      int sum=0,change=0;
      //int *arr;
   printf ("请输入你要进行操作的初始数\n");
   scanf ("%d",&first);

   //判断位数
   does=first;
   while (first)
      {
        first/=10;
        sum++;
      }

   first=does;//将first重置为初始值
        printf ("%d是个%d位数\n",first,sum);

    //颠倒位置
       int arr[sum];
       da=sum;

   for ( i=0;i<sum;i++)
  { *(arr+i)=does%10;
    does=(does-arr)/10;
        change+=(pow(LOW,--da))*arr;
  }
      printf("%d所求倒序数为%d,反向数为%d\n",first,change,change+first);

    return 0;
}

Compiling...
1.c
C:\Windows\System32\1.c(24) : error C2143: syntax error : missing ';' before 'type'
C:\Windows\System32\1.c(28) : error C2065: 'arr' : undeclared identifier
C:\Windows\System32\1.c(28) : error C2100: illegal indirection
C:\Windows\System32\1.c(28) : error C2106: '=' : left operand must be l-value
C:\Windows\System32\1.c(30) : warning C4244: '+=' : conversion from 'double ' to 'int ', possible loss of data
Error executing cl.exe.

1.obj - 4 error(s), 1 warning(s)

为啥出来有错误类
2019-02-12 12:02
李少iii
Rank: 4
来 自:KUNMING
等 级:业余侠客
威 望:2
帖 子:67
专家分:245
注 册:2018-10-4
收藏
得分:1 
这是什么情况?,可我都编译成功了,也能运行
图片附件: 游客没有浏览图片的权限,请 登录注册

是编译的问题吧!

[此贴子已经被作者于2019-2-12 18:19编辑过]


我不曾拥有梦想,但我坚信我有未来……
2019-02-12 13:40
爱生活啊啊
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-2-11
收藏
得分:0 
回复 6楼 rjsp
这个得出来的结果应该是6556的,但题目的意思好像是输入任何一个数都可以的
2019-02-12 21:45
爱生活啊啊
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-2-11
收藏
得分:0 
回复 8楼 李少iii
,我用的是Microsoft C++6.0一直显示int arr[sum]这句和后面几句有问题(具体错误下面),我有点迷糊

#include<math.h>
#define LOW 10
int main (void)
{
    int first,does,i,da;
    int sum=0,change=0;
    printf("请输入\n");
    scanf("%d",&first);
    does=first;
    while (first)
    {
        first/=10;
        sum++;
    }
    first=does;
    printf("%d是个%d位数\n",first,sum);
    int arr[sum];
    da=sum;
    for (i=0;i<sum;i++)
    {*(arr+i)=does%10;
    does=(does-arr[i])/10;
    change+=(pow(Low,--da))*arr[i];
    }
    printf("%d所求倒序数为%d,反向数为%d\n",first,change,change+first);
    return 0;
}


Cpp1.cpp
C:\Windows\System32\Cpp1.cpp(18) : error C2057: expected constant expression
C:\Windows\System32\Cpp1.cpp(18) : error C2466: cannot allocate an array of constant size 0
C:\Windows\System32\Cpp1.cpp(18) : error C2133: 'arr' : unknown size
C:\Windows\System32\Cpp1.cpp(23) : error C2065: 'Low' : undeclared identifier
Error executing cl.exe.
2019-02-12 22:06
快速回复:这道题用C语言咋做啊求大神指点
数据加载中...
 
   



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

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