A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Dmajor 中级黑马   /  2014-4-23 23:19  /  5412 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Dmajor 于 2014-4-24 13:44 编辑

我想用C语言写一个程序,输入任意整数,然后把这个整数的每一位都拆开再输出。
比如
输入:123456
输出:1、2、3、4、5、6
我是这样想的。
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. int bai_wei,shi_wei,ge_wei;
  5. bai_wei=869/10/10;
  6. shi_wei=869/10%10;
  7. ge_wei=869%10;
  8. printf("%d %d %d",bai_wei,shi_wei,ge_wei);
  9. return 0;
  10. }
复制代码

因为需要检查输入的数字的位数,所以我写的这个程序只能求出3位的整数,要是多于3位的就不正确了。
要想实现任意数的拆分应该如何改程序?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

9 个回复

倒序浏览
这个问题要用到数组吧,把接受的整数一位一位存到数组中,再按照索引一个一个打印出来算不算?
回复 使用道具 举报
在输入的时候,以字符串的形式接收,存放到字符数组,然后直接打印输出就可以阿
回复 使用道具 举报
看看我的
  1. #include <stdio.h>
  2. #define LEN 20
  3. int main()
  4. {

  5.         char s[LEN];
  6.         char *p;
  7.         p = s;
  8.         scanf("%s",s);
  9.         while(*p != '\0')
  10.         {
  11.                 printf("%c\n",*p);
  12.                 p++;
  13.         }
  14.        
  15.        
  16. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 董月峰 于 2014-4-24 06:42 编辑
  1. /*
  2. * 2.从键盘接受一个数字,列出该数字的中文表示格式
  3. 例如:
  4. 键盘输入123,打印出一二三
  5. 键盘输入3103,打印出三一零三
  6. */
  7. import java.util.Scanner;
  8. public class Test2 {
  9.         public static void main(String[] args)
  10.         {
  11.                 Scanner in=new Scanner(System.in);
  12.                 System.out.println("请输入数字");
  13.                 int number=in.nextInt();
  14.                 numCh(number);
  15.         }
  16.         /*
  17.          * 解题思路,定义一个转换的函数numCh,先转换左边第一位,
  18.          * 同时获取到数字的长度i+1[之后给数字+十百千万亿可用]
  19.          * 第二位是用原数字-第一位*10的i次方然后
  20.          * 再用用找第一位的方式弄出第二位来
  21.          * 之后类推循环搞定,
  22.          * void就省了return了
  23.          */
  24.         public static void numCh(int num)
  25.         {
  26.                 int i;
  27.                 int m=num;
  28.                 char[] chs={'零','一','二','三',
  29.                         '四','五','六','七',
  30.                         '八','九'};
  31.                 // char[] arr={0,1,2,3,4,5,6,7,8,9};没用到
  32.                 for(i=0;num>10;i++)
  33.                 {
  34.                         num=(int)num/10;//将数字化为个位数并强制装换成整形得到左边第一个数字
  35.                 }       
  36.                 System.out.print(chs[num]);
  37.                 // for循环找出了第一位,且知道了数字的长度为i+1
  38.                 // 下面用个while+for就行了,当然也可以用2个for嵌套
  39.                 while(i!=0)//i--直到找到个位为止
  40.                 {
  41.                         num=(int)(m-num*Math.pow(10,i));//新数字去掉第一位
  42.                         m=num;//得到少了左边第一位的数字
  43.                         for(int x=0;num>10;x++)
  44.                         {
  45.                                 num=(int)num/10;
  46.                         }       
  47.                         System.out.print(chs[num]);
  48.                         i--;
  49.                 }
  50.                
  51.                
  52.         }
  53. }
复制代码

这个题目的java形式我做过:D

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报 1 0
gaoxinglei123 来自手机 中级黑马 2014-4-24 07:22:07
地板
给楼主说两种情况吧。第一,跟楼上所说一样输入的其实是一个个字符,按字符处理。第二,如果楼主想把一个整数分开的话就。a%10;a=a/10;循环下去直到a=0。a%10就是就是每一位上的数。从个位到最高位

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 gmadong@163.com 于 2014-4-24 18:56 编辑

  1. #import <Foundation/Foundation.h>
  2. int c[100];

  3. int main(int argc, const char * argv[])
  4. {

  5.     int a =-1;
  6.     printf("请输入正整数 ");
  7.     scanf("%d",&a);
  8.    
  9.     if (a< 0) {
  10.          printf("输入不是正整数");
  11.         return 0;
  12.     }
  13.    
  14.     int temp = a;
  15.     int cIndex;
  16.     while (temp>0) //得的是倒序放到数组中
  17.     {
  18.         c[cIndex] = temp%10;
  19.         temp = temp/10;
  20.         printf("%d ",b);
  21.         cIndex++;
  22.         
  23.     }
  24.     printf("\n");
  25.    
  26.    
  27.     for (int i=cIndex-1; i>=0; i--) //倒着打印所有的数
  28.     {
  29.         printf("%d ",c);
  30.     }
  31.      printf("\n");
  32.    
  33.    
  34.    
  35.    
  36.     return 0;
  37. }
复制代码


回复 使用道具 举报
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         int yushu,n = 0;
  5.         long int a;
  6.         printf("输入整数\n");
  7.         scanf_s("%d", &a);

  8.         char b[100];

  9.         while (a != 0)
  10.         {
  11.                 yushu = 0;
  12.                 yushu = a % 10;
  13.                 b[n] = yushu;
  14.                 a = a - yushu;
  15.                 a = a/10;
  16.                 n++;
  17.         }

  18.         for (int k = n-1; k >= 0; k--)
  19.                 printf("%d ", b[k]);
  20.         return 0;
  21. }
复制代码

看看!
回复 使用道具 举报
pray 高级黑马 2014-4-26 00:32:39
9#
你逗逗他啊
回复 使用道具 举报
这题直接定义一个char数组 输进去后
输出一个元素加个符号就得了

何必用Int
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马