2 qq 33486292 qq_33486292 于 2016.03.22 09:43 提问

c基础问题,新手求解!

给一个不多于5位数的正整数,要求:
1.求出它是几位数;
2.分别输出每一位数;
3.按逆序输出各位数字。
(我只用if语句写的代码如下,看看那些错了,非常感谢!)

#include<stdio.h>
int main()
{
    int x,i,j,k,z,y,s;
    scanf("%d",&x);
    if(x>99999&&x<0)
        printf("It is error");
    else
    {
        s=x/10;
        i=x%10;
        if(s==0)
            printf("%d\n",i);
        else
        {   
            j=x/100;
            if(j==0)
            {
                printf("%d\n",j);
                printf("%d%d\n",i,j);
            }
            else
            {
                k=x/1000;
                if(k==0)
                {
                    printf("%d\n",k);
                    printf("%d%d\n",i,j,k);
                }
                else
                {
                    z=x/10000;
                    if(z==0)
                    {
                        printf("%d\n",z);
                        printf("%d%d\n",i,j,k,z);
                    }
                    else
                    {
                        y=x/100000;
                        if(y==0)
                        {
                            printf("%d\n",y);
                            printf("%d%d\n",i,j,k,z,y);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

5个回答

abcd246781
abcd246781   2016.03.22 10:30
已采纳

断点调试,追踪每一步结果

oiu1010110
oiu1010110   2016.03.22 10:10

你完全可以把拆出来的每一个数存到一个数组里,然后看有几位,逆序输出不都很方便了吗?还有你的拆分每一个数可以用循环啊直接

herozhangbz
herozhangbz 单身……手速快怪我咯
2 年多之前 回复
oiu1010110
oiu1010110 哈哈哈⊙▽⊙ 你还是撸码凶啊 这么快
2 年多之前 回复
herozhangbz
herozhangbz 。。哥哥,你说的跟我想的完全一样。。
2 年多之前 回复
herozhangbz
herozhangbz 。。哥哥,你说的跟我想的完全一样。。
2 年多之前 回复
herozhangbz
herozhangbz   2016.03.22 10:10
int x,i=0,j=0,m;
int a[5];
    scanf("%d",&x);
    if(x>99999&&x<0)
        printf("It is error");
    else
    {
        do
        {
              m=x%10;
              x/=10;
              i++;
              a[i]=m;
        }while(x>0);
    }
    printf("输入的是%d位数\n",i);
    printf("正序输出:\n");
    for(j=i;j>0;j--)
        printf("第%d位为%d\n",j,a[j]);
    printf("逆序输出:\n");
    for(j=1;j<i+1;j++)
        printf("第%d位为%d\n",j,a[j]);
    system("pause");
    return 0;

herozhangbz
herozhangbz 嗯嗯,没仔细看,用的楼主的马甲改得
2 年多之前 回复
hwnd_windows
hwnd_windows x>99999||x<0
2 年多之前 回复
enpterexpress
enpterexpress   Rxr 2016.03.22 10:26
    int x,i=0,j=0,m;
    int a[5];
    scanf("%d",&x);
    if(x>99999&&x<0)
        printf("It is error");
    else
    {
        do
        {
              m=x%10;
              x/=10;
              i++;
              a[i]=m;
        }while(x>0);
    }
    printf("输入的是%d位数\n",i);
    printf("正序输出:\n");
    for(j=i;j>0;j--)
        printf("第%d位为%d\n",j,a[j]);
    printf("逆序输出:\n");
    for(j=1;j<i+1;j++)
        printf("第%d位为%d\n",j,a[j]);
    system("pause");
    return 0;

这个不错

haikuokuangtu
haikuokuangtu   2016.03.22 10:59

private static void ceShi1(int n){
int x=n;
int y;
int m;
String a[] ={"个","十","百","千","万"};
if (x<=0 || x>99999) {
if (x==0) {
System.out.println(x);
}else{
System.out.println("Error");
}
}else{
for (int i = 0; i < 5; i++) {
m = x/10;
y = x%10;
if (m==0 && y==0) {
System.out.println("结束");
break;
}else{
x = m;
}
System.out.println(a[i]+"位是"+y);
}
}

    用java写的,改改也是一样的效果。
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言基础(新手)---贪吃蛇代码参考交流~~~
本人小白,欢迎逛楼大佬指导和交流。现阶段只在15pb学习C语言(c++),所以代码都是C语言(注释也是比较多.....)。写贪吃蛇的时候还不熟悉c++的类的部分,也没有分装文件,所以直接就是按C语言的意思直接写上// snake.cpp : 定义控制台应用程序的入口点。 // #include &quot;stdafx.h&quot; #include &amp;lt;iostream&amp;gt; #include &amp;lt;w...
人工智能三个基础问题的思考——学习笔记(一)
1,机器学习是用怎样的思路解决问题的?我们在机器学习中面临的任务最典型的是:有很多数据,怎样从现有数据建立一个模型,通过这个模型来预测未知的数据。这相模型就是一个从自变量到目标变量的一个映射:可以表示成y=f(x),只要我建立起了这样的模型,那有了自变量x,就可以通过模型求出y。答:机器学习学习的过程就是建立模型并求解f的过程。常用的模型,有决策树、线性回归、逻辑回归、SVM等等,这么多模型哪一种...
Unity游戏开发基础知识(新手必看)
内容会持续更新,有错误的地方欢迎指正,谢谢! 0.Unity最大的优点 unity提供的最大优点就是跨平台。 以前项目移植很麻烦,现在只要一份代码,然后注意平台差异就好了。 1.灯光类型 平行光:DirectionalLight 有一个方向,用于模拟阳光 点光源:Point Light 一个球状,用于模拟灯泡,、爆炸等,别开启阴影运算以节约性能 聚光灯:Spot L...
java初学者要注意的问题
学习Java的同学注意了!!!  学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java!   写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家
C语言实现迷宫求解
最近做了一个用C语言迷宫求解的题目,来分享一下。 题目要求://迷宫的布局放入到一个二维的数组中 1代表该地方走不通为墙,0代表该地方可以走通,打印出来走的顺序  //0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 const int mizu[10][10] = {      1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1,  //0
ACM入门之新手入门
第一章 新手入门1.ACM国际大学生程序设计竞赛简介1)背景与历史1970年在美国TexasA&M大学举办了首次区域竞赛,从而拉开了国际大学生程序设计竞赛的序幕。1977年,该项竞赛被分为两个级别:区域赛和总决赛,这便是现代ACM竞赛的开始。在亚洲、美国、欧洲、太平洋地区均设有区域赛点。1995至1996年,来自世界各地的一千多支s代表队参加了ACM区域竞赛。ACM大学生程序设计竞赛由
迷宫问题的C语言求解
在工作了一年以后,又拿起了久违的数据结构教材,将其中的迷宫问题重新求解了一遍。其实迷宫问题的算法早已经被介绍的太多了,所以就直接上源码了。在关键的地方加了一点自己的理解。(英文版)
关于迷宫求解及其最优解的问题
关于迷宫问题,求解它的最优解的问题可以使用栈的概念来实现。简单的迷宫如下图 其中0表示可以走,1表示不能走,显然可见,若是以(3,1)点为入口,则有两个出口分别是(10,3)和(10, 8)。而两个出口的路径长度是不同的。这就产生了迷宫最优解的问题。 下面附上代码,我们寻找下一个位置是否可走的顺序是顺时针顺序,即上右下左。#pragma once #include<iostream> usi
运用栈求解迷宫问题C/C++
用栈解决基本的迷宫问题C/C++ 1、问题描述:设置迷宫为m*n的二维数组,起点坐标为(1,1),中点坐标为(m,n),0为通路,1为死路,为防止数组越界将四周设置边界1,即数组变为(m+2)*(n+2)数组,迷宫如下....      迷宫 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1
数据结构(C语言版)迷宫求解问题
初学数据结构和C语言,尝试实现了迷宫求解问题。代码组织比较差,改进的地方也有很多,博君一乐而已。希望能够帮助到别人