说实在的,这个题目真不想写了……
1447 取出整数的一部分
题目描述 Description
假如有一个整数(int):145678,现在我做截取该数一部份的操作,如输入4,返回前4位即1456;如果输入-3,则返回后面3位即678;如果输入0,则直接返回该数即145678;如果输入的数的绝对值大于上述树的位数(如8或-8),则返回Error。现在请你编程实现。
输入描述 Input Description
第一行,输入一个正整数n(int型)
第二行,输入一个整数k
输出描述 Output Description
第一行(共一行),一个整数或Error;如果返回的数都是0,则返回一个0即可。如果是0开头的数字,如007,只要输出7即可。
样例输入 Sample Input
样1:
145678
4
样2:
145678
-3
样3:
145678
0
样4:
145678
-8
样5:
145678
8
样6:
12000
-3
样7:
12007
-3
样例输出 Sample Output
样1:
1456
样2:
678
样3:
145678
样4:
Error
样5:
Error
样6:
0
样7:
7
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int n,k; 6 int num,nstr[20]={0},temp; 7 int i; 8 scanf("%d%d",&n,&k); 9 if(k==0) 10 printf("%d\n",n); 11 else 12 { 13 num=0;//下面是统计n的位数同时拆分整个数 14 temp=n; 15 while(temp>0) 16 { 17 nstr[num]=temp%10; 18 num++; 19 temp/=10; 20 } 21 22 if(fabs(k)>num) 23 { 24 printf("Error\n"); 25 } 26 else 27 { 28 if(k>0) 29 { 30 num--; 31 for(i=0;i<k;i++) printf("%d",nstr[num-i]); 32 } 33 else //当k<0 34 { 35 temp=0; 36 k=-k; 37 for(i=k-1;i>=0;i--) 38 { 39 temp=temp*10+nstr[i]; 40 } 41 printf("%d",temp); 42 } 43 printf("\n"); 44 } 45 } 46 return 0; 47 }