书中的习题,完全没有思路,只学到选择结构,也就是只学到if语句和switch语句,不知这个要怎么设计算法,自学中,求高手
在线等,求思路
输入一个不多于5位的正整数 1 求出它是几位数 2 分别输出每一位数 3 按逆顺序输出此数 输入123,输出321
答案:4 悬赏:0 手机版
解决时间 2021-01-03 09:09
- 提问者网友:一抹荒凉废墟
- 2021-01-02 08:57
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-01-02 10:36
#include<stdio.h>
int main()
{
int n,count=0;
scanf("%d",&n);
while(n)
{
printf("%d",n%10);
n/=10;
count++;
}
printf("\n%d\n",count);
return 0;
}
最笨的方法
一位数就是区间[1,10)
两位数就是区间[10,100)
三位数......
但是只用分支结构是做不到逆序输出的(其实细想一下是可以的,但是非常麻烦,要把所有情况列举出来),必须要循环结构才行
int main()
{
int n,count=0;
scanf("%d",&n);
while(n)
{
printf("%d",n%10);
n/=10;
count++;
}
printf("\n%d\n",count);
return 0;
}
最笨的方法
一位数就是区间[1,10)
两位数就是区间[10,100)
三位数......
但是只用分支结构是做不到逆序输出的(其实细想一下是可以的,但是非常麻烦,要把所有情况列举出来),必须要循环结构才行
全部回答
- 1楼网友:执傲
- 2021-01-02 12:39
# include <stdio.h>
void main()
{
int n;
int i;
int temp;
int count=0;
int a[10];
printf("输入一个不多于5位的正整数:\n");
scanf("%d",&n);
temp=n;
while(temp!=0)
{
a[count++]=temp%10;
temp/=10;
}
printf("%d是%d位数...\n各位数分别是:",n,count);
for(i=0;i<count;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
- 2楼网友:动情书生
- 2021-01-02 12:11
1. 方法代码如下:
输入一个不多于5位的正整数,要求:1 求它是几位数;2 分别输出每一位数字;3 按逆序输出各位数字。例如原数为321,应输出123。
#include<stdio.h>
#include<math.h>
void main()
{
long int num;
int a,b,c,d,e,place;
printf("please input a number(0--99999):%d\n",num);
scanf("%ld",&num);
if(num>=10000)
place=5;
else if(num>=1000)
place=4;
else if(num>=100)
place=3;
else if(num>=10)
place=2;
else
place=1;
printf("输入数的位数是:%d\n",place);
printf("每位数字为:");
e=num/10000;
d=(int)(num-e*10000)/1000;
c=(int)(num-e*10000-d*1000)/100;
b=(int)(num-e*10000-d*1000-c*100)/10;
a=(int)(num-e*10000-d*1000-c*100-b*10);
switch(place){
case 5:printf("%d,%d,%d,%d,%d",e,d,c,b,a);
printf("\n反序数字为:");
printf("%d,%d,%d,%d,%d\n",a,b,c,d,e);
break;
case 4:printf("%d,%d,%d,%d",d,c,b,a);
printf("\n反序数字为:");
printf("%d,%d,%d,%d\n",a,b,c,d);
break;
case 3:printf("%d,%d,%d",c,b,a);
printf("\n反序数字为:");
printf("%d,%d,%d\n",a,b,c);
break;
case 2:printf("%d,%d",b,a);
printf("\n反序数字为:");
printf("%d,%d\n",a,b);
break;
case 1:printf("%d",a);
printf("\n反序数字为:");
printf("%d\n",a);
break;
}
}
- 3楼网友:洒脱疯子
- 2021-01-02 10:55
#include<stdio.h>
void main()
{
long int a,b,c,d,e,x;
printf("请输入任意一个正整数\n");
scanf("%ld",&x);
a=x/10000;
b=x%10000/1000;
c=x%1000/100;
d=x%100/10;
e=x%10;
if(a!=0)
printf("这是一个五位数,逆向为:%ld\t%ld\t%ld\t%ld\t%ld\n",e,d,c,b,a);
else if(b!=0)
printf("这是一个四位数,逆向打印为:%ld\t%ld\t%ld\t%ld\n",e,d,c,b);
else if(c!=0)
printf("这是一个三位数,逆向打印为:%ld\t%ld\t%ld\n",e,d,c);
else if(d!=0)
printf("这是一个二位数,逆向打印为:%ld\t%ld\n",e,d);
else if(e!=0)
printf("这是一个一位数,逆向打印为:%ld\n",e);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯