利用数组实现10位数以内整数的逆序输出。当原整数尾数为0,应考虑如何控制才能让逆序后的数字不以0开头。

运行结果如下:


疑问 

 首先想现在这里举例出我在写这个程序所遇到的问题然后一一解决

  1. 要求的数组为10以内,但不满10时如何更除去不需要的数组
  2. 如何控制前面为0是不输出而内部有0时会输出
  3. 当输入整数的最后一位有0时如何记录位数

 


整体思路

(1)设置一个一维数组存放以逆序方式存放输入整数的各位数字(怎样做?);

(2)定义一个变量存放整数的长度;

(3)设置一个标志符来控制是否允许打印,初值为0;若一开始连续的数字是0,则不允许打印,若从非0数字开始,则可以打印;

(4)若标志符的最后状态还是0,则可判定输入的是0,则逆序输出0。


解决疑问 

  1. q1:首先为数组定义大小(数组内只能放置常量)
    const int N=10;
    int a[N];

    设置一个变量i在存入整数时记录位数

    printf("Enter x:");
    	scanf("%d",&x);
    	i=0;
    	while(x>0)
    	{
    		a[i]=x%10;
    		x/=10;
    		i++;
    	}

    在设置一变量存放位数值

    	length=i;

    最后在循环时for的控制为

    for(i=0;i<length;i++)

    这样就完成了有效的运用数组

  2. q2:在逆序存放时最后一位有0则在最开始会有0,我们定义一个变量(标识符),来判断0与非0

    int isPrinted=0;
    

    然后我们要在for循环中用if嵌套判断(if判断中的本质就是为0不运行,为1运行)

    for(i=0;i<length;i++)
    	{
    		if(isPrinted==0)//最开始不运行
    		{
    			if(a[i]!=0)
    			isPrinted=a[i];//非0时可以运行了
    		}
    		if(isPrinted)
    		{
    			printf("%d",a[i]);
    		}
    	}
    	if(isPrinted==0)//输入本来就为0则输出也为0
    	printf("%d",0);

  3. q3:可以将原本的while(x%10!=0)改为while(x>0)这样就可以实现了

    	while(x>0)
    	{
    		a[i]=x%10;
    		x/=10;
    		i++;
    	}

     


最后代码 

#include<stdio.h>
const int N=10;
int main()
{
	int a[N],x,i,length,isPrinted=0;
	printf("Enter x:");
	scanf("%d",&x);
	i=0;
	while(x>0)
	{
		a[i]=x%10;
		x/=10;
		i++;
	}
	length=i;
	printf("\n逆序结果为:");
	for(i=0;i<length;i++)
	{
		if(isPrinted==0)
		{
			if(a[i]!=0)
			isPrinted=a[i];
		}
		if(isPrinted)
		{
			printf("%d",a[i]);
		}
	}
	if(isPrinted==0)
	printf("%d",0);
	printf("\n");
	return 0;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值