n-1位数

题目96

 

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>
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; 
 }

posted @ 2014-03-07 20:29  为梦出发  阅读(147)  评论(0编辑  收藏  举报