- 论坛徽章:
- 0
|
题目:给出一个不多于5位的正整数,要求:1.求出它是几位数,2分别打印出每一位数字,3安逆序打印出各位数字,例如原数为123,应输出321.
本人的思想是先分步完成.
针对要求1:我写了如下的程序:
- #include<stdio.h>;
- #include<math.h>;
- void main()
- {{int x,y;
- scanf("%d",&x);
- if((x>;=0)&&(x<10))y=1;
- else if((x>;=10)&&(x<100))y=2;
- else if((x>;100)&&(x<=999))y=3;
- else y=4;
- printf("y=%d\n",y);
- }
复制代码
说明y是我定义的有几位数!
针对要求2,程序如下:
- #include<stdio.h>;
- #include<math.h>;
- void main()
- {int x;
- char p,t,h,th;
- scanf("%d",&x);
- if((x>;=0)&&(x<10))
- {p=x;
- printf("p=%d\n",p);
- }
- else if((x>;=10)&&(x<100))
- {t=x/10;p=x%10;
- printf("t=%d,p=%d\n",t,p);
- }
- else if((x>;100)&&(x<=999)) {h=x/100;t=x%100/10;p=x%100%10;
- printf("t=%d,p=%d,h=%d\n",t,p,h);
- }
- else {th=x/1000;h=x%1000/100;t=x%1000%100/10;p=x%1000%100%10;
- printf("th=%d,h=%d,t=%d,p=%d\n",th,h,t,p);
- }
- }
复制代码
说明p,t,h,th代表个位,十位,百位,千位!
要求3,程序如下:
- #include<stdio.h>;
- #include<math.h>;
- void main()
- {int x,a,b,c,d;
- scanf("%d,%d,%d,%d",&a,&b,&c,&d);
- if((x>;=0)&&(x<=9))
- {x=d;
- printf("d=%d\n",d);
- }
- else if((x>;=10)&&(x<=99))
- {x=10*c+d;
- printf("c=d%,d=%d\n",c,d);
- }
- else if((x>;=100)&&(x<=999))
- {x=100*b+10*c+d;
- printf("d=%d,c=%d,b=%d\n",d,c,b);
- }
- else {x=1000*a+100*b+10*c+d;
- printf("d=%d,c=%d,b=%d,a=%d\n",d,c,b,a);
- }
- }
复制代码
说明:a,b,c,d分别代表千位上的数字,百位上的数字,十位上的数字,个位上的说字,但是这段程序却存在着错误.第1:x赋值有问题;第2:就是得不到我想要的结果,输入4位正整数可以,但是3位,2位,1位就不行了,请帮忙改一下!
还有就是如何把这几段程序连接起来,形成一个完整的程序,一次输入,就能得到我想要的结果,我把前两段程序写在一起后,多用了两个{}来实现了它们的连接,但是每次的运行需要输入两次数字,才能得到我想要的结果,如何实现一次输入就得到要求的全部条件呢?这是我不能解决的!希望大家来指点一下,给我个完整的程序,本人不胜感激,这是本人自己做第一道有多个条件的题目,所以对我来说比较重要,希望大家指点的详细一点!
其中还有一个问题要问,就是在第2个要求里面,怎么修改程序,才能输出"千位是...百位是...十位是...个位是..."我尝试用#define,但是解决不了这个问题!这里希望大家指点的时候说的详细一些!
我是个初学者,可能编写的有很多漏洞,叫大家见笑了,我才学习到SWITCH语句,后面的还没有学习,有人说我学习过寒数了就可以很好的解决掉了,但我在没有学习到寒数之前就遇到了,我想书这样出自有它的道理,以本人现在所掌握的只能写到这一步了,请大家指点,本人不胜感激! |
|