这题如果按常规思路说实话有点折磨人

先循环确定位数,再循环正序输出,还要循环倒序输出

几乎是相同的操作做了三遍

个人认为用字符数组来处理应该最为简便


解题思路

将输入的数字当作字符串来储存,用strlen(  ) 函数得到字符串长度,即为数字位数

将字符串从左到右遍历输出(带空格)

最后还有一个回车不要忘了

再将字符串从右往左遍历输出(不带空格)就好了


注意事项:

题目说数字位数不超过5,所以定义字符数组长度应不小于6

因为字符串结尾还有结尾符 '\0' 占一位

参考代码:

#include <stdio.h>
#include <string.h>         //C语言字符串头文件,strlen() 函数包含在此内
  
int main()
{
    char str[10];                       //定义字符串长度为 10
    scanf("%s", str);                   //输入数字 (作为字符串输入)
      
    int len = strlen(str);              //获取字符串长度
    printf("%d\n", len);                //输出字符串长度,即为数字位数
    for (int i = 0; i < len; i++)       //从左往右遍历输出
    {
        printf("%c ", str[i]);
    }
    printf("\n");                       //输出回车
    for (int i = len - 1; i >= 0; i--)  //从右往左遍历输出
    {
        printf("%c", str[i]);
    }
    return 0;
}


下面是常规思路:


前面我们说过要进行三个循环,第一个循环要确定数字的位数

那么可以用一个 while 循环,将这个数字不断地除以 10 

每除一次,位数加 1 ,知道数字变为 0 为止


第二个循环,就要用到 pow 计算幂函数了

对于一个数字

要得到它的个位数,就用它除以 10 的 0 次方 再对 10 取余

要得到它的十位数,就用它除以 10 的 1 次方 再对 10 取余

要得到它的百位数,就用它除以 10 的 2 次方 再对 10 取余

……

要得到它的第 i 位 (从右往左),就用它除以 10 的 i - 1 次方 再对 10 取余即可

那么我们可以对这里 10 的指数循环,从 n - 1 循环到 0 

然后计算并输出数字即可,如下:

for (int i = n - 1; i >= 0; i--) {
    temp = num / pow(10, i);        //除以 10 的 i 次方
    printf("%d ", temp % 10);       //输出对 10 取余
}


第三个循环就简单多了,把第二个循环倒过来,从 0 循环到 n - 1 即可


参考代码:

#include <stdio.h>
#include <math.h>       //C语言数学头文件,pow() 函数包含在此内
  
int main() {
    int num;                            //定义数字
    scanf("%d", &num);                  //输入数字
    int n = 0;                          //定义数字的位数
    if (num == 0) n = 1;                //如果数字是0,则位数为1
    int temp = num;                     //定义 temp 来代替 num 进行计算
    while (temp) {                      //将temp循环除以 10,到 0 为止
        n++;        
        temp /= 10;     
    }       
    printf("%d\n", n);                  //输出数字位数
    for (int i = n - 1; i >= 0; i--) {  //第二循环,从左往右输出
        temp = num / pow(10, i);        //除以 10 的 i 次方
        printf("%d ", temp % 10);       //输出对 10 取余
    }
    printf("\n");                       //输出回车
    for (int i = 0; i < n; i++) {       //第三循环,从右往左循环
        temp = num / pow(10, i);        //除以 10 的 i 次方
        printf("%d", temp % 10);        //输出对 10 取余
    }
    return 0;
}


题目中说第二行输出最后没有空格,之前没有注意到,但是因为判定没有那么严格也通过了

那要处理结尾空格的话,可以把数字和空格分开输出,加一个 if 语句判定是否到了结尾,要不要输出空格

如下:

    //字符串方法
    for (int i = 0; i < len; i++)       //从左往右遍历输出
    {
        printf("%c", str[i]);
        if (i != len - 1)    printf(" ");    // i == len - 1 时即为最后一个数字,不输出空格
    }


    //常规方法
    for (int i = n - 1; i >= 0; i--) {  //第二循环,从左往右输出
        temp = num / pow(10, i);        //除以 10 的 i 次方
        printf("%d", temp % 10);        //输出对 10 取余
        if (i != 0)    printf(" ");     // i == 0 时即为最后一个数字,不输出空格
    }


点赞(3)
 

0.0分

304 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 156 条评论

Rick 2年前 回复TA
@Rick #include<stdio.h> #include<string.h> int main(void) {             int number,t,j;     int a,b,c,d,e;     scanf("%d",&number);         if(number!=0)             {                 a = (int)(number / 10000);                 b = (int)(number / 1000)%10 ;                 c = (int)(number % 1000)/100;                 d = (int)((number % 100)/10);                 e = (int)number % 10;                 if((a!=0))                     {                         printf("5
");                         printf("%d %d %d %d %d",a,b,c,d,e);                          {                                  if(a<b)                              {t=b;}                             else                              {t=a;a=b;b=t;}                             if(c>t)                              {t=c;}                             else                             {                               if(c>a)                                 {j=c;c=t;b=j;}                               else                                 {j=c;c=t;b=a;a=j;}                             }                              int a1 = c;                               int b1 = d;                              int c1 = e;                              if (a1<b1)                               {t=b1;}                              else                               {t=a1;a1=b1; b1=t;}                              if(c1>t)                               {t=c1;}                              else                              {                                 if(c1>a1)                                 {j=c1;c1=t;b1=j;}                                  else                                 {j=c1; c1=t; b1=a1;a1=j;}                              }                                int a2 = a;                                 int b2 = b;                                int c2 = a1;                                 if (a2<b2)                                 {t=b2;}                                 else                                 {t=a2;a2=b2;b2=t;}                                 if(c2>t)                                 {t=c2;}                                 else                                 {                                   if(c2>a2)                                   { j=c2;c2=t;b2=j;}                                     else                                     {j=c2;c2=t; b2=a2;a2=j; }                                 }                                   int a3 = a;                                    int b3 = b;                                   int c3 = a1;                                   if (a3<b3)                                   {                                                     t=b3;                                                 }                                            else                                                                                                  {                                                     t=a3;                                                     a3=b3;                                                     b3=t;                                                 }                                                                        if(c3>t)                                                 {                                                     t=c3;                                                 }                                         else                                                 {                                                     if(c3>a3)                                                         {                                                              j=c3;                                                              c3=t;                                                              b3=j;                                                         }                                                     else                                                         {                                                             j=c3;                                                             c3=t;                                                             b3=a3;                                                             a3=j;                                                         }                                                 }                                           int a4 = b3;                                            int b4 = c3;                                           int c4 = b1;                                                                         if (a4<b4)                                                 {                                                     t=b4;                                                 }                                            else                                                                                                  {                                                     t=a4;                                                     a4=b4;                                                     b4=t;                                                 }                                                                          if(c4>t)                                                 {                                                     t=c4;                                                 }                                         else                                                 {                                                     if(c4>a4)                                                         {                                                              j=c4;                                                              c4=t;                                                              b4=j;                                                         }                                                     else                                                         {                                                             j=c4;                                                             c4=t;                                                             b4=a4;                                                             a4=j;                                                         }                                                 }                                                       int a5 = a3;                                            int b5 = a4;                                           int c5 = b4;                                                                         if (a5<b5)                                                 {                                                     t=b5;                                                 }                                            else                                                                                                  {                                                     t=a5;                                                     a5=b5;                                                     b5=t;                                                 }                                                                          if(c5>t)                                                 {                                                     t=c5;                                                 }                                         else                                                 {                                                     if(c5>a5)                                                         {                                                              j=c5;                                                              c5=t;                                                              b5=j;                                                         }                                                     else                                                         {                                                             j=c5;                                                             c5=t;                                                             b5=a5;                                                             a5=j;                                                         }                                                 }                                printf("
%d%d%d%d%d ",a5,b5,c5,c4,c1);                                                                    }                     }                     else if((a==0)&(b!=0))                     {                         printf("4
");                          printf("%d %d %d %d",b,c,d,e);                          int a1= b;                          int b1= c;                          int c1= d;                                  if (a1<b1)                                         {                                             t=b1;                                         }                                 else                                                                                  {                                             t=a1;                                             a1=b1;                                             b1=t;                                         }                                                                        if(c1>t)                                         {                                             t=c1;                                         }                                                                 else                                         {                                             if(c1>a1)                                                 {                                                      j=c1;                                                      c1=t;                                                      b1=j;                                                 }                                             else                                                 {                                                     j=c1;                                                     c1=t;                                                     b1=a1;                                                     a1=j;                                                 }                                         }                                                                        int a2 = b1;                                    int b2 = c1;                                   int c2 = e;                                                                 if (a2<b2)                                         {                                             t=b2;                                         }                                    else                                                                                  {                                             t=a2;                                             a2=b2;                                             b2=t;                                         }                                                                       if(c2>t)                                         {                                             t=c2;                                         }                                 else                                         {                                             if(c2>a2)                                                 {                                                      j=c2;                                                      c2=t;                                                      b2=j;                                                 }                                             else                                                 {                                                     j=c2;                                                     c2=t;                                                     b2=a2;                                                     a2=j;                                                 }                                         }                                   int a3 = a1;                                    int b3 = a2;                                   int c3 = b2;                                                         if (a3<b3)                                         {                                             t=b3;                                         }                                    else                                                                                  {                                             t=a3;                                             a3=b3;                                             b3=t;                                         }                                                        if(c3>t)                                         {                                             t=c3;                                         }                                 else                                         {                                             if(c3>a3)                                                 {                                                      j=c3;                                                      c3=t;                                                      b3=j;                                                 }                                             else                                                 {                                                     j=c3;                                                     c3=t;                                                     b3=a3;                                                     a3=j;                                                 }                                         }                                                                                                printf("
%d%d%d%d ",a3,b3,c3,c2);                      }                 else if((a==0)&(b==0)&(c!=0))                      {                         printf("3
");                         printf("%d %d %d",c,d,e);                              int a1= c;                              int b1= d;                              int c1= e;                                  if (a1<b1)                                         {                                             t=b1;                                         }                                 else                                                                                  {                                             t=a1;                                             a1=b1;                                             b1=t;                                         }                                                                        if(c1>t)                                         {                                             t=c1;                                         }                                                                 else                                         {                                             if(c1>a1)                                                 {                                                      j=c1;                                                      c1=t;                                                      b1=j;                                                 }                                             else                                                 {                                                     j=c1;                                                     c1=t;                                                     b1=a1;                                                     a1=j;                                                 }                                         }                             printf("
%d%d%d",a1,b1,c1);                      }                 else if((a==0)&(b==0)&(c==0)&(d!=0))                      {                         printf("2
");                         printf("%d %d",d,e);                          int a1= d;                          int b1= e;                                                        if (a1<b1)                                     {                                         t=b1;                                     }                              else                                                                          {                                         t=a1;                                         a1=b1;                                         b1=t;                                     }                         printf("
%d%d",a1,b1);                                        }                else if((a==0)&(b==0)&(c==0)&(d==0)&(e!=0))                      {                         printf("1
");                         printf("%d ",e);                          printf("
%d",e);                      }             }             else             {                              printf("1
");               printf("0
");               printf("0");             }                return 0; }
Rick 2年前 回复TA
大佬果然是大佬
我的shit code 源于我的shit mind 我整整写了300多行才实现,但是对于0就没法接解决了,int转char始终是null
还是你的思路好一开始就是字符串,不是用if比较而是for循环代码简洁又简单。
下面是我的shit code
#include<stdio.h>
#include<string.h>
int main(void)
{   
    
    int number,t,j;
    int a,b,c,d,e;
    scanf("%d",&number);
        if(number!=0)
            {
                a = (int)(number / 10000);
                b = (int)(number / 1000)%10 ;
                c = (int)(number % 1000)/100;
                d = (int)((number % 100)/10);
                e = (int)number % 10;
                if((a!=0))
                    {
                        printf(评字限制。。。。
INT橙 2年前 回复TA
果然数组简洁多了,作者大大真棒
#include<stdio.h>
#include<string.h>   //头文件,strlen获取字符串长度包含在内
int main()
{
    char a[6];              //题目限制5位数字,\0也会占一个字节,就定了他的内存空间为6
    scanf("%s",&a);
    int len=strlen(a),i;
    printf("%d\n",len);
    for(i=0;i<len;i++)
    {
        printf("%c ",a[i]);
    }
    printf("\n");
    for(i=len-1;i>=0;i--)
    {
        printf("%c",a[i]);
    }
    return 0;
}
Win 3年前 回复TA
@多喝热水y 第五行应为scanf("%d",&numb)
指针原来是套娃的 3年前 回复TA
@多喝热水y while(1)死循环了
指针原来是套娃的 3年前 回复TA
@名字好难想 在定义变量的时候初始化为0,比如变量digit,不初始化不可以进行赋值操作
名字好难想 3年前 回复TA
@名字好难想 而且答案是对的
名字好难想 3年前 回复TA
#include<stdio.h>
int main(){
	int x,a[5];
	scanf("%d",&x);
	int digit,cnt,i;
	int ret = 0,n=1;
    
    while ( x>0 ){
    	digit = x%10;
    	cnt++; 
    	while(x>0){
    		a[n]=digit;
    		n++;
    		break;
    		
		}
    //	printf("%d",digit);
    	ret = ret*10 + digit;
    	//printf("x=%d,digit=%d,ret=%d\n",x,digit,ret);
    	x/=10;
	}
	printf("%d\n",cnt);
	for(i=cnt;i>0;i--){
		printf("%d",a[i]);
		if(i==1)
		printf("\n");
		else
		printf(" ");
	}
		printf("%d\n",ret);
	return 0;
}
为什么在Dev-c上可以运行,在这上面就Segmentation fault啊,大佬们
多喝热水y 3年前 回复TA
#include<stdio.h>
int main(){
	int a[5],i,numb,t=0;
	while(1){	
	scanf("%d",numb);
	a[i] = numb;
	t++;
	if(numb=='\n'){
		break;
	}		
 }
 printf("%d\n",t);
 for(int i=0;i<t;i++){
 	printf("%d ",a[i]);
 }
 printf("\n");
 for(int i=t;i>=0;i--){
 	printf("%d",a[t]);
 }
return 0;
}

为什么不可以? 求大佬!!!
手帕 3年前 回复TA
@Aperture 那就不用字符串