按词典顺序输出数字
来源:互联网 发布:vc map数据如何拷贝 编辑:程序博客网 时间:2024/06/05 15:29
题目来自leecode
题目要求输入一个数,把所有小于该数的数按顺序输出,顺序为先比较首位,首位相同再比较第二位,依次比较,从小到大排列。比如输入123,输出为1,10,100,101。。。。。99
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int weishu(int a)//返回该数的位数{ int ii = 0; while (a>0) { ii++; a /= 10; } return ii;}int iwei(int i,int a)//返回第i的数字{ int w = weishu(a); if (i<=w) { for (int ii = 0; ii < w - i; ii++) { a /= 10; } a %= 10; return a; } return -1;}int compare(int a, int b,int i) {//比较第i位的数字,运用递归的思想 if (iwei(i,a)>iwei(i,b)) { return 1; } else if (iwei(i, a)<iwei(i, b)) { return -1; } else { /*if (weishu(a) < weishu(b)) { return -1; } else if (weishu(a) > weishu(b)) { return 1; } else*/ compare(a, b, ++i); }}void swap(int &a, int&b) { int temp = 0; temp = a; a = b; b = temp;}int main(){ int aa; scanf("%d", &aa); int sum[10000] = {1}; for (int i = 0; i < aa; i++) { sum[i - 1] = i; } for (int i = 0; i < aa; i++) { for (int j = i+1; j < aa; j++) { if (compare(sum[i], sum[j], 1) == 1) swap(sum[j], sum[i]); } } for (int i = 0; i < aa; i++) { if (sum[i]!=0) { printf("%d ", sum[i]); } }}
输出示例:
注意事项:
这个题我用的是数组,所以预先定义一个足够大的数组,但是如果用户输入的数超出了数组的大小,就会出现异常,所以改用数据结构链表的思想可以解决该问题,用Java的同学也可以用ArrayList.
基本满足要求,今天考科目一,回来再改。
毕竟我还是菜鸟。
阅读全文
0 0
- 按词典顺序输出数字
- 插入一个数字后按顺序输出
- 1061: 顺序输出各位数字
- 从键盘输入一个正整数,按数字的相反顺序输出
- C#程序设计--输入一个整数,按数字反顺序输出
- 从键盘输入一串整数,按数字的相反顺序输出
- 冒泡排序,按从大到小的顺序输出数字
- 将输入的数字按从大到小的顺序输出
- 不增加数组空间按原有顺序先输出字母再输出数字
- zzuli OJ 1061: 顺序输出各位数字
- 对数字的处理,得到位数,逆序输出,顺序输出
- 按从小到大顺序输出
- 按顺序输出ceo
- 按顺序输出ZOJ
- 输入数字n,按顺序输出从1最大的n位10进制数
- 输入数字n,按顺序输出从1到最大的n位10进制数
- c++ 从混合中英文数字等的string 中按顺序分别输出
- 输入数字 n,按顺序输出从 1 最大的 n 位 10 进制数
- Python----检测字符串是否是十进制格式的IP地址
- mybatis 查询数量有结果,但查询列表时返回空
- Oracle数据库补充
- 加快建设开放型经济新体制,自觉运用法律武器依法维权
- 数据库操作
- 按词典顺序输出数字
- 【白兔兔】- 试卷 LaTeX模板
- Linux Mint 18.2双显卡之安装NVIDIA官方闭源驱动
- 使用EventFilter进行事件过滤
- 人工智能冲击下的十大高危行业,你中了吗?
- iOS编程学习十
- Python---非负整数转化成二进制字符串
- 读Zepto源码之Event模块
- 设计模式(15)-解释器模式