近几年科大讯飞软件笔试题目
(全)近几年科大讯飞软件笔试题目学习资料

请问运行Test函数会有什么样的结果?
a)_会出错,不能传递动态分配的内存,str一直为空
char *GetMemory(void)
{
Char p[]=”hello world”);
Return p;
}
Void Test(void)
{
Char *str=NULL;
Str=GetMemory();
Printf(str);
8、(8分)以下是一组有关内存知识的问题,请仔细看题,回答:
Void GetMemory(char *p)
{
P=(char *)malloc(100);
}
Void Test(void)
{
Char *str=Null;
GetMemory(str);
Strcpy(str,”hello world”);
Printf(str);
Virtual void Fn()
{printf(“B fn called.\n”);}
};
Class C:public B
(全)近几年科大讯飞软件笔试题目
2009讯飞软件开发笔试题目(C++)A卷
1、(4分)用变量a给出下面的定义
a)一个整型数;
b)一个指向整型数的指针;
c)一个指向指针的指针,它指向的指针是指向一个整型数;
d)一个有10个整型的数组;
e)一个有10个指针的数组,该指针是指向一个整型数;:
a)#define seconds365*24*60*60
b)#define MIN(a,b) ((a)<(b)?(a):(b))
扩展:MAX宏#define MAX ((a)>(b)(a):(b))
2018秋招笔试科大讯飞java笔试试题

2018秋招笔试科大讯飞java笔试试题1、下列关于继承的描述错误的是()A. 在Java中允许定义一个父类的引用,指向子类对象B. 在Java中继承是通过extends关键字来描述的,而且只允许继承自一个直接父类C. 在Java中抽象类之间也允许出现继承关系D. 在Java中一个子类可以继承多个抽象类,在extends关键字后一次列出,用逗号隔开参考答案:D语法层面上抽象类和接口的区别1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract方法;2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final 类型的;3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
2、以下关于接口的说法错误的是()A. 接口中的成员变量和成员方法只能是Public(或者缺省不写)B. Java中的接口(interface)也继承了Object类C. 实现接口的类必须全部实现接口中的方法D. 接口中的方法只能有方法原型,不能有方法主体参考答案:B3、在一个请求分页系统中,采用NUR页面置换算法时,假如一个作业的页面走向为1,2,1,5,4,2,4,3,2,4。
当分配给该作业的物理块数为3时,访问过程中命中的次数为()A. 3B. 4C. 5D. 6参考答案:B主要的页面置换算法有:OPT、LRU、LFU、NUR以及FIFO。
FIFO:先进先出算法。
OPT:最佳置换算法。
LRU:最近最久未使用算法。
LFU:最近最少使用算法。
NUR:最近未使用算法。
4、下列程序的执行结果是()Public class Test{Public static void main(String[] args){Stytem.out.prinln(“ “ + ‘b’ +1);}}A. 99B. 981C. 198D. b1参考答案:D5、TCP套接字函数中()不会产生阻塞。
近两年科大讯飞实习生笔试、面试题

第一题是递归判断五子棋问题,在一个棋盘上,0代表空,1代表黑子,2代表白子,现给定一个坐标(ax,ay),代表当前下的黑子的位置,求递归判断黑子是否已经赢了(不考虑赢的趋势,也即仅仅判断当前状态)然后就是问如何求1到1000000内所有素数,(相信弄过一点算法都清楚筛选法)最后问了个如何在一个序列中求第k大的数,笔者当时脑袋一热回答了二叉搜索树+优先级(也OK),面试官听完后就来了句,不就是堆嘛。
1. 已知二叉树的前序遍历为ABCDEFGHIJ,中序遍历为CBEDAHGIJF,请画出其二叉树结构。
2.求一个整数数组的最大元素,用递归方法实现。
1.<span>#include <iostream>2.#include <cmath>ing namespace std;4.5.int maxnum(int a[], int n)6.{7.if(n == 1)8.return a[0];9.if(n>1)10. {11.return max(a[0], maxnum(a+1,n-1));12. }13.}14.int main()15.{16.int num[10] = {0,1,2,3,4,5,6,7,8,9};17. cout<<maxnum(num,10)<<endl;18.return 0;3.什么是虚拟存储器?虚拟存储器的特点是什么?虚拟存储器:在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理贮存容量大得多,可寻址的“主存储器”。
虚拟存储区的容量与物理主存大小无关,而受限于计算机的地址结构和可用磁盘容量。
特点:多次性、对换性、虚拟性。
多次性是指一个作业被分成多次调入内存运行,亦即在作业运行时没有必要将其全部装入,只需将当前要运行的那部分程序和数据装入内存即可;以后每当要运行到尚未调入的那部分程序时,再将它调入。
科大讯飞教育Java基础阶段笔试试卷V1.0.0-20111229

科大讯飞教育Java基础笔试题第一部分单项选择题(每题2分,共40分。
不选、多选均不得分)1.class Top {public Top(String s) { System.out.print("B"); }}public class Bottom2 extends Top {public Bottom2(String s) { System.out.print("D"); }public static void main(String [] args) {2.3.B) 一个try块后跟着一个catch块或一个finally块,或两个都跟着C) 一个catch块必须关联到一个try块D) finally块不会独立出现E) 以上都不对4.对于以下代码5.6.A. List<List<Integer>> table = new List<List<Integer>>();B. List<List<Integer>> table = new ArrayList<List<Integer>>();C. List<List<Integer>> table = new ArrayList<ArrayList<Integer>>();D. List<List, Integer> table = new List<List, Integer>();E. List<List, Integer> table = new ArrayList<List, Integer>();F. List<List, Integer> table = new ArrayList<ArrayList, Integer>();G. 都不可以7.在Java中,下列关于抽象类和接口的说法,正确的是A.在抽象类中,所以的方法都是抽象方法B.继承自抽象类的子类必须实现起父类(抽象类)中的所有抽象方法C.在接口中,可以有方法实现,在抽象类中不能有方法实现D.一个类可以从多个接口继承,也可以从多个抽象类继承8.A.B.synchronized public static writeLog(String msg)C.public final abstract void writeLog(String msg)D.final public void writeLog(String msg)9.10.111213.请选择输出结果()class Demo {long a[]=newlong[10];publicstaticvoid main(String []args) {Demo demo=new Demo();demo.display();}void display(){System.out.println(a[9]);}}A.输出nullB.输出0C.当编译时,会发生错误D.当运行时,会发生错误14.main方法是Java ApplicationA.public static void main()B.public static void main( String args[] )C.public static int main(String [] arg)1516}D.编译成功并输出"2"17.下面哪个选项放在第6行上会导致一个编译错误()1) class Super{2) public float getNum(){return 3.0f;}3) }4)5) public class Sub extends Super{6) _______________________7) }A.public float getNum(){return 4.0f;}B.public void getNum(){}C.public void getNum(double d){}D.public double getNum(float d){return 4.0d;}18.下面集合定义正确的是()A.String strs[] = { 'a' 'b' 'c'};B.String[] strs = {"a", "b", "c"};C.String[] strs = new String{"a" "b" "c"};D.String[] strs = new String[3]{"a", "b", "c"};19.代码如下:3. public class Redwood extends Tree {4. public static void main(String[] args) {5. new Redwood().go();6. }7. void go() {8. go2(new Tree(), new Redwood());9. go2((Redwood) new Tree(), new Redwood());10. }11. void go2(Tree t1, Redwood r1) {12. Redwood r2 = (Redwood)t1;13. Tree t2 = (Tree)r1;14. }15. }16. class Tree { }结果是:A. 运行时抛出异常ClassCastExceptionB. 编译及运行无任何输出C. 由于第8行错误,编译失败D. 由于第9行错误,编译失败E. 由于第12行错误,编译失败F. 由于第13行错误,编译失败20.如果equals() 和hashCode() 方法被正确的重写,关于同一个类的两个实例的比较,下列论述哪些是正确的( )A. 如果equals() 返回true, 那么hashCode() 比较可能返回falseB. 如果equals() 返回false, 那么hashCode() 比较可能返回trueC. 如果hashCode() 比较返回true, 那么equals() 一定返回trueD. 如果hashCode() 比较返回true, 那么equals() 可能返回trueE. 如果hashCode() 比较返回false, 那么equals()可能返回true第三部分:简答题(每题5分,共30分):1.简述继承与组合区别。
(全)近几年科大讯飞软件笔试题目

2009讯飞软件开发笔试题目(C++)A卷1、(4分)用变量a给出下面的定义a) 一个整型数;b)一个指向整型数的指针;c)一个指向指针的指针,它指向的指针是指向一个整型数;d)一个有10个整型的数组;e)一个有10个指针的数组,该指针是指向一个整型数;f)一个指向有10个整型数数组的指针;g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数答案:a)int a b)int *a; c)int **a; d)int a[10]; e)int *a [10];f) int a[10], *p=a; g)int (*a)(int) h) int( *a[10])(int)2、(4分)请写出以下语句的输出结果:Int i=43;Int j=5;Double f=25.45181;a)printf(“i=%d,j=%d,f=%3.2f”,i,j,f);b)printf(“i=%x,j=%06d,i/j=%d”,i,j,i/j);答案:A)i=43,j=5,f=25.45 B)i=2b ,j=00005,i/j=8(%x显示的是一个无符号的0x 16进制的整数,%06d输出的是6位数,不够6位数,前面补0,i/j两个整数相除,只取商的整数值)3、(2分)请完成以下宏定义:a)用预处理指令#define 声明一个常数,用以表明1年中有多少个秒(忽略闰年问题)b)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个答案:a)#define seconds 365*24*60*60b) #define MIN(a,b) ((a)<(b)?(a):(b))扩展:MAX宏#define MAX ((a)>(b)(a):(b))ABS宏#define ABS (((x)>0)?(x):(-(x)))4、(6分)以下为32为windows下的c++程序,请计算:a)char str[]=”hello”;char *p=str;请计算:sizeof(str)= sizeof(p)= strlen(p)=答案:6,4,5b)void func(char str[100]){Void *p=malloc(100);}请计算:sizeof(str)=101sizeof (p)=4c)int a[3]={1,2,3};int b=sizeof(a)/sizeof(a[0]);请计算:b=35、(2分)设有定义:int n=0,*p=&n,**q=&p; 则以下选项中,正确的赋值语句是(d)a)p=1; b)*q=2; c)q=p; d)*p=5;6、(2分)const关键字的用途?(至少说明两种)答案:(1)可以定义const 常量(2)const 可以修饰函数的参数、返回值,甚至函数的定义体。
科大讯飞笔试题

A、1*360B、1*180C、64*360D、64*1802、有一盆衣服(已经洗过了,需要漂洗),请问在漂洗次数固定的情况下如何分配水才能把衣服洗得最干净(C)A、从少到多B、从多到少C、平均分配D、随便洗3、用力拉一根橡皮筋,橡皮筋上有没有点还处在原来的位置没有被拉走(B)A、有B、没有C、有是有、有时没有D、一般人拉没有,刘谦拉就有4、假设一个应用程序需要使用多个提供不同功能但在皆接口上有差异的类,适合使用的设计模式是(D(不确定))A、装饰模式B、迭代器模式C、工厂模式D、适配器模式5、结构化程序设计主要强调的是(C)A、程序的规模B、程序的效率C、程序的易读性D、程序设计语言的先进性6、SQL Server中,删除一个表的命令是(C)A、DELETEB、CLEARC、DROPD、REMOVVE7、以下关于互斥量说法错误的是:(B)A、单线程程序不需要使用互斥量B、互斥量可以被两个以上的线程锁定C、互斥量的激活是原子操作D、互斥量的创建和销毁可以在不同的线程进行8、在Windows任务管理器中发现某个进程CPU占用率长时间处于100%,以下可能导致该现象的原因是(D)A、程序处于大量I/O过程中B、多线程导致进程死锁C、等带另一个程序响应D、程序进入死循环9、假设进程中一个生产者线程,10个消费者线程,为保证进程间不出现死锁,信号量的初值可以设置为(C)A、-1B、0C、1D、1010、使用两个栈共享一片空间时,当(D)时,才产生溢出A、其中一个栈的栈底到达这片内存空间的中心点B、其中一个栈的栈顶到达这片内存空间的中心点C、两个栈均不空,且一个栈的栈顶到达另一个栈的栈底D、两个栈的栈顶在这片内存空间的某一位置相遇11、在一个单链表HL中,若要在指针所指节点的后面插入一个有指针second所指向的节点,则执行(A)A、second->next=first->next ; first->next=second;B、first->next=second->next;second=first;C、second->next=first->next ; second->next=first;D、first->next=second->next;second->next=first;12、以下C语言编译过程的真确步骤是(反正A对其他貌似也对。
近两年科大讯飞实习生笔试、面精彩试题

共享存:使得多个进程可以访问同一块存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
25.print(a);
26.print(trim(a));
27.return0;
28.}
第二部分:填空题(2*6)
1.操作系统中的存储管理常用(虚拟存储器)的方式来摆脱主存容量的限制。
2.满二叉树第i层上的叶子节点数有(2的i-1次方)个。
3.二分查找算法的平均时间复杂度是(logn)。
4.设x=3,y=2,x<<y=(12)。
pPrev = pNode;
pNode = pNext;
}
return pReversedHead;
}
7、输入x y z,然后输出序列的可能性
X Y Z
X Z Y
Y X Z
Y Z X
Z Y X
8、怎么用一个类将一个实例完全复制给另外一个实例
填空题有STL库由哪部分组成,
简答题:1.冒泡排序和快速排序的优缺点
{
public static boolean isPrime(int num)
{
for(int i=2;i<=Math.Sqrt(num):i++)
{
if(num%i==0){
return false;
科大讯飞面试测试题

科大讯飞面试测试题# 科大讯飞面试测试题一、选择题(每题2分,共20分)1. 科大讯飞成立于哪一年?A. 1999年B. 2000年C. 2001年D. 2002年2. 科大讯飞的主要业务领域不包括以下哪项?A. 语音识别B. 人工智能C. 网络安全D. 语音合成3. 下列哪项不是科大讯飞的核心技术?A. 深度学习B. 语音交互C. 机器翻译D. 量子计算4. 科大讯飞的智能语音技术在以下哪个行业中有广泛应用?A. 教育B. 医疗C. 金融D. 所有选项5. 以下哪个是科大讯飞的人工智能产品?A. 讯飞输入法B. 讯飞翻译机C. 讯飞智能音箱D. 所有选项二、简答题(每题10分,共30分)6. 简述科大讯飞在人工智能领域的主要研究方向。
7. 描述科大讯飞的语音识别技术在实际应用中的优势。
8. 阐述科大讯飞如何通过技术创新推动行业发展。
三、案例分析题(每题25分,共50分)9. 假设你是一名产品经理,负责科大讯飞的一款智能语音助手产品。
请分析该产品在设计过程中需要考虑的关键因素。
10. 给定一个场景:一家医院希望利用科大讯飞的语音识别技术来提高医生记录病历的效率。
请分析如何实施这一技术,并讨论可能面临的挑战及解决方案。
四、开放性问题(共30分)11. 考虑到人工智能技术的快速发展,你认为未来5年内,科大讯飞在人工智能领域可能面临的最大挑战是什么?请提出你的见解。
五、附加题(10分)12. 如果你是科大讯飞的一名研发人员,你将如何利用现有技术为公司创造新的增长点?请简要描述你的创新思路。
请注意,以上测试题仅为模拟题目,实际面试内容可能会有所不同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2009讯飞软件开发笔试题目(C++)A卷1、(4分)用变量a给出下面的定义a) 一个整型数;b)一个指向整型数的指针;c)一个指向指针的指针,它指向的指针是指向一个整型数;d)一个有10个整型的数组;e)一个有10个指针的数组,该指针是指向一个整型数;f)一个指向有10个整型数数组的指针;g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数;h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数答案:a)int a b)int *a; c)int **a; d)int a[10]; e)int *a [10];f) int a[10], *p=a; g)int (*a)(int) h) int( *a[10])(int)2、(4分)请写出以下语句的输出结果:Int i=43;Int j=5;Double f=;a)printf(“i=%d,j=%d,f=%3.2f”,i,j,f);b)printf(“i=%x,j=%06d,i/j=%d”,i,j,i/j);答案:A)i=43,j=5,f= B)i=2b ,j=00005,i/j=8(%x显示的是一个无符号的0x 16进制的整数,%06d输出的是6位数,不够6位数,前面补0,i/j两个整数相除,只取商的整数值)3、(2分)请完成以下宏定义:a)用预处理指令#define 声明一个常数,用以表明1年中有多少个秒(忽略闰年问题)b)写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个答案:a)#define seconds 365*24*60*60b) #define MIN(a,b) ((a)<(b)(a):(b))扩展:MAX宏 #define MAX ((a)>(b)(a):(b))ABS宏 #define ABS (((x)>0)(x):(-(x)))4、(6分)以下为32为windows下的c++程序,请计算:a)char str[]=”hello”;char *p=str;请计算:sizeof(str)= sizeof(p)= strlen(p)=答案:6,4,5b)void func(char str[100]){Void *p=malloc(100);}请计算:sizeof(str)=101sizeof (p)=4c) int a[3]={1,2,3};int b=sizeof(a)/sizeof(a[0]);请计算:b=35、(2分)设有定义:int n=0,*p=&n,**q=&p; 则以下选项中,正确的赋值语句是(d)a)p=1; b)*q=2; c)q=p; d)*p=5;6、(2分)const关键字的用途(至少说明两种)答案:(1)可以定义 const 常量(2)const 可以修饰函数的参数、返回值,甚至函数的定义体。
被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
7、(2分)typedef的c语言中频繁用以声明一个已经存在的数据类型的同义词。
也可以用以预处理器做类似的事情。
例如:#define dps struct s*Typedef struct s *tps;以上两种情况的意图都是要定义dps和tps作为一个指向结构s指针。
哪种方法更好一些呢(如果有的话)为什么Typedef更好一些,因为define只是简单的替换,比如声明dps a,b等价于struct *a,b;所以这样声明是错误的,而Typedef却不会这样。
8、(8分)以下是一组有关内存知识的问题,请仔细看题,回答:Void GetMemory(char *p){P=(char *)malloc(100);}Void Test(void){Char *str=Null;GetMemory(str);Strcpy(str,”hello world”);Printf(str);}请问运行Test函数会有什么样的结果a)_会出错,不能传递动态分配的内存,str一直为空char *GetMemory(void){Char p[]=”hello world”);Return p;}Void Test(void){Char *str=NULL;Str=GetMemory();Printf(str);}请问运行Test函数会有什么结果b)_会产生错误,不能返回子函数的局部变量值,因为在函数退出时,局部变量的值也清空。
void GetMemory2(char **p,int num){*p=(char *)malloc(num);}Void Test(void){Char *str=NULL;GetMemory(&str,100);Strcpy(str,”hello”);Printf(str);}请问运行Test函数会有什么结果c)_hello。
void Test(void){Char *str=(char *)malloc(100);Strcpy(str,”hello”);Free(str);If(str!=NULL){Strcpy(str,”world”);Printf(str);}}请问运行test函数会有什么样的结果虽然能拷贝成功,但是这样使用很不安全,free(str)后,str成为悬浮指针。
9、(6分)请写出以下程序的输出结果:Class A{Public:A(){ Printf(“A constructed.\n”);}Virtual ~A(){printf(“A deconstructed.\n”);}Virtual void Fn(){printf(“A fn called.\n”);}};Class B:public A{Public:B(){printf(“B constructed.\n”);}Virtual ~B(){printf(“B deconstructed.\n”);}Virtual void Fn(){printf(“B fn called.\n”);}};Class C:public B{Public:C(){printf(“C constructed.\n”);}Virtual ~C(){printf(“C deconstructed.\n”);}Virtual void Fn(){printf(“C fn called.\n”);}};Void main(int argc,char* grgv[]){A *pA=new B;If(pA!=NULL)pA->fn();B *pB=static_cast<B*>(pA);If(pB!=NULL)pB->fn();C * pC=static_cast<C*>(pA);If(pC!=NULL)pC->fn();delete pA;}A constructed.B constructedB fn called.B fn called.B fn called.B deconstructed.A deconstructed.10.(2分)以下说法错误的是:(b)A)指针和引用作为函数参数都可以改变实参B)指针和引用都可以在定义后任意的改变指向C)引用必须在创建的时候初始化,而指针则不需要D)不能空引用,但是可以有空指针11、(2分)下列关于多态的描述,错误的是(c)A)C++语言的多态性分为编译时的多态和运行时的多态性B)编译时的多态性可以通过函数重载来实现C )运行时的多态性可以通过模板和虚函数来实现D )实现运行时多态性的机制称动态绑定12、(2分) 运算符的重载形式有两种,重载为_类的成员函数_和_类的友元函数_13、(2分) main 主函数执行完毕后,是否可能会再执行一段代码请说明理由答:可以,可以用_onexit()注册一个函数,在main 结束之后调用f1,f2,f3,f4。
14、(2分)C++中的空类,默认产生那些类成员函数答:默认构造函数、析构函数、默认拷贝函数和赋值操作符15、(4分)简述STL 库的功能,并给出遍历一个包含一组整型数的vector 的代码。
答:标准模板库是一个基于模板的容器类库,包括链表、列表、队列和堆栈。
标准模板库还包含许多常用的算法,包括排序和查找。
标准模板库的目的是提供对常用需求重新开发的一种替代方法。
标准模板库已经经过测试和调试,具有很高的性能并且是免费的。
最重要的是,标准模板库是可重用的,当你知道如何使用一个标准模板库的容器后,就可以在所有的程序中使用它而不需要重新开发了。
容器是包容其他对象的对象。
标准C++库提供了一系列的容器类,它们都是强有力的工具,可以帮助C++开发人员处理一些常见的编程任务。
标准模板库容器类有两种类型,分别为顺序和关联。
顺序容器可以提供对其成员的顺序访问和随机访问,关联容器则经过优化类的键值访问它们的元素。
标准模板库在不同操作系统是可移植的。
#include<iostream>#include<vector>using namespace std;int sum(vector<int > vec){int result=0;vector<int>::iterator p=();while(p!=()){cout<<*p<<" ";result+=*p++;}return result;}int main(){vector<int> v1(100);cout<<()<<endl;∑==n l ll k k k A B P A P A B P A P B A P 1)/()()/()()/(与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.(4) 系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
但是进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些18、(10分)请不用任何c runtime函数实现以下函数:Inter trim_str(char *pstr)函数功能如下:1)滤掉字符串头尾的空格、回车、tab2)输出字符串通过输入字符串指针返回3)如果成功则返回0否则返回非0#include<iostream>using namespace std;#define ERR -1;int trim_str(char *pstr){char *p=pstr;char *m;if(p==NULL){return ERR;}while(*p!='\0'){if((*p==' ')|(*p=='\n')|(*p=='\t')){m=p;while(*m!='\0'){*m=*(m+1);m++;}}else{p++;}}return 0;}int main(){char s[]="ab de edeasd ";int i=trim_str(s);if(i==0){cout<<"成功"<<endl;}else{cout<<"失败"<<endl;}cout<<s<<endl;return 0;}19、(10分)有N个大小不等的自然数(1,2,3,…..N)请将它们从小到大排列。