C++编程题1——输入字符串,输出数字最小的值
2017-09-16 11:07
841 查看
题目描述:
输入不限长度的字符数字,经过函数处理,输出的数字为最小值,其中0在开头无效。
例:
输入 026148
输出 102468
这是一开始想到的方法,最初的版本没有考虑到数字不限长度的问题,这里就不附上了。
主要思想就是字符串转换成数字,排序,再把数字转换成字符串输出(如果以数字形式输出,就不满足限长度的要求)
最好最快的方法:
直接字符串的字符可以比较大小,不必转换成数字再比较大小
输入不限长度的字符数字,经过函数处理,输出的数字为最小值,其中0在开头无效。
例:
输入 026148
输出 102468
这是一开始想到的方法,最初的版本没有考虑到数字不限长度的问题,这里就不附上了。
主要思想就是字符串转换成数字,排序,再把数字转换成字符串输出(如果以数字形式输出,就不满足限长度的要求)
#include<iostream> #include<string> #include<sstream> using namespace std; int main() { cout << "please input the number:" << endl; string str; cin >> str; int str_length = str.length(); int *a = new int[str_length]; for(int i=0; i < str_length; i++ ) { a[i] = str[i] - '0'; } int k = str_length; //排序 for (int i = 0; i < k; i++) { for (int j = i; j < k; j++) { if (a[i] > a[j]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } } //找出第一个非零的数 int nozero = -1; for(int i = 0; i < k; i++) { if(a[i]!=0) { nozero = i; break; } } if(nozero!=-1) { int temp = a[0]; a[0] = a[nozero]; a[nozero]= temp; } ostringstream oss; string c; string d; for(int i=0; i<k ; i++) { oss<<a[i]; c = oss.str(); d+=c; } cout << c; delete []a; getchar(); getchar(); }
最好最快的方法:
直接字符串的字符可以比较大小,不必转换成数字再比较大小
#include<iostream> #include<string> using namespace std; int main() { string a; cin >> a; int k = a.length(); //排序 for (int i = 0; i < k; i++) { for (int j = i; j < k; j++) { if (a[i] > a[j]) { swap(a[i],a[j]); } } } //找出第一个非零的数 int nozero = -1; for(int i = 0; i < k; i++) { if(a[i]!='0') { nozero = i; break; } } if(nozero!=-1) { swap(a[0],a[nozero]); } a290 cout << a; getchar(); getchar(); }
相关文章推荐
- C++字符串输入数字输出
- c++ 输入字符串,输出数字
- 输入一个字符串只包含“0~10”和”,“找出最小的数字和最大的数字(可能不止一个),输出最后剩余数字的个数,如输入”3,3,4,5,6,7,7“
- c++入门:输入一个字符串,将其分段输出,分段符为除字母和数字之外的符号。
- 【C++】输入并反向输出字符串
- C 输入一个字符串,将其中连续的数字作为一个整数存到一数组中,统计整数个数并输出这些整数
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- PHP之输入含数字的字符串在 所有数字前加%输出
- 输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
- c++输入字符串和子字符串 输出子字符串在字符串中出现的次数 并输出字符串中的字母
- C#--第三周实验--任务2--输入一个由若干字符组成的字符串,输出其中的大写字母、小写字母、数字和其他字符的个数(控制台应用)
- C/C++学习(二)输入n个整数,输出其中最小的k个。
- 编写函数,其功能是:将一个数字字符串转换为一个整数(不得调用C语言中提供的将字符串转换成整数的函数。)要求在主函数中输入该字符串并输出转换后的整数的值。
- 《任意输入一个合理大小的字符串,实现逆序输出并统计一个字符串中字母、数字、空格及其他字符的个数》
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 从键盘输入6个字符串(仅仅包含英文字母和数字),对这6个字符串从小到大排列并输出结果。
- 用C++编程 输入10个数字,放在一个数组中,找出其中最小的值,输出这个值以及它在数组中的下标
- C++输入一个字符串,把其中的字符按照逆序输出的两种方法
- 1、 输入一串字符,只包含“0-10”和“,”找出其中最小的数字和最大的数字(可能不止一个),输出最后剩余数字个数。
- Java输入带空格的数字字符串,输出数字的和(找规律停止程序)