synplify的笔试题

1, 给出指针的数据类型

   a,float (**p)[10]
   b, double *(*p)[10]
   c, 记不清了,大概是 char *(*p)()之类的
   d, int  *((*p)[10])

2,给出进程间通信的方法
11.5回答:最常用的进程间通信的方式有-信号,信号量,消息队列,共享内存。 
例外: 在Win32下提供的进程间通信方式有以下几种: 

(1)剪贴板Clipboard:在16位时代常使用的方式,CWnd类中提供了支持。
(2)COM/DCOM:通过COM系统的代理存根方式进行进程间数据交换,但只能够表现在对接口函数的调用时传送数据,通过DCOM可以在不同主机间传送数据。
(3)Dynamic Data Exchange (DDE):在16位时代常使用的方式。
(4)File Mapping:文件映射,在32位系统中提供的新方法,可用来共享内存。
(5)Mailslots:邮件槽,在32位系统中提供的新方法,可在不同主机间交换数据,分为服务器方和客户方,双方可以通过其进行数据交换,在Win9X下只支持邮件槽客户。
(6)Pipes:管道,分为无名管道:在父子进程间交换数据;有名管道:可在不同主机间交换数据,分为服务器方和客户方,在Win9X下只支持有名管道客户。
(7)RPC:远程过程调用,很少使用,原因有两个:复杂而且与UNIX系统的RCP并不完全兼容。但COM/DCOM的调用是建立在RPC的基础上的。
(8)Windows Sockets:网络套接口,可在不同主机间交换数据,分为服务器方和客户方。(相关介绍见Visual C++/MFC入门教程 第六章 网络通信开发)
(9)WM_COPYDATA:通过发送WM_COPYDATA消息并将数据放在参数中来传递数据给其他进程。


3,给出程序执行结果
 a void func(char **p, int num)
   {
        *p = malloc(num);
    }

    main()
   {
       char *p=NULL;
       func(&p, 100);

       strcpy(p,"blabla");
       printf("%s",p);

       free(p);
    }
11.4回答:打印了 blabla
 b  main()   
   {
       char *p=NULL;
       p = malloc(100);
       strcpy(p,"blabla");
       free(p);

       printf("%s",p);
    }
打印了 blabla  都是在win-tc下调试通过的,在vc6.0会提示void * to char * 的类型转换 问题

 4,a,一个正整数序列,值最大不超过K,没有重复项,给出排序算法
答: 冒泡法和快速排序法随便用吧(不过,数据都是整数,并且数值不大(几千以内),则用计数排序法)
   b,如果有重复项,需要对排序算法做何改动
答:    这个好像没有什么改进的吧
   c,证明算法最坏情况下复杂度为O(N)
   d,给出算法的空间复杂度

 

9 比较两套程序写法哪个好,为什么
  a
  (1)   for(i=1;i<k;i++)
       {
           a = i + b + c * j;//每次都执行这个语句
           printf("%d",a);
        }

  (2)  a = b + c * j;
       for(i=1;i<k;i++)
      {
          printf("%d",a+i); 这个效率高;
       }
  
  b   char a
  (1)   if(a=='A') ....
       
  (2)   if('A'==a) ....这个好,理由是防止犯低级错误 a='A';

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值