C语言 编写一个程序,输入一个正整数,求出它是几位数。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 编写一个程序,输入一个正整数,求出它是几位数。相关的知识,希望对你有一定的参考价值。
思路:求一个正整数n的位数可以先定义一个变量num,并初始化为0,依次把该整数n除以10,直到其为0为止,并且每除一次10,变量num的个数就自加1,最后num的值就是该整数n的位数。
参考代码:
#include <stdio.h>
int main()
int n,num=0;
scanf("%d",&n);
while(n)
num++;
n/=10;
printf("%d\\n",num);
return 0;
/*
输出:
123456
6
*/
int count=0;
while(num!=0)
num=num/10;
count++;
return count;
参考技术B
#include <stdio.h>
int weishu(long n,int a[])
int i=0;
while(n)
a[i++]=n%10;
n/=10;
return i;
void main (void)
long n;
int k,i,j,t,a[20];
scanf("%ld",&n);
printf("原数:%ld\\n",n);
k=weishu(n,a);
printf("位数:%d\\n",k);
for(i=0;i<k-1;i++)
for(j=0;j<k-1-i;j++)
if(a[j]>a[j+1])
t=a[j];a[j]=a[j+1];a[j+1]=t;
printf("从小到大:");
for(i=0;i<k;i++)
printf("%d",a[i]);
printf("\\n从大到小:");
for(i=k-1;i>=0;i--)
printf("%d",a[i]);
printf("\\n");
getch();
参考技术C 自定义一个不限定长度的字符串输入函数,在主函数中调用输入数字字符串后求字符串各元素代表的十进制数字之和。举例代码如下:C语言程序求解
给一个不多于5位的正整数,按要求给出结果。
要求:
1)求出它是几位数;2)按正序分别打印出每一位数字;3)按逆序打印出每一位数字;4)询问用户是否继续输入。
答题要求:
1)编写一个函数求出它是几位数int fun1(int num),要求在主函数中根据函数返回值输出信息。
2)编写一个函数按正序分别打印出每一位数字;要求不能直接将整数输出,应分别取出每位数字输出;
3)编写一个函数按逆序打印出每一位数字;
4)以上两个函数推荐原型为void fun2(int num,int n),第一个参数为正整数,第二个参数为正整数的位数,直接在函数里面输出结果;
5)编写main函数,输入正整数num,先后调用3个函数。
6)在main函数中询问用户是否继续输入。
#include<windows.h>
void OutReverse(int num,int n) //反序输出
int i,j;
for(i=1,j=1;i<=10000 && j<=n;i*=10,j++)
printf("%d ",num/i%10);
printf("\\n");
void OutJust(int num,int n) //正序输出
int i=1,j;
for(j=0;j<n-1;j++)
i=i*10;
for(;i>=1;i/=10)
printf("%d ",num/i%10);
printf("\\n");
int fun1(int num) //返回整数的位数
if((num/10000)>=10) return(-1);else
if((num/10000%10)>=1) return(5);else
if((num/1000%10)>=1) return(4);else
if((num/100%10)>=1) return(3);else
if((num/10%10)>=1) return(2);else
if((num/1%10)>=1) return(1);else
return(0);
main()
int i,ws;
int p;
while(1)
p=0;
printf("输入数字:");
scanf("%d",&i);
ws=fun1(i);
printf("%d\\n",ws); //调用求位数
OutReverse(i,ws); //调用反序
OutJust(i,ws); //调用正序
printf("继续输入: Y(y) 结束输入任意键:\\n");
scanf("%d",&p);
if(p==1) system("cls");
else exit(0);
参考技术A #include <stdio.h>
#include <string.h>
int fun1(int num)
char tmp[10];
sprintf(tmp,"%d",num);
return strlen(tmp);
void fun2(int num,int n)
char tmp[10];
long i;
sprintf(tmp,"%d",num);
for(i=0;i<n;++i)
printf("%c",tmp[i]);
printf("\n");
for(i=n-1;i>=0;--i)
printf("%c",tmp[i]);
printf("\n");
int main()
char c;
long num,ws;
be:
scanf("%d",&num);
ws=fun1(num);
printf("%d\n",ws);
fun2(num,ws);
printf("Continue?Y\\N");
while(1)
c=getchar();
if(c=='N' || c=='n')
return 0;
else if(c=='y' || c=='Y')
goto be;
参考技术B 我是新手,不懂
以上是关于C语言 编写一个程序,输入一个正整数,求出它是几位数。的主要内容,如果未能解决你的问题,请参考以下文章
2.给一个不多于5位的正整数,要求: ①求出它是几位数; ②分别输出每一位数字 ③按逆序输出各位数字。
编写程序,输入一个不多于5位的正整数,要求:(1)输出它是几位数; (2)分别输出每一位数字?
给定一个不多于5位的正整数,求它是几位数并且按逆序分别输出每一位数字的C语言程序如何编写?