黑马程序员技术交流社区
标题:
用C语言拆分任意一个整数?
[打印本页]
作者:
Dmajor
时间:
2014-4-23 23:19
标题:
用C语言拆分任意一个整数?
本帖最后由 Dmajor 于 2014-4-24 13:44 编辑
我想用C语言写一个程序,输入任意整数,然后把这个整数的每一位都拆开再输出。
比如
输入:123456
输出:1、2、3、4、5、6
我是这样想的。
#include <stdio.h>
int main(void)
{
int bai_wei,shi_wei,ge_wei;
bai_wei=869/10/10;
shi_wei=869/10%10;
ge_wei=869%10;
printf("%d %d %d",bai_wei,shi_wei,ge_wei);
return 0;
}
复制代码
因为需要检查输入的数字的位数,所以我写的这个程序只能求出3位的整数,要是多于3位的就不正确了。
要想实现任意数的拆分应该如何改程序?
作者:
愿我能
时间:
2014-4-23 23:29
这个问题要用到数组吧,把接受的整数一位一位存到数组中,再按照索引一个一个打印出来算不算?
作者:
流心语
时间:
2014-4-24 00:20
在输入的时候,以字符串的形式接收,存放到字符数组,然后直接打印输出就可以阿
作者:
董月峰
时间:
2014-4-24 06:37
本帖最后由 董月峰 于 2014-4-24 06:42 编辑
/*
* 2.从键盘接受一个数字,列出该数字的中文表示格式
例如:
键盘输入123,打印出一二三
键盘输入3103,打印出三一零三
*/
import java.util.Scanner;
public class Test2 {
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
System.out.println("请输入数字");
int number=in.nextInt();
numCh(number);
}
/*
* 解题思路,定义一个转换的函数numCh,先转换左边第一位,
* 同时获取到数字的长度i+1[之后给数字+十百千万亿可用]
* 第二位是用原数字-第一位*10的i次方然后
* 再用用找第一位的方式弄出第二位来
* 之后类推循环搞定,
* void就省了return了
*/
public static void numCh(int num)
{
int i;
int m=num;
char[] chs={'零','一','二','三',
'四','五','六','七',
'八','九'};
// char[] arr={0,1,2,3,4,5,6,7,8,9};没用到
for(i=0;num>10;i++)
{
num=(int)num/10;//将数字化为个位数并强制装换成整形得到左边第一个数字
}
System.out.print(chs[num]);
// for循环找出了第一位,且知道了数字的长度为i+1
// 下面用个while+for就行了,当然也可以用2个for嵌套
while(i!=0)//i--直到找到个位为止
{
num=(int)(m-num*Math.pow(10,i));//新数字去掉第一位
m=num;//得到少了左边第一位的数字
for(int x=0;num>10;x++)
{
num=(int)num/10;
}
System.out.print(chs[num]);
i--;
}
}
}
复制代码
这个题目的java形式我做过:D
作者:
gaoxinglei123
时间:
2014-4-24 07:22
给楼主说两种情况吧。第一,跟楼上所说一样输入的其实是一个个字符,按字符处理。第二,如果楼主想把一个整数分开的话就。a%10;a=a/10;循环下去直到a=0。a%10就是就是每一位上的数。从个位到最高位
作者:
gmadong@163.com
时间:
2014-4-24 08:27
本帖最后由 gmadong@163.com 于 2014-4-24 18:56 编辑
#import <Foundation/Foundation.h>
int c[100];
int main(int argc, const char * argv[])
{
int a =-1;
printf("请输入正整数 ");
scanf("%d",&a);
if (a< 0) {
printf("输入不是正整数");
return 0;
}
int temp = a;
int cIndex;
while (temp>0) //得的是倒序放到数组中
{
c[cIndex] = temp%10;
temp = temp/10;
printf("%d ",b);
cIndex++;
}
printf("\n");
for (int i=cIndex-1; i>=0; i--) //倒着打印所有的数
{
printf("%d ",c);
}
printf("\n");
return 0;
}
复制代码
作者:
FlyTrem
时间:
2014-4-24 10:04
#include<stdio.h>
int main()
{
int yushu,n = 0;
long int a;
printf("输入整数\n");
scanf_s("%d", &a);
char b[100];
while (a != 0)
{
yushu = 0;
yushu = a % 10;
b[n] = yushu;
a = a - yushu;
a = a/10;
n++;
}
for (int k = n-1; k >= 0; k--)
printf("%d ", b[k]);
return 0;
}
复制代码
看看!
作者:
pray
时间:
2014-4-26 00:32
你逗逗他啊
作者:
251638256
时间:
2014-4-26 20:16
这题直接定义一个char数组 输进去后
输出一个元素加个符号就得了
何必用Int
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2