要求 1求出是几位数 2 分别输出每一位数字,3按逆序输出
例如 123 是3位数,分别是1,2,3 逆序是321!
#include <stdio.h>
void main()
{
long i,a,b,c,d,e;
scanf("%ld",&i);
if(1<=i&&i<10)
printf("1位数,%ld,%ld\n",i,i);
{
if(10<=i&&i<100)
{
a=i/10;
b=i%10;
printf("2位数,%ld,%ld,%ld%ld\n",a,b,b,a);
}
if(100<=i&&i<1000)
{
a=i/100;
b=i/10-i/100*10;
c=i%10;
printf("3位数,%ld,%ld,%ld,%ld%ld%ld\n",a,b,c,c,b,a);
}
if(1000<=i&&i<10000)
{
a=i/1000;
b=i/100-i/1000*10;
c=i/10-i/100*10;
d=i%10;
printf("4位数,%ld,%ld,%ld,%ld,%ld%ld%ld%ld\n",a,b,c,d,d,c,b,a);
}
if(10000<=i&&i<100000)
{
a=i/10000;
b=i/1000-i/10000*10;
c=i/100-i/1000*10;
d=i/10-i/100*10;
e=i%10;
printf("5位数,%ld,%ld,%ld,%ld,%ld,%ld%ld%ld%ld%ld\n",a,b,c,d,e,e,d,c,b,a);
}
}
}
请问我这样写可以么?还有什么更好的方式,不要用循环!我只学到5张内容!!
第一种方法代码:
#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;
}
b = c % 10;
printf("%d\n",b);
printf("位数是:%d\n",count);
printf("顺序:\n");
while(a % 10 != 0)
{
d = a / (int)pow(10,(count-1));
printf("%d\n",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\n",i);
s = a; //s的值发生变化,重新赋值
int w = 1;
while(i-->1) w*=10; //这一步也可以用函数pow来实现
printf("数字%d的每一位分别为:\n",a);
do
printf("%d\n",s/w);
while((s%=w)>0,w/=10);
printf("将%d倒序输出为:",a);
while(a>0){
s = a %10;
a /= 10;
printf("%d",s);
}
return 0;
}
c语言 给一个不多于5位的正整数 用C语言写出
不对的原因,主要是if条件语句应该是用“==”而不是“=”,这是判断,不是赋值。其它的错误,scanf_s("%d",&a)改成scanf("%d",&a),printf用错了,printf打印应该是一个占位符对应一个要输出的内容,就是你代码中%d对应一个输出。修改后的代码:include<stdio.h> int main(){ int a, b...
c语言 给一个不多于5位的正整数 用C语言写出
{ 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;} b = c % 10;printf("%d\\n",b);printf("位数是:%d\\n",count...
c语言编程:给一个不多于五位的正整数,用if-else语句求出它是几位数
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");else if(num<1000)printf("您输入的...
c语言编程:给一个不多于5位的正整数,要求(1)求出它是几位数(2)分别输 ...
i,a[5];printf ("输入一个不多于5位正整数(0~99999):\\n");scanf("%d",&n);if (n<=0 || n>=100000){printf ("输入的数不合法\\n");}else{while(1){a[count]=n%10;n=n\/10;if(n==0){break;}count++;}printf("位数:%d\\n正序:",...
C语言编程:给一个不多于5位的正整数,
不多于五位的正整数,包括一位数到五位数,所有的数值。即[1,99999].以下代码,功能为获取一个不多于五位的正整数并输出。int main(){ int n; srand(time(NULL)); printf("%d", rand()%99999+1);}
c语言编程要求输入一个不大于五位的正整数,正序输出。c我们才学到循环...
回答:就是用循环做的。C语法我不太会,定义一个长度为5的int数组,用于保存每次输入的数字,使用循环语句,循环次数等于数组长度,将每次输入的数字存入数组中,循环执行完后对数组排序。大概是这样的。
C语言编程题 给一个不多于五位的正整数,要求: 1.求出它是几位数 2.分...
unsigned int x=1, i=0;unsigned char c[5]={0};while(1){ printf("输入正整数x(不超过5位):");scanf("%u",&x);if(x\/100000){ printf("超过范围!\\n");continue;} i=0;do { c[i++]=x%10;}while(x \/= 10);printf("%d位数\\n",i);while(i >0)printf("%d ",c[--...
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位的正整数,判断它是几位数
如果不是,判断a%100是否大于0,如果是,则这个数是三位数,判断a%10是否大于0,如果是,则这个数是两位数,如果以上情况都不是,就是一位数。注释:a%1000的结果表示a除以1000后的余数(小学数学里的除法余数概念),如果大于0,说明有余数,说明a至少大于1000.如果等于0,说明a小于或等于1000 ...
给一个不多于五位正整数,请输出每一位数(运用条件语句)
用什么语言呢,下面是C语言的示例:include<stdio.h> main(){ int i;scanf("%d",&i);while(i>0) {printf("%d\\n",i%10);i\/=10;} } 上面是反序的,正顺的如下:include<stdio.h> voidput(intx){ if(x>10)put(x\/10);printf("%d\\n",x%10);} main(){ inti;scanf("%d",&i)...