n-1位数
题目96
n-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>
int main(){
int test,m,p,i;
scanf("%d",&test);
while(test--){
int n=0;
int x=1;
scanf("%d",&m);
p=m;
while(p){
n++;
p/=10;
}
for(i=0;i<(n-1);i++)
x=x*10;
printf("%d\n", m%x);
}
return 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]); //问题的关键是找出第一个不为0的下标 。
}
}
printf("\n");
}
//printf("\n\nHello World!\n");
return 0;
}