C语言问题,大家帮个忙谢谢

输入一个不多于五位的整数,编写程序完成下列功能:判断它是几位数;正序输出它的各个数据位;逆序输出它的各个数据位

解题思路(不考虑负数):

    根据数字大小判断是几位数。

    如果输入的是 0,则是 1 位数,正序、逆序都为 0。

    如果不是0,可以根据该数是几位数进行循环输出。这里提供了一种扩展性较强的算法,可以参考。

    代码中,k = 1000 表示当该数是 4 位数,然后通过循环来缩减 k 的值,从而从高到低输出每一位的数字(正序)。

    逆序的算法相对正序简单点,先通过 % 10 取出最低位,再通过 / 10删除最低位,循环就可以把每一位数字都输出来。

测试代码

测试结果

测试代码:

#include <stdio.h>

int main()

{

int n, k = 1000, len = 4;

scanf("%d", &n);

// 判断它是几位数

if (n < 10) len = 1;

else if (n < 100) len = 2;

else if (n < 1000) len = 3;

printf("%d\n", len); // 输出是几位数

// 如果输入0 

if (n == 0) printf("%d\n%d", n, n);

else 

{

while (k) // 正序输出它的各个数据位 

{

if (n / k) printf("%d ", n / k % 10);

k /= 10;

}

printf("\n");

while (n) // 逆序输出它的各个数据位 

{

printf("%d ", n % 10);

n /= 10;

}

}

return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-03-16
定义一个长整型,
n/1%10个位 n/10%10十位 取值以此类推
然后你可以添加循环嵌套条件来判断,从万位开始,取值不为0时确认位数。
剩下的输出不用说了。

c语言几个小小的问题 高手帮个忙
1. C 逗号在这里不合法 2. 输出2,虽然x是浮点型,但是10和4都是整型,所以先按整型运算,再将结果转换为浮点型 3. (++x, y++)表示这是一个逗号表达式,逗号表达式取最后一个表达式的值,也就是y++的值,所以输出结果是3和3 4. printf("%8.4g\\n",b); 这句输出8756,%g表示按%e或者%...

C语言问题,大家帮个忙谢谢
解题思路(不考虑负数):根据数字大小判断是几位数。如果输入的是 0,则是 1 位数,正序、逆序都为 0。如果不是0,可以根据该数是几位数进行循环输出。这里提供了一种扩展性较强的算法,可以参考。代码中,k = 1000 表示当该数是 4 位数,然后通过循环来缩减 k 的值,从而从高到低输出每一位...

c语言高手帮个忙~~~!!!做三个题,用C语言写,马上要交的,高悬赏...
1. #include <stdio.h> void main(){ int a[3][3];int i,j;int sum=0;int sum1=0;for( i=0; i<=2; i++){ for( j=0; j<=2; j++){ printf ("a[%d][%d]:", i+1, j+1);scanf ("%d",&a[i][j]);} printf("\\n");} for( i=0; i<=2; i++){ for...

急!急! 懂c语言的朋友请帮个忙
9.C语言中,数组名是一个不可改变的_地址值_,不能对它进行赋值运算。10.在C语言中,&运算符作为单目运算符时表示的是__取地址_运算。11.如果一个函数直接或间接地调用自身,这样的调用称为_递归__调用。12.如果初始化值列表中的初始化值的个数少于数组的元素个数,C编译器会自动把剩余的元素...

C语言怎么计算直角三角形斜边,计算本息和
int main(){ float x,y,z;printf("请输入直角三角形两直角边边长:\\n");scanf("%f %f",&x,&y);z=sqrt(x*x+y*y); \/\/三角形斜边的平方等于两直角边长平方和,所以要求斜边只用 \/\/在两直角边平方和的基础上开方就行了 printf("斜边长为:%f\\n",z);return 0;} 运行结果如图:第4...

c语言的高手,帮个忙啊,本人现在没有财富值了,呜呜。。
2、先进行两个括号内的运算a>b为假,m=0。c>d为假,n=0。然后0交0为0所以k为0 3、char *p[] 其实是一个二维数组 其中p[0]存储的是“Chinese”,p[1]=“France",p[2]=“America”,p[3]=“Russia”。s输出的是一个字符串,输出p[1]存储的内容:France,c输出的是一个字符,所以...

请懂c语言的帮个忙咯!!??
int main(void){ int i,j,k,m,mon,y;int day(int n,int m);\/\/函数的声明 int month(int n,int y);int year(int y);printf("Please input one year after year 1900 you want to know:");scanf("%d",&y);if(y<1900)\/\/我以1900年为基础算的,所以1900年以前查不了。printf("...

c语言高手朋友们 进来帮个忙
我算了一下,到第二步后,结果只有126*126=15876种组合,是不是我的理解错了?我的理解是:从0123456789中分出5个数后,另5个数也就定了,所以只有C(10,5)=252个,其中有一半是前后相同的,所以只有126个,两组126个再两两组合,共有126*126=15876.按照这个思路,我写了一段程序,结果算...

帮个忙,怎么用C语言做这个程序?1的三次方,一直加到N的三次方,要求输入...
include<stdio.h> main(){int sum=0,n,i;scanf("%d",&n);for(i=1;i<=n;i++)sum+=i*i*i;printf("\\n%d",sum);}

请C语言大神帮个忙
include<stdio.h> include<string.h> define max 100 int mat[max][max],vis[max][max];void dfs(int x,int y){ if(!mat[x][y] || vis[x][y]) return;vis[x][y]=1;dfs(x-1,y-1);dfs(x-1,y+1);dfs(x-1,y);dfs(x,y-1);dfs(x,y+1);dfs(x+1,y-1);dfs(x+...

相似回答