codevs-1447取出整数的一部分

简介: 说实在的,这个题目真不想写了…… 1447 取出整数的一部分 题目描述 Description 假如有一个整数(int):145678,现在我做截取该数一部份的操作,如输入4,返回前4位即1456;如果输入-3,则返回后面3位即678;如果输入0,则直接返回该数即145678;如果输入的数的绝对值大于上述树的位数(如8或-8),则返回Error。

说实在的,这个题目真不想写了……

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 }

 

相关文章
|
1月前
|
搜索推荐 索引 Python
【面试题】缺失的第一个整数
【面试题】缺失的第一个整数
25 0
|
4月前
|
存储 算法
【三种方法】求一个整数存储在内存中二进制中的1的个数附两道课外练习题
【三种方法】求一个整数存储在内存中二进制中的1的个数附两道课外练习题
35 0
|
4月前
|
算法
算法题 — 整数转二进制,查找其中1的数量
算法题 — 整数转二进制,查找其中1的数量
31 0
|
4月前
|
人工智能 算法 BI
【经典问题】给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集?
【1月更文挑战第26天】【经典问题】给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集?
|
11月前
|
存储 算法 索引
【每日挠头算法题(3)】字符串解码|数组中重复的数字
【每日挠头算法题(3)】字符串解码|数组中重复的数字
|
存储
学C的第二十三天【继续深度剖析数据在内存中的存储:3. 浮点型在内存中的存储(重点);练习:1. 有序序列判断;2. 获得月份天数(多组输入);3. 使用指针打印数组内容;4. 使用指针使字符串逆序】-2
(4). 取出内存中的 指数E(三种情况):E全为1 指数E 是通过 真实值+中间值 算出来的,如果E全是1,(32位系统)说明E的真实值是 128,指数是128说明这个值是非常大的。 这时,如果 有效数字M 全为0,表示 ±无穷大(正负取决于符号位s)
|
存储 5G 容器
一个很大的文件,存放了10G个整数的乱序数列,如何用程序找出中位数。
一个很大的文件,存放了10G个整数的乱序数列,如何用程序找出中位数。
88 0
C语言经典实例:11-20例:使用结构体输出学生成绩、编制万年历、验证哥德巴赫猜想、求二维数组最大最小值、数组求素数、数组元素排序、进制数的转换进制数的转换、找出次大值、重组数组(上)
C语言经典实例:11-20例:使用结构体输出学生成绩、编制万年历、验证哥德巴赫猜想、求二维数组最大最小值、数组求素数、数组元素排序、进制数的转换进制数的转换、找出次大值、重组数组(上)
C语言经典实例:11-20例:使用结构体输出学生成绩、编制万年历、验证哥德巴赫猜想、求二维数组最大最小值、数组求素数、数组元素排序、进制数的转换进制数的转换、找出次大值、重组数组(上)