西电oj135题 拼数字并排序
类别
综合
时间限制
1S
内存限制
1000Kb
问题描述
对于输入的字符串(只包含字母和数字),将其中的连续数字拼接成整数,然后将这些整数按从大到小顺序输出。
例如字符串“abc123d5e7f22k9”中共有5个数字123,5,7,22,9,因此应输出123 22 9 7 5。
输入说明
输入为一个字符串,字符串长度不超过100,其中最长的连续数字不超过10个,字符串中至少包含1个数字。
输出说明
对于输入的字符串,在一行上输出排序结果,整数间以一个空格间隔。
输入样例
abc123d5e7f22k9
输出样例
123 22 9 7 5
#include<stdio.h>
#include<stdlib.h>
void order(long long int n[], int m) {
int i, j;
long long int t;
for (i = 0; i < m; i++) {
for (j = i; j <= m; j++) {
if (n[i] < n[j]) {
t = n[i]; n[i] = n[j]; n[j] = t;
}
}
}
for (i = 0; i <= m; i++) {
printf("%lld ", n[i]);
}
}
int main() {
char str[102], num[11];
int i, j, k, m = 0;
long long int n[50];
gets(str);
for (i = 0; str[i] != 0; i++) {
if (str[i] >= 48 && str[i] <= 57) {
for (j = i, k = 0; str[j] != 0 && (str[j] >= 48 && str[j] <= 57); j++, k++) {
num[k] = str[j];
}
num[k] = 0;
if (k == 10) {
n[m] = (num[0] - 48) * 1000000000 + (num[1] - 48) * 100000000 +
(num[2] - 48) * 10000000 + (num[3] - 48) * 1000000 +
(num[4] - 48) * 100000 + (num[5] - 48) * 10000 +
(num[6] - 48) * 1000 + (num[7] - 48) * 100 +
(num[8] - 48) * 10 + (num[9] - 48) * 1;
m += 1;
} else { n[m] = atoi(num); m += 1; }
i = j - 1;
}
else continue;
}
order(n, m - 1); return 0;
}
首先声明:该程序有点bug,输出不了9999999999这样大一点的十位数,但是1234567895可以。虽然单数西电oj给我过了,可能是用的测试数据没有那么大吧
本题要注意的点,一开始我没有注意结果没完全过,就是它说最长的连续数字不超过10个,这就说明了int这个数据类型不行,所以换了long long int,然后atoi这个函数只能将九位数正常化为整型,所以单令了一种情况(k==10)单独计算十位数(这也是为啥第一次判断只给了80)
所以说,要注意数据是否有溢出
西电oj135题 拼数字并排序的更多相关文章
- 剑指offer——python【第37题】数字在排序数组中出现的次数
题目描述 统计一个数字在排序数组中出现的次数 思路 最贱的方法依旧是count计数.. 当然,,看到有序数组就应该想到二分法,找到重复数字左边和右边的数字,然后两个相减就可以了 解答 方法1 coun ...
- 《剑指offer》第五十三题(数字在排序数组中出现的次数)
// 面试题53(一):数字在排序数组中出现的次数 // 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1, 2, 3, 3, // 3, 3, 4, 5}和数字3,由于3在这个数组中出 ...
- 【剑指Offer面试编程题】题目1349:数字在排序数组中出现的次数--九度OJ
题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小.1<=n <= 10^6. 第二行有n个整数,表示数组元素,每个元素均 ...
- hdu 1106:排序(水题,字符串处理 + 排序)
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...
- Python练习题 027:对10个数字进行排序
[Python练习题 027] 对10个数字进行排序 --------------------------------------------- 这题没什么好说的,用 str.split(' ') 获 ...
- 题解西电OJ (Problem 1007 -做一名正气的西电人 )--长整型计算
Description 一天,wm和zyf想比比谁比较正气,但正气这种东西无法量化难以比较,为此,他们想出了一个方法,两人各写一个数字,然后转化为二进制,谁的数字中二进制1多谁就比较正气! Input ...
- 剑指offer(37)数字在排序数组中出现的次数。
题目描述 统计一个数字在排序数组中出现的次数. 题目分析 这题用暴力解也可以过,不过面试官肯定期待更好的解法. 查找我们最熟悉的就是二分查找了,不过二分查找查找的数在数组中只有一个,我们这里却有很多个 ...
- 【Java】 剑指offer(53-1) 数字在排序数组中出现的次数
正文 本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 统计一个数字在排序数组中出现的次数.例如输入排序数组{1, ...
- 九度OJ 1349:数字在排序数组中出现的次数 (排序、查找)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2489 解决:742 题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小. ...
- 【Offer】[53-1] 【数字在排序数组中出现的次数】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 统计一个数字在排序数组中出现的次数.例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出 ...
随机推荐
- .net基础—委托和事件
委托 委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用. 在实例化委托时,可以将其实例与任何具有兼容签名和返回类型的方法相关联. 可以通过委托实例调用方法.可以将任何可访问类或结构中与 ...
- 用深度学习模型Word2Vec探索《红楼梦》人物关系
先来看一看结果,发现: 1.贾宝玉和袭人的关系最近. 2.薛宝钗和自己的妈妈关系最近. 3.贾宝玉和林黛玉逼格比较统一,薛宝钗属于独树一帜的逼格调性. 4.大观园中可以看到邢岫烟经常出没... 还有更 ...
- [IDEA]的常见优化
[IDEA]的常见优化 设置方法分割线和颜色 效果图 步骤 开启方法分割线 打开File -> Setting ->Editor ->General -> Appearance ...
- maven-标准目录结构,常用命令,生命周期,概念模型图
maven-标准目录结构 作为一个maven工程,它的src目录和pom.xml是必备的,进入src目录后,我们发现它里面的目录结构如下: src/main/java -- 存放项目的 . java ...
- Ubuntu18.04 右上角网络连接消失问题记录
问题记录 因为一块板子要访问远程桌面,需要联网才行,然后发现桌面右上角的网络连接标志不见了,而且无论用usb共享网路,或者是无线网卡,都连不上网. 首先想是不是硬件的问题,给系统重新装了一个ubunt ...
- 完整的javaweb文档
1.index.jsp <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8&qu ...
- 037_Clone Button
ResolutionTo do this first go to Setup | Customize | Accounts | Buttons and Links | New. Enter the f ...
- holiday07
第七天 grep常用的两种模式查找 参数 含义 ^a 行首,搜寻以a开头的行 ke$ 行尾搜寻以ke结束的行 echo 文字内容 echo会在终端显示指定参数的文字,通常会和重定向 联合使用 重定向& ...
- 小批量excel数据导入oracle
前提是小批量数据,大批量的还是建议用sqlloader 使用PLSQL Developer工具,这个可是大名鼎鼎的Oracle DBA最常使用的工具.在单个文件不大的情况下(少于100000行),并且 ...
- ZSTUOJ平台刷题⑤:Problem G.--深入浅出学算法023-旋转数阵
Problem G: 深入浅出学算法023-旋转数阵 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 4794 Solved: 955 Descripti ...