标题:求解。谢谢!执行出错。
只看楼主
浅墨初白
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2018-3-29
结帖率:70%
已结贴  问题点数:30 回复次数:7 
求解。谢谢!执行出错。
题目:输入一个不大于五位的数,并输出它的逆序数
问:下面是我编的一小段,大概思路就差不多是这样,想问:这样没有报错但是执行的时候没有任何反应,为什么?
注:这样编程是因为我暂时只会这样。
#include<stdio.h>
#include<math.h>
void main()
{
    int x,a,b,c,d,e,y;
    scanf("%d,&x");
    if(x>0&&x<10)
    {a=x;
        y=a;
        printf("y=%d\n.y");
    }
    else if(x>=10&&x<100)
    {x=10*b+a;
        floor(b=x/10);
        a=x-10*b;
        y=a*10+b;
        printf("y=%d\n,y");
    }

搜索更多相关主题的帖子: 执行 出错 include void printf 
2018-04-09 22:08
yuandefeng
Rank: 4
等 级:业余侠客
威 望:3
帖 子:51
专家分:216
注 册:2017-11-28
得分:10 
在else语句中,只有x有初值,其他都没有初值。a,b都是不知道的值  怎么赋给x呢。
2018-04-09 22:13
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
得分:10 
#include<stdio.h>
void main()
{
    int x,bz;
    scanf("%d",&x);
        bz=x;
        while(bz>0)
        {
             bz=x / 10;
                printf("%d",x%10);
                x=bz;
            
        }
printf("\n");
}
觉得这个求逆序好些仅供参考

[此贴子已经被作者于2018-4-10 10:01编辑过]

2018-04-10 09:55
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
得分:0 
#include<stdio.h>
#include<math.h>
void main()
{
    int x;
    scanf("%d",&x);
    if (x<0) {printf("-");x=abs(x);}
        while(x>0)
        {
                printf("%d",x%10);
                x=x / 10;
        }
printf("\n");
}若有负数情况可以用这个。

[此贴子已经被作者于2018-4-10 10:14编辑过]

2018-04-10 10:12
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:540
专家分:1158
注 册:2016-9-17
得分:10 
#include<stdio.h>
#include<math.h>
void main()
{
    int x,a,b,c,d,e,y;
    scanf("%d,&x");// scanf("%d",&x);
    if(x>0&&x<10)
    {a=x;
        y=a;
        printf("y=%d\n.y");
    }
    else if(x>=10&&x<100)
    {x=10*b+a;        //a没有赋值
        floor(b=x/10);//这句没有意义,只是拖累运行速度,因为你定义的全是int型
                      //他会自动向下取整的;
        a=x-10*b;
        y=a*10+b;
        printf("y=%d\n,y");
    }

下面是我写的程序 ,同初学者
  相互讨论才能进步
#include<stdio.h>
main()
{
int x;
int a,b,c,d,e;
int x_x;
printf("输入一个不大于5位的数\n");
scanf("%d,&x");
if(x<0&x>99999)
   printf("error");
else
{
a=x/10000;//   万位
b=x%10000/1000;// 千位
c=x%1000/100;// 百位
d=x%100/10;// 十位
e=x%10;//   个位

x_x=e*10000+d*1000+c*100+b*10+a;
while(1)//消0
{
  if(x_x%10==0)
    x_x=x_x/10;
  else
       break;   
}
print("逆序数为%d",x_x);
}
}

穷举是最暴力的美学
2018-04-10 10:38
浅墨初白
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2018-3-29
得分:0 
回复 5楼 nosnoy
嗯嗯,相互交流,我水平不太好,望谅解!好多都看不懂。@-@
int x_x     是啥意思啊?我只见过输入单个未知数的
x%10 x%100/10 x%1000/100 x%10000/1000   emmmmn 我也不知道是啥意思
还有啊  你是把所有符合条件的数全带进else的那个大括号里了如果这个x取的是个位数的话只有e能有整值,但是abcd还是要算,但是算出来估计都是小于一的数,还是要带入x_x=......的式子里面。。。有点不理解
最后我想问,是不是我的那种笨方法编不出来程序呀?
2018-04-10 23:04
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:540
专家分:1158
注 册:2016-9-17
得分:0 
回复 6楼 浅墨初白
x_x是一个变量名,具体你可以百度下变量名的构成
%这是取余操作符
12%10=2;133%2=1;25%5=0;
x%10000/1000;
假设x等于1235
x%10000=1235;
x%10000/1000=1;
如果是个位数的话 只有e有值,
但是abcd都为0;//因为定义的是整型变量,不会出现小于0 的数,他会自动向下取整的
假设输入的是3的话
所以x_x会等于30000;
消0后x_x等于3

穷举是最暴力的美学
2018-04-11 09:14
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:540
专家分:1158
注 册:2016-9-17
得分:0 
回复 6楼 浅墨初白
笨办法一样可以出程序

但是假设让你自己算1加到n,你会一个个累加还是用高斯算法,

即使你用计算机编程序,你也可以这么编写;
1:
int sum=0,n;
scanf("%d",&n);
for(n;n>0;n--)
{
    sum+=n;
}
2:
int sum=0,n;
scanf("%d",&n);
sum=(1+n)*n/2;
两种都可以 但是当n的数很大时第一种就需要的时间很长;

复杂的东西让机器去做



穷举是最暴力的美学
2018-04-11 09:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485913-1-1.html




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

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