c语言中整数位数判断
输入一个不多于5位的正整数,要求:(1)求它是几位数;(2)逆序打印出各位数字这是我的答案,但不知道哪不对#include<stdio.h>main(){inta,b,c...
输入一个不多于5位的正整数,要求: (1)求它是几位数;(2)逆序打印出各位数字
这是我的答案,但不知道哪不对
#include<stdio.h>
main()
{
int a,b,c,d,e,f,g,m,n,y;
scanf("%d",&a);
b=a/10;
c=a%10;
e=b%10;
f=b/10;
g=f%10;
m=b/100;
n=m%10;
y=a/10000;
if(b==0)
{printf("1\n");
printf("%d\n",a);}
else if(b>=1&&b<10)
{d=10*c+b;
printf("2\n");
printf("%02d\n",d);}
else if(b>=10&&b<100)
{d=100*c+10*e+f;
printf("3\n");
printf("%03d\n",d);}
else if(b>=100&&b<1000)
{d=1000*c+100*e+10*g+m;
printf("4\n");
printf("%04d\n",d);}
else if(b>=1000&&b<10000)
{d=10000*c+1000*e+100*g+10*n+y;
printf("5\n");
printf("%05d\n",d);}
else
printf("Invalid input\n");
return 0;
}
各位高手,我现在刚刚学习了if和switch语句,能不能在这个范围里帮我想想啊 展开
这是我的答案,但不知道哪不对
#include<stdio.h>
main()
{
int a,b,c,d,e,f,g,m,n,y;
scanf("%d",&a);
b=a/10;
c=a%10;
e=b%10;
f=b/10;
g=f%10;
m=b/100;
n=m%10;
y=a/10000;
if(b==0)
{printf("1\n");
printf("%d\n",a);}
else if(b>=1&&b<10)
{d=10*c+b;
printf("2\n");
printf("%02d\n",d);}
else if(b>=10&&b<100)
{d=100*c+10*e+f;
printf("3\n");
printf("%03d\n",d);}
else if(b>=100&&b<1000)
{d=1000*c+100*e+10*g+m;
printf("4\n");
printf("%04d\n",d);}
else if(b>=1000&&b<10000)
{d=10000*c+1000*e+100*g+10*n+y;
printf("5\n");
printf("%05d\n",d);}
else
printf("Invalid input\n");
return 0;
}
各位高手,我现在刚刚学习了if和switch语句,能不能在这个范围里帮我想想啊 展开
8个回答
展开全部
你写的实在是太繁琐了。这个是不可取的。你需要的这两个功能其实是可以一起实现的,虽然一楼说的很对,当我觉得应该不是你需要的那一种方案。
#include<stdio.h>
main()
{
int i=0,k;
int a[10;
printf("input a number:");
scanf("%d",&k);
while(k>0)
{
a[i]= k%10;
k = k/10;
i ++;
}
printf("一共有%d位。\n",i);
printf("倒输出为:%s",a);
}
满意请采纳!
#include<stdio.h>
main()
{
int i=0,k;
int a[10;
printf("input a number:");
scanf("%d",&k);
while(k>0)
{
a[i]= k%10;
k = k/10;
i ++;
}
printf("一共有%d位。\n",i);
printf("倒输出为:%s",a);
}
满意请采纳!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <math.h>
printf("位数等于 : %d", ceil(log(123456789) / log(10)));
直接取目标数以10为底的对数,然后取整即可,无需循环
printf("位数等于 : %d", ceil(log(123456789) / log(10)));
直接取目标数以10为底的对数,然后取整即可,无需循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int main()
{
int a,b,c,d,e,f,g,m,n,y;
scanf("%d",&a);
b=a/10;
c=a%10;
e=b%10;
f=b/10;
g=f%10;
m=f/10;
n=m%10;
y=a/10000;
if(b==0&&a>=0&&y<10)
{
printf("1\n");
printf("%d\n",a);
}
else if(b>=1&&b<10)
{
d=10*c+b;
printf("2\n");
printf("%02d\n",d);
}
else if(b>=10&&b<100)
{
d=100*c+10*e+f;
printf("3\n");
printf("%03d\n",d);
}
else if(b>=100&&b<1000)
{
d=1000*c+100*e+10*g+m;
printf("4\n");
printf("%04d\n",d);
}
else if(b>=1000&&b<10000)
{
d=10000*c+1000*e+100*g+10*n+y;
printf("5\n");
printf("%05d\n",d);
}
else if (a<0||y>=10)
printf("Invalid input\n");
return 0;
}
改改你的应该就可以了 不过可以尝试用while语句,会简单些
int main()
{
int a,b,c,d,e,f,g,m,n,y;
scanf("%d",&a);
b=a/10;
c=a%10;
e=b%10;
f=b/10;
g=f%10;
m=f/10;
n=m%10;
y=a/10000;
if(b==0&&a>=0&&y<10)
{
printf("1\n");
printf("%d\n",a);
}
else if(b>=1&&b<10)
{
d=10*c+b;
printf("2\n");
printf("%02d\n",d);
}
else if(b>=10&&b<100)
{
d=100*c+10*e+f;
printf("3\n");
printf("%03d\n",d);
}
else if(b>=100&&b<1000)
{
d=1000*c+100*e+10*g+m;
printf("4\n");
printf("%04d\n",d);
}
else if(b>=1000&&b<10000)
{
d=10000*c+1000*e+100*g+10*n+y;
printf("5\n");
printf("%05d\n",d);
}
else if (a<0||y>=10)
printf("Invalid input\n");
return 0;
}
改改你的应该就可以了 不过可以尝试用while语句,会简单些
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/*
32767是5位数,倒序是 : 76723
663878是6位数,倒序是 : 878366
2341是4位数,倒序是 : 1432
1002是4位数,倒序是 : 2001
4490887是7位数,倒序是 : 7880944
Press any key to continue
*/
#include <stdio.h>
#include <string.h>
char *Int2Str(unsigned int n, char *s) {
for(int m = 0; n > 0; ++m) {
s[m] = n%10 +'0';
n /= 10;
}
s[m] = '\0';
return s;
}
int main() {
char s[16];
unsigned int a[] = {32767,663878,2341,1002,4490887};
int i,n = sizeof(a)/sizeof(a[0]);
for(i = 0; i < n; ++i) {
Int2Str(a[i],s);
printf("%d是%d位数,倒序是 : %s\n",a[i],strlen(s),s);
}
return 0;
}
32767是5位数,倒序是 : 76723
663878是6位数,倒序是 : 878366
2341是4位数,倒序是 : 1432
1002是4位数,倒序是 : 2001
4490887是7位数,倒序是 : 7880944
Press any key to continue
*/
#include <stdio.h>
#include <string.h>
char *Int2Str(unsigned int n, char *s) {
for(int m = 0; n > 0; ++m) {
s[m] = n%10 +'0';
n /= 10;
}
s[m] = '\0';
return s;
}
int main() {
char s[16];
unsigned int a[] = {32767,663878,2341,1002,4490887};
int i,n = sizeof(a)/sizeof(a[0]);
for(i = 0; i < n; ++i) {
Int2Str(a[i],s);
printf("%d是%d位数,倒序是 : %s\n",a[i],strlen(s),s);
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询