说实在的,这个题目真不想写了……
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
#include<stdio.h>
#include<math.h>
int main()
{
int n,k;
int num,nstr[]={},temp;
int i;
scanf("%d%d",&n,&k);
if(k==)
printf("%d\n",n);
else
{
num=;//下面是统计n的位数同时拆分整个数
temp=n;
while(temp>)
{
nstr[num]=temp%;
num++;
temp/=;
} if(fabs(k)>num)
{
printf("Error\n");
}
else
{
if(k>)
{
num--;
for(i=;i<k;i++) printf("%d",nstr[num-i]);
}
else //当k<0
{
temp=;
k=-k;
for(i=k-;i>=;i--)
{
temp=temp*+nstr[i];
}
printf("%d",temp);
}
printf("\n");
}
}
return ;
}