免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3296 | 回复: 10
打印 上一主题 下一主题

怎么把写好的段程序整理在一起! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-04 21:54 |只看该作者 |倒序浏览
题目:给出一个不多于5位的正整数,要求:1.求出它是几位数,2分别打印出每一位数字,3安逆序打印出各位数字,例如原数为123,应输出321.
本人的思想是先分步完成.
针对要求1:我写了如下的程序:

  1. #include<stdio.h>;
  2. #include<math.h>;
  3. void main()
  4. {{int x,y;
  5. scanf("%d",&x);
  6. if((x>;=0)&&(x<10))y=1;
  7.    else if((x>;=10)&&(x<100))y=2;
  8.      else if((x>;100)&&(x<=999))y=3;
  9.        else y=4;
  10.            printf("y=%d\n",y);
  11. }
复制代码

说明y是我定义的有几位数!
针对要求2,程序如下:

  1. #include<stdio.h>;
  2. #include<math.h>;
  3. void main()
  4. {int x;
  5. char p,t,h,th;
  6. scanf("%d",&x);
  7. if((x>;=0)&&(x<10))
  8.    {p=x;
  9.     printf("p=%d\n",p);
  10.    }               
  11. else if((x>;=10)&&(x<100))
  12.         {t=x/10;p=x%10;
  13.          printf("t=%d,p=%d\n",t,p);
  14.         }
  15.    else if((x>;100)&&(x<=999))                       {h=x/100;t=x%100/10;p=x%100%10;
  16.            printf("t=%d,p=%d,h=%d\n",t,p,h);
  17.           }
  18.      else {th=x/1000;h=x%1000/100;t=x%1000%100/10;p=x%1000%100%10;
  19.      printf("th=%d,h=%d,t=%d,p=%d\n",th,h,t,p);
  20.     }
  21. }
复制代码

说明p,t,h,th代表个位,十位,百位,千位!
要求3,程序如下:

  1. #include<stdio.h>;
  2. #include<math.h>;
  3. void main()
  4. {int x,a,b,c,d;
  5. scanf("%d,%d,%d,%d",&a,&b,&c,&d);
  6. if((x>;=0)&&(x<=9))
  7.    {x=d;
  8.   printf("d=%d\n",d);
  9.    }
  10.    else if((x>;=10)&&(x<=99))
  11.       {x=10*c+d;
  12.     printf("c=d%,d=%d\n",c,d);
  13.   }
  14.      else if((x>;=100)&&(x<=999))
  15.             {x=100*b+10*c+d;
  16.      printf("d=%d,c=%d,b=%d\n",d,c,b);
  17.     }
  18.        else {x=1000*a+100*b+10*c+d;
  19.          printf("d=%d,c=%d,b=%d,a=%d\n",d,c,b,a);
  20.      }
  21. }
复制代码

说明:a,b,c,d分别代表千位上的数字,百位上的数字,十位上的数字,个位上的说字,但是这段程序却存在着错误.第1:x赋值有问题;第2:就是得不到我想要的结果,输入4位正整数可以,但是3位,2位,1位就不行了,请帮忙改一下!

还有就是如何把这几段程序连接起来,形成一个完整的程序,一次输入,就能得到我想要的结果,我把前两段程序写在一起后,多用了两个{}来实现了它们的连接,但是每次的运行需要输入两次数字,才能得到我想要的结果,如何实现一次输入就得到要求的全部条件呢?这是我不能解决的!希望大家来指点一下,给我个完整的程序,本人不胜感激,这是本人自己做第一道有多个条件的题目,所以对我来说比较重要,希望大家指点的详细一点!

其中还有一个问题要问,就是在第2个要求里面,怎么修改程序,才能输出"千位是...百位是...十位是...个位是..."我尝试用#define,但是解决不了这个问题!这里希望大家指点的时候说的详细一些!

我是个初学者,可能编写的有很多漏洞,叫大家见笑了,我才学习到SWITCH语句,后面的还没有学习,有人说我学习过寒数了就可以很好的解决掉了,但我在没有学习到寒数之前就遇到了,我想书这样出自有它的道理,以本人现在所掌握的只能写到这一步了,请大家指点,本人不胜感激!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-04-04 22:26 |只看该作者

怎么把写好的段程序整理在一起!

你就写在一个文件里呀。
你用那么多main函数干嘛。
你难道没学过一个可执行程序里面,
只有一个main函数吗?

论坛徽章:
0
3 [报告]
发表于 2004-04-04 22:41 |只看该作者

怎么把写好的段程序整理在一起!

原帖由 "lenovo" 发表:
你就写在一个文件里呀。
你用那么多main函数干嘛。
你难道没学过一个可执行程序里面,
只有一个main函数吗?


我就是用了一个main函数啊,可是问题不是出在要输入3次才能得到我想要的结果吗?我想要的是输入一次,就得到我想要的3个结果,还有就是我上面说的如何把我那些定义的p,t...换成中文个位,十位...
希望版主能够说的清楚一些,我已经想了一下午了,把自己所掌握的都已经用上了,还有程序3那个错误你给帮忙指点一下!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-04-04 22:54 |只看该作者

怎么把写好的段程序整理在一起!

环境:win2kp,TC2.0

  1. #include <stdio.h>;

  2. int main(){
  3.         long int origin,tmp; /* 由于int型数据占用2个byte的空间,所以即使是unsigned int型的数据也最大只能表示65535,不能满足任意五位数的要求,所以使用long int型的数据。*/
  4.         int digitnum;
  5.         int digit[6];        /* 6位是为了最少留一位是-1,方便判断。*/
  6.         int i;

  7.         for ( i = 0; i < 6; i++)        /* 数组初始化 */
  8.                 digit[i] = -1;

  9.         printf("Please input a number < 100000:");
  10.         scanf("%ld",&origin);        /* 要用ld形式读入 */

  11.         if (origin<10) digitnum=1;                /* if else if句型,虽是嵌套,但是对齐写比较好,因为都是习惯了 */
  12.         else if (origin < 100) digitnum = 2;
  13.         else if (origin < 1000) digitnum = 3;
  14.         else if (origin < 10000) digitnum = 4;
  15.         else if (origin < 100000) digitnum = 5;
  16.         else {
  17.                 printf("Input error!\n");
  18.                 exit (-1);
  19.         }

  20.         printf("digitnum = %d\n",digitnum);       

  21.         tmp = origin;        /* 一般不在原始的数据上修改,这是好习惯。 */
  22.         i = 0;
  23.         while (tmp >; 0) {
  24.                 digit[i++] = tmp%10;
  25.                 tmp /= 10;
  26.         }                        /* 在数组中放入各个位数 */

  27.         i = 0;
  28.         while (digit[i] != -1){                /* 注意,以-1为界 */
  29.                 printf("%d ",digit[i++]);
  30.         }
  31.         printf("\n");

  32.         i--;
  33.         while ( i >;= 0 ) {
  34.                 printf("%d ",digit[i--]);
  35.         }
  36.         printf("\n");                        /* 正反各打印一遍,需要各种特殊的打印格式,可以自己修改。 */

  37.         exit (0);
  38. }
复制代码

被楼主的求知欲所感动,特写了这个代码,尽量用了详细的注释。
呵呵,楼主,不要着急,慢慢来。编程就和练内功一样,要有时间的磨练,不要急于求成。

论坛徽章:
0
5 [报告]
发表于 2004-04-04 23:48 |只看该作者

怎么把写好的段程序整理在一起!

楼主的编程风格太差了, 多看看别人的程序。(如楼上aero老兄的)

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-04-05 08:33 |只看该作者

怎么把写好的段程序整理在一起!

呵呵,谢谢,夸奖了。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-04-05 09:52 |只看该作者

怎么把写好的段程序整理在一起!

风中的枫叶,我觉得你要是想好好学习的话,
还是老老实实的靠自己吧。或者在自己周围
找一个能帮你的同学。你看你现在学了多少
东西,贴了多少个帖子来问问题。浪费了时间
不说,效率也不高。像你这样靠在论坛问,
不是打击你,我想你永远学不好c语言。
你写的那些程序都很基础,的确你是刚学,
但我想你出现那么多的错误,不能仅仅以
你是新手就可以给自己解脱。
不好意思,权当胡言乱语。

论坛徽章:
0
8 [报告]
发表于 2004-04-05 12:26 |只看该作者

怎么把写好的段程序整理在一起!

原帖由 "lenovo" 发表:
风中的枫叶,我觉得你要是想好好学习的话,
还是老老实实的靠自己吧。


学习看自己 论坛是偶尔解决问题和指引方向的地方

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2004-04-05 13:01 |只看该作者

怎么把写好的段程序整理在一起!

学习是件苦差使,
没有“玩着就学会了”这回事。

论坛徽章:
0
10 [报告]
发表于 2004-04-05 13:16 |只看该作者

怎么把写好的段程序整理在一起!

感动!!

风中的枫叶   你应该对上面的话多思考思考,我想你的求知欲望没的说了。
但应该找到一个适合自己的合理的方法。遇见问题自己多动手,多思考,对自己有信心,争取自己解决(书,网络,资料)。

我觉得一个人的自学能力是很重要的,技术是不可能学完的,只能掌握一个好的自学习方法,遇见新东西,在短时间内自己解决的能力。这是最宝贵的。

祝你早日实现你的理想的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP