初学c语言...请问只输入一个多位数,如何把个位、十位、百位等分开输出?

注意 是多位数,有可能还有千位、万位

这个代码的功能可以将所输入的数分解,并且根据提示可以输出你想输出位的数字,比如,你想输出个位上的数字

按q为退出程序

#include "stdio.h"

#define N 10

main()

{

 long n,i,a[N],k=0;

 char ch;

 printf("请输入任意数:\n");

  scanf("%d",&n);

 for(i=n;i>0;i/=10)

 {

  a[k++]=i%10;

 }

 for(i=k-1;i>=0;i--)

  printf("%d    ",a[i]);

 printf("\n");

 do

 {

  printf("请选择要输出位:(0代表个位,1代表十位,...)\n");

  scanf("%d",&i);

  if(i>=0&&i<k)

   printf("%d\n",a[i]);

  else

   printf("输入错误!\n");

 }while((ch=getch())!='q');

}

如果对你有所帮助,请记得采纳最佳答案,谢谢!

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-10-28
每次输入一个数回车,或以空格隔开,直到输入负数为止 #include<stdio.h建议你去找本C语言基础的书看看 你们学过数组了吧!用数组很简单
第2个回答  2010-10-28
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const int size = 11;
const char Bit[size][10] = {"个位","十位","百位","千位","万位","十万位","百万位","千万位","亿位","十亿位","百亿位"};
int main()
{
int i=0;
char sNum[100] = "";
char* pNumHead;
char* pNumEnd;
printf("请输入一个数字:\n");
scanf("%s",sNum);
pNumHead = sNum;
pNumEnd = pNumHead + strlen(pNumHead)-1;
if(strlen(pNumHead) > size)
{
printf("超出显示范围!\n");
system("PAUSE");
return -1;
}
printf("从低位到高位输出结果:\n");
i = 0;
while(pNumEnd != pNumHead - 1)
{
printf("%s:\n%c\n",Bit[i++],*pNumEnd--);
}
system("PAUSE");
return 0;
}
第3个回答  2010-10-28
#include<stdio.h>
int main()
{
__int64 n,tenthousand,thousand,hundred,ten,gewei;
scanf("%I64d",&n);
tenthousand=thousand=hundred=ten=gewei=0;
if(n/10000>0)
{
tenthousand=n/10000;
n=n%10000;
}
if(n%1000>0)
{
thousand=n/1000;
n=n%1000;
}
if(n%100>0)
{
hundred=n/100;
n=n%100;
}
if(n%10>0)
{
ten=n/10;
n=n%10;
}
if(n>0)
{
gewei=n;
}
if(tenthousand>0)
printf("万位位是%I64d\n",tenthousand);
if(thousand>0)
printf("千位位是%I64d\n",thousand);
if(hundred>0)
printf("百位位是%I64d\n",hundred);
if(ten>0)
printf("十位位是%I64d\n",ten);
if(gewei>0)
printf("各位位是%I64d\n",gewei);
}//很久没练了,这个你看看
第4个回答  2010-10-28
int a[10];//从0开始 代表 个 十 百 千 万 ......
int number;//你输入的数
int i=0;
while(number/10)
{
a[i++]=number%10;
number /= 10;
}
a[i++]=number%10;

初学c语言...请问只输入一个多位数,如何把个位、十位、百位等分开输出...
擅长:C\/C++ 汇编语言 向TA提问 私信TA 展开全部 这个代码的功能可以将所输入的数分解,并且根据提示可以输出你想输出位的数字,比如,你想输出个位上的数字 按q为退出程序 #include "stdio.h" #define N 10 main() { long n,i,a[N],k=0; char ch; printf("请输入任意数:\\n"); scanf("%d",&...

c语言中如何将偶数位整数等分截断为两个新的整数
思路:要想将偶数位整数等分截断为两个新的整数,首先需要求出该数的总长度,假设长度为2n。则前n为第一个整数,可以把原整数除以10的n次方求商得到;后n位为第二个整数,可以把原整数除以10的n次方求余得到。参考代码:include<string.h> include<stdio.h> include<math.h> int fun(int a){ ...

利用C语言编写一段程序,能够实现身份证的查询 用链表的形式查询,如查询...
身份证的前面2位表示的是省,接着的4位表示的是县市,需要有全国的身份证地区编码对照表才行,如果有表的话,直接查表是很容易的,至于合法性判断,主要是最后一位数字的效验,这个网上是可以找到算法的.

一个多位数,颠倒第一位和最后一位(比如12345,颠倒后为52341),新数字...
个位是z,十位及百位是y,x x+10y+100z=2(100x+10y+z)199x+10y=98z 所以x必须是偶数,否则等式不成立 如果x=2或4,找不到相应的z,x=6太大(z不能超过9)假设那是一个四位数 个位是z,千位是x,其余看作整体y x+y+1000z=2(1000x+y+z)1999x+y=998z 这其中y是这个数的中间...

c语言中如何将偶数位整数等分截断为两个新的整数
思路:要想将偶数位整数等分截断为两个新的整数,首先需要求出该数的总长度,假设长度为2n。则前n为第一个整数,可以把原整数除以10的n次方求商得到;后n位为第二个整数,可以把原整数除以10的n次方求余得到。参考代码:include<string.h>#include<stdio.h>#include<math.h>int fun(int a){int...

利用C语言编写一段程序,能够实现身份证的查询 用链表的形式查询,如查询...
long Code; \/\/地区代码,6位长 char Name[100];\/\/地区代码的名称,即地址信息 int Year;int Month;int Day;int Sex;PERSON_ID _id; \/\/18位个人身份证号码 } ID_INFOR;\/\/存放系统当前的日期和时间 typedef struct{ int year;int month;int day;int hour,minute, second;int weekday;}...

相似回答