一个特别固执的人


私信TA

用户名:grl

访问量:20659

签 名:

泰库拉

等  级
排  名 594
经  验 4270
参赛次数 1
文章发表 13
年  龄 22
在职情况 学生
学  校 长春理工大学
专  业 电子信息工程

  自我简介:

解题思路:首先应该判断输入的数字是否在条件范围内,如果超出范围需要设置相应程序进行重新输入,然后在判断知道输入正确为止。

              其次应该分清程序所要实现的功能,然后一个一个的实现(此题中为 : 判断输入数字为几位数  ; 分别显示每一位的具体数字;将数字的每一位倒序排列 )
              简单的功能我直接在主程序中实现了(不规范行为嗷,后面两个功能的话,我设置了对应的函数(啊,其实就是把第一个函数照搬过来,然后就是          t=a,a=b,b=t这些简单方法)   

注意事项:
注意数组的第一位为a[0]
参考代码:

#include <stdio.h>
void content(int i,int j);
void reverse(int i,int j);
void main()
{
    int a,num,flag=0;
    scanf("%d",&a);
    while(a/10000>=10)
    {
        printf("输入数字超出范围请重新输入:\n");
        scanf("%d",&a);
    }
    if(a/10000<10)
    flag=1;
    //确定位数
    if(flag==1)
    {
        if(a>=0&&a<10) num = 1;
        else if(a>=10&&a<100) num = 2;
        else if(a>=100&&a<1000) num = 3;
        else if(a>=1000&&a<10000) num = 4;
        else num = 5;
        
        printf("%d\n",num);
        content(num,a);
        printf("\n");
        reverse(num,a);
    }
}
// 单独输出所输入数据的每一位数字
void content(int i,int j)//位数,输入数据
{
    int a[i-1],k;
    if(i==1)
    a[0]=j;
    else if(i==2)
    {
        a[0]=j/10;
        a[1]=j%10;
    }
    else if(i==3)
    {
        a[0]=j/100;
        a[1]=j%100/10;
        a[2]=j%10;
    }
    else if(i==4)
    {
        a[0]=j/1000;
        a[1]=j%1000/100;
        a[2]=j%100/10;
        a[3]=j%10;
    }
    else
    {
        a[0]=j/10000;
        a[1]=j%10000/1000;
        a[2]=j%1000/100;
        a[3]=j%100/10;
        a[4]=j%10;
    }
    
    for(k=0;k<i;k++)
    printf("%d\t",a[k]);
}
// 输入数据每一位数,然后按倒序排列
void reverse(int i,int j)//位数,输入数据
{
    int a[i-1],k,t;
    if(i==1)
        a[0]=j;
    else if(i==2)
    {
        a[0]=j/10;
        a[1]=j%10;
    }
    else if(i==3)
    {
        a[0]=j/100;
        a[1]=j%100/10;
        a[2]=j%10;
    }
    else if(i==4)
    {
        a[0]=j/1000;
        a[1]=j%1000/100;
        a[2]=j%100/10;
        a[3]=j%10;
    }
    else
    {
        a[0]=j/10000;
        a[1]=j%10000/1000;
        a[2]=j%1000/100;
        a[3]=j%100/10;
        a[4]=j%10;
    }
    
    for(k=0;k<(i/2);k++)
    {
        t=a[k];
        a[k]=a[i-k-1];
        a[i-k-1]=t;
    }
    for(k=0;k<i;k++)
    printf("%d",a[k]);
}


 

0.0分

26 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

//数字的处理与判断
#include<stdio.h>
int main()
{
    int x,a[10],p,s=0;
    scanf("%5d",&x);
    p=x;
    while (x!=0)
	{
		a[s] = x%10;
    	x/= 10;
    	s++;
	}
    printf("%d\n",s);
    for (int i=s;i!=0;i--)
    {
    	printf("%d ",a[i-1]);
	}
	printf("\n");
    for (i=0;i!=s;i++)
    {
    	printf("%d",a[i]);
	}
}
2024-01-13 16:37:48
2022-10-21 15:49:38
你这确实够普通的
2022-10-07 16:03:02
很长但对我还没学懂for的小白看得懂
2022-09-21 23:26:34
#include<stdio.h>
#include<math.h>

int main()
{
	int x,i,j,a=0,temp;
	int aa[10]={0};
	scanf("%d",&x);
	for(i=10;i>0;i--)
	{
		j=pow(10,i);
		if(x/j) 
		{
			a=i+1;break;
		}
	}
	printf("%d\n",a);
	temp=x;
	for(i=0;i<a;i++)
	{
		aa[i]=temp%10;
		temp=temp/10;
	}
	for(i=a-1;i>=0;i--)
	{
		printf("%d ",aa[i]);
	}
	printf("\n");
	for(i=0;i<a;i++)
	{
		printf("%d",aa[i]);
	}
    return 0;
}
2021-07-19 16:12:08
  • «
  • 1
  • »