南阳OJ_语言入门_96_n-1位数


n-1位数

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 1
描述

已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。

输入
第一行为M,表示测试数据组数。
接下来M行,每行包含一个测试数据。
输出
输出M行,每行为对应行的n-1位数(忽略前缀0)。如果除了最高位外,其余位都为0,则输出0。
样例输入
4
1023
5923
923
1000
样例输出
23
923
23
0


第一种算法 :



#include<stdio.h>
#include<string.h>
int main( void )
{
	int N = 0;
	char a[7];//保存输入
	int l = 0;//保存数字长度
	int i = 0;
	int j = 0;
	scanf("%d",&N);
	getchar();
	
	while( N-- )
	{
		scanf("%s",a);
		
		l = strlen( a );
		
		for( i = 1; i < l && a[i] == '0'; i++ ) ;//从第二个开始找到第一个不为0的下标
		
		if( i == l )//如果出了最高位,都是0,则输出0
		{
			printf("0");
		}
		else 
		{
			for( ; i < l; i++ )//从第一个不是0的开始输出
			{
				printf("%c",a[i]);
			}
		}
		
		printf("\n");
	}
	
	
	//printf("\n\nHello World!\n");
	return 0;
}


第二种算法:


#include<stdio.h>
int main( void )
{
	int N = 0;
	int w = 0;
	
	int b[7];
	int i = 0;
	int j = 0;
	
	scanf("%d",&N);
	
	while( N-- )
	{
		scanf("%d",&w);
		
		while( w )//把w各个位上的数字逆序保存到数组b中,比如w=1023,b[] = {3,2,0,1}
		{
			b[i] = w % 10;
			i++;
			w = w / 10;
		}
		
		for( j = i - 2; j >= 0 && b[j] == 0; j-- ) ;//从数组b倒数第二个数字开始,找到第一个不为0的下标
				
		if( -1 == j )//如果从倒数第二个开始都是0,则输出0
		{
			printf("0");
		}
		else 
		{
			for( ; j >= 0; j-- )//从数组b中倒数第一个不为0的开始输出
			{
				printf("%d",b[j]);
			}
		}
		
		i = 0;		
		
		printf("\n");		
	}
	
	//printf("\n\nHello World!\n");
	return 0;
}







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值