c语言-c基础问题,新手求解!

问题描述

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("%dn",i);
        else
        {
            j=x/100;
            if(j==0)
            {
                printf("%dn",j);
                printf("%d%dn",i,j);
            }
            else
            {
                k=x/1000;
                if(k==0)
                {
                    printf("%dn",k);
                    printf("%d%dn",i,j,k);
                }
                else
                {
                    z=x/10000;
                    if(z==0)
                    {
                        printf("%dn",z);
                        printf("%d%dn",i,j,k,z);
                    }
                    else
                    {
                        y=x/100000;
                        if(y==0)
                        {
                            printf("%dn",y);
                            printf("%d%dn",i,j,k,z,y);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

解决方案

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

解决方案二:

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

解决方案三:

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位为%dn",j,a[j]);
    printf("逆序输出:n");
    for(j=1;j<i+1;j++)
        printf("第%d位为%dn",j,a[j]);
    system("pause");
    return 0;

解决方案四:

    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位为%dn",j,a[j]);
    printf("逆序输出:n");
    for(j=1;j<i+1;j++)
        printf("第%d位为%dn",j,a[j]);
    system("pause");
    return 0;

这个不错

解决方案五:

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写的,改改也是一样的效果。
时间: 2025-01-26 19:23:09

c语言-c基础问题,新手求解!的相关文章

ios-oc语言命名规律新手求解

问题描述 oc语言命名规律新手求解 本人新手.刚学oc语言,发现oc里面好多命名都相同,问下oc命名出了见名知义外,还有什么规定么,比如什么不能和什么重名等 解决方案 http://wenku.baidu.com/link?url=Z-Hs9EILt8X-oF4tGK5s0f9jbuxUABHqzgvg_JTVRkEGq130zoWGBtkMPIbOV1m8FqS9El7rK0klzwEPO0cDZWkxW7WVcalpY9ZpexhD6EO 解决方案二: 还有类的名称约束.oc函数名称也是用的

新手-关于c++ string类的基础问题,求解!

问题描述 关于c++ string类的基础问题,求解! string name; string dessert; 和const int artsize = 20; char name[artsize]; char dessert[artsize];是不是一样,区别在哪里? cin.getline(name,artsize); cout<<' '; cin.getline(dessert,artsize); 和getline(cin,name); cout<<' '; getline

新手-关于c++运算符基础问题,求解!

问题描述 关于c++运算符基础问题,求解! fun(a+b,(x,y),fun(n+k,d,(a,b)));和 func(rec1,rec2+rec3,(rec4,rec5));两个都运用逗号运算符,结果都为3.请问为什么?介绍下逗号运算符.谢谢! 解决方案 多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值. 解决方案二: 多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值. 解决方案三: 逗号运算

c++ 新手-c++函数基础问题,求解!

问题描述 c++函数基础问题,求解! c++,请教用void 定义的函数怎么输出结果,例如void str_cat(char*p1,char*p2);还有利用2个函数求结果,怎么输出结果,例如 上面的str_cat函数和int str_len(char*p1,char*p2)函数,得出拼接的字符串和其长度.涉及的什么知识,我到c++ primer plus上去学学! 解决方案 其中用指针n传出参数 比如 char s1[100]="hello "; char s2[]="wo

c语言基础问题-C语言,闰年问题,求解

问题描述 C语言,闰年问题,求解 这个程序运行输入1900和2100显示是闰年但是实际不是啊.请问为什么? 解决方案 if("a%400 == 0") 这里的冒号... 解决方案二: 这个程序是哪个程序? 你需要判断 if (year % 4 == 0) { if (year % 100 != 0) { return true; } else { if (year % 400 == 0) return true; else return false; } } 解决方案三: 程序在这里,

《C语言程序设计:问题与求解方法》——3.2节用计算机求解问题的步骤

3.2 用计算机求解问题的步骤 前面介绍了很多有关C语言的基础语法知识,但仍然让人感觉千头万绪,不知从何处下手.其实,在进行编程时,只需重点关注变量.表达式.赋值语句(等少数几类语句).输入数据到变量和输出变量(或者表达式)的值.其中,变量是我们解决实际编程问题时的核心和主线. 遇到编程问题,思考的要点是: 1)对此问题需要定义哪些类型的几个变量. 2)哪些变量的值需要输入,即哪些已知的变量需要初始化. 3)如何根据已知的变量构造出合适的表达式,从而用赋值语句来求出未知变量的值. 4)将求出的变

数据-新手求解asp.net:asp.net中如何根据自己的需要动态的生成表格并能输入保存

问题描述 新手求解asp.net:asp.net中如何根据自己的需要动态的生成表格并能输入保存 新手求解asp.net:asp.net中如何根据自己的需要输入行列数动态的生成表格行和列,并且在网页中生成的表格能够对数据的输入并保存到后台数据库中,如果表格不能实现输入的话用文本框形式又如何解决?如何动态生成文本框并保存到数据库表格中,急啊,谢谢大神指点,好人一生平安0.0! 解决方案 asp.net 动态表格生成1.ASP.NET动态生成HTML页面Asp.net利用Jquery动态添加表格的行数

无线标记语言(WML)基础之WMLScript基础

WML Script是属于无限应用协议WAP应用层的一部分,使用它可以向WML卡片组和卡片中添加客户端的处理逻辑,目前最新的版本是1.1版.WML Script1.1是在欧洲计算机制造商协议会制定的ECMAScript脚本语言的基础上,经过修改和优化而指定的.它能够更好的支持诸如移动电话类的乍带宽通信设备,在WML编程中使用WML Script可以有效的增强客户端应用的灵活性,而且,我们也可以把WML Script作为一个工具使用,开发出功能强大的WAP网络应用和无限网页.本章我们将详细讲解WM

photoshop基础教程:新手扣图实例

今天给大家发一个photoshop基础教程:新手扣图实例,在通道里,白色代表有,黑色代表无,它是由黑.白.灰三种亮度来显示的,也可以这样说:如果我们想将图中某部分扣下来,即做选区,就在通道里将这这一部分调整成白. 图1 图片素材 1.当我们拿到一张图片的时候,首先应该先分析,此图更适合什么样的方法来做效果更好.打开此图,经观察,可以看出图的背景和前景色的差距比较大,所以,我们完全可以利用通道的方法来做. 2.分析完成,指定选用通道方案,现在开始实施,打开通道面板,然后在通道面板上对各通道进行观查