c++ 问题,高手请进,

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:26:15
在键盘上任意输入一窜字符窜(内有数字和字母,以“#”字符号结束。如"dfasdf5524safdas14#".要求:
1:将其中的连续数字作为一个整数,依次存放到数组中 比如:a[0]=5524 a[1]=14
2:并将数组实现按降序排列。
3:排序的结果用文件的形式存放。再从文件中读出输入输出到屏幕,中间要有注释。最好可以说明一些你的设计思路。我知道比如像排序都有好多种方法。
注意要用文件哈。
这是一道期末的课程设计题目 由于上学期没有怎么学好 就感觉很难 求求大家帮帮忙了
1:还要用类来编写
2:排序的结果用文件形式存放,再从文件读出输出到
屏幕。
3:读出来的整数要用数组存放
4:要按降序排列

以前的作业,借你看看,思想差不多,如果没人回答的话分就给我吧,哈哈哈

设计函数 int atoi(char *s)。
atoi()会扫描参数s字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再 遇到非数字或字符串结束时('')才结束转换,并将结果返回。
返回值 返回转换后的整型数。

1.程序代码和注释
#include"iostream"

using namespace std;

const int MAX_LENGTH = 50; //能输入的字符串的最大长度为50字节

bool Input(char c) //判断该字符是否为正负号或数字
{
int i = (int)c;

if(i == 43 || i ==45)return true;
else if(i > 48 && i < 57)return true;
else
return false;
}
void atoi(char s[]) //将字符串按条件转换成整型
{
bool num = false,cha = false; /*num判断是否已经输入了数字或正负号,
cha判断输入了数字后是否输入了字母*/
int to_int;

for(int i = 0; i < MAX_LENGTH ; i ++)
{
to_int = (int)s[i];

if(s[i] == '\0')break; //字符串结束就停止转换
if(Input(s[i])) /*如果输入的是数字或正负号,但还没有输入字母就
找下一个是否为字母,若已经输入了字母就结束*/
{
num = true;
if(cha)break;
else conti