c语言 给一个不多于5位的正整数 用C语言写出
不多于五位的正整数,包括一位数到五位数,所有的数值。
即[1,99999].
以下代码,功能为获取一个不多于五位的正整数并输出。
int main(){ int n; srand(time(NULL)); printf("%d", rand()%99999+1);}
思路是:①判断这个数是否小于10000并且大于0(检查输入的正确性)②假设输入数字是a,判断a是否等于1000、100、10。③判断a%1000是否大于0,如果是,则这个数是四位数,如果不是,判断a%100是否大于0,如果是,则这个数是三位数,判断a%10是否大于0,如果是,则这个数是两位数,如果以上情况都不是,就是一位数。
注释:a%1000的结果表示a除以1000后的余数(小学数学里的除法余数概念),如果大于0,说明有余数,说明a至少大于1000.如果等于0,说明a小于或等于1000
第一种方法代码:
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c,d;
int count = 1;
printf("请输入一个不多于5位的正整数:");
scanf("%d",&a);
c = a;
printf("逆序:
");
while(c / 10 != 0)
{
count++;
b = c % 10;
printf("%d
",b);
c = c / 10;
}
b = c % 10;
printf("%d
",b);
printf("位数是:%d
",count);
printf("顺序:
");
while(a % 10 != 0)
{
d = a / (int)pow(10,(count-1));
printf("%d
",d);
a = a % (int)pow(10,count-1);
count--;
}
return 0;
}
扩展资料:
输入一个不多于5位的正整数,编程实现以下功能:
(1)判断它是几位数
(2)分别打印每一位数字
(3)按逆序输出各位数字
(4)例如:输入2345
(5)则输出:2 3 4 5
5 4 3 2
编程思路:
首先用if语句判断输入的数是几位数,然后分别求出每位上的数字并打印,最后将求出来的每位上的数字反序输出。
程序相关知识点:
选择结构中的if语句、switch语句,循环结构中的while语句、for语句。
先上图
代码如下:
#include <stdio.h>
main(){
int a,i=1,s; //a用来接收,i用来记录位,s用来计算
scanf("%d",&a);
s = a; //将a赋值给s,因为下一次运行还需要a的值
while((s/=10)>0) i++; //计算位的关键一步
printf("a的位数为:%d
",i);
s = a; //s的值发生变化,重新赋值
int w = 1;
while(i-->1) w*=10; //这一步也可以用函数pow来实现
printf("数字%d的每一位分别为:
",a);
do
printf("%d
",s/w);
while((s%=w)>0,w/=10);
printf("将%d倒序输出为:",a);
while(a>0){
s = a %10;
a /= 10;
printf("%d",s);
}
return 0;
}
LZ这个程序老长了,首先判断位数和分离数字可以用for循环解决(依次除10取余数,除一次i++,输出i就是位数,用if判断结束取余数),逆序输出的时候
定义一个数组把分离的数字放在数组里,然后for循环逆序输出就行了,个人见解
仅供参考
#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\n",e,d,c,b,a);
printf("\n反序数字为:%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反序数字为:%d%d%d%d\n",a,b,c,d);break;
case 3:printf("%d,%d,%d",c,b,a);
printf("\n反序数字为:%d%d%d\n",a,b,c);break;
case 2:printf("%d,%d",b,a);
printf("\n反序数字为:%d%d\n",a,b);break;
case 1:printf("%d",a);
printf("\n反序数字为:%d\n",a);break;
}
}
应该没有关系吧,如果是三位数,就不会输出b了。我也是初学者。
switch语句中每种case都要加花括号吧
case
1:
{printf("%d,%d,%d,%d,%d",a,b,c,d,e);
printf("\n反序数字为:");
printf("%d,%d,%d,%d,%d",e,d,c,b,a);
break;}
c语言给一个不多于5位数的正整数,求出他是几位数,分别输出每一位数字...
include<stdio.h>int main(){ int a,b,c,d,e,p,n; scanf("%d",&n); if (n>9999) p=5; else if(n>999) p=4; else if(n>99) p=3; else if(n>9) p=2; else p=1; printf("位数:%d\\n",p); a=n\/10000; b=(int)(n-a...
c语言课程设计 给出不多于5位的正整数。 1.求出他是几位数。 2.分别...
printf("这是个%d位数\\n",num);} void display1(){ int i=0,j;j=n;printf("逆序输出每位数字为:");while(i<num){ i++;printf("%d ",j%10);j=j\/10;} printf("\\n");} void display2(){ int a[20],i,j;j=n;printf("平方小于这个整数的正整数有:");for(i=1;i*i<j;...
C语言纠错:给出一个不多于5位数的正整数 (1)求出它是几位数。 (2)分 ...
printf("请输入一个正整数(0-99999):\\n");scanf("%d",&num);if(num>9999) \/\/如果num>5 结果将会出问题 n=5;else if(num>999)n=4;else if(num>99)n=3;else if(num>9)n=2;else if(num>0)n=1;printf("这是一个%d位的正整数\\n",n);e=num\/10000;d=(num-e*10000)\/...
c语言编程:给一个不多于五位的正整数,用if-else语句求出它是几位数
可以参考下面的代码:include <stdio.h> void main(){ int num; printf("请输入一个不大于5位数的正整数:");scanf("%d",&num);if(num>99999||num<1)printf("您的输入有误!\\n");else { if(num<10)printf("您输入的是1位数!\\n");else if(num<100)printf("您输入的是2位数!\\n...
c语言编程序 给一个不多于5位数的正整数,要求: 1:求出它是几位数; 2...
先 定义一个数组 a[5]初值 a[5]的各个数都等于-1;然后 对于你输入的数num;p=num;i=0;\/\/主要程序 while(p>0){ a=[i]=p%10; \/\/对p取余 p=p\/10;i++;} 输出 几位数:printf("%d",i);逆序输出 数字:for(int j =0;j...
用C语言编程:给出一个不多于5位的正整数,判断它是几位数
如果不是,判断a%100是否大于0,如果是,则这个数是三位数,判断a%10是否大于0,如果是,则这个数是两位数,如果以上情况都不是,就是一位数。注释:a%1000的结果表示a除以1000后的余数(小学数学里的除法余数概念),如果大于0,说明有余数,说明a至少大于1000.如果等于0,说明a小于或等于1000 ...
C语言: 给一个不多于5为的正整数 要求:1.求出它是几位数 2.分别打印...
1. 求出它是几位数 include <stdio.h> int main(){ int n,m;printf("请输入一个正整数:");scanf("%d",&n);if(n<=0){ printf("输入错误!\\n");} else { m=0;while(n>0){ m++;n=n\/10;} printf("这是一个%d位数!\\n",m);} return 0;} 2.分别打印出每一位数字 ...
给1个不多于5位的正整数要求1求出它是几位数2分别打印出每一位数字3...
b[1]=(a%10000)\/1000;\/\/千位\/\/ b[0]=(a\/10000);\/\/万位\/\/ for(;flag>0;flag--){ printf("%d\\t",b[flag-1]);\/\/从个位开始输出\/\/ \/\/printf("%d\\t",b[5-flag]);\/\/从高位开始输出\/\/ } printf("\\n");} 不知道你逆序的意思,所以在输出时有两种方式,你可以选择 ...
c语言 给一个不多于5位的正整数 用C语言写出
第一种方法代码:include <stdio.h> include <math.h> int main(){ int a,b,c,d;int count = 1;printf("请输入一个不多于5位的正整数:");scanf("%d",&a);c = a;printf("逆序:\\n");while(c \/ 10 != 0){ count++;b = c % 10;printf("%d\\n",b);c = c \/ 10;} ...
给一个不多于5位的正整数,求出它是几位数?分别打出每一位数字?按逆顺序...
给你个简单的应付差使。include <stdio.h> include <stdlib.h> int main(){ int input;int i;unsighed char tempstr[20];scanf("%d",input);sprintf(tempstr , "%d" , input );if (strlen(tempstr)>=5)printf("error input\\r\\n");for (i=0;i<strlen(tempstr);i++){ printf("%c"...