• 金山试题


    来源:http://blog.pfan.cn/jixian/27083.html

    1. 1.      结构POINT定义如下:

    typedef struct tagPOINT { 

            int x;

            int y;

        } POINT

    用变量var给出下面的定义

    例:一个POINT 变量

    答案:POINT var;

    1. a.      一个指向POINT的指针;
    2. b.      一个指向指针的指针,它指向的指针是指向一个POINT
    3. c.      一个有16个POINT的数组;
    4. d.      一个有16个指针的数组,每个指针指向一个POINT
    5. e.      一个指向数组的指针,该数组有16个POINT
    6. 2.      实现函数IsEven,用于判断一个给定的整数是否为偶数
    7. 3.      写一个函数,实现对给定的字符串(字符串里面包括:英文字母,数字,符号)的处理。经过处理后的字符串其内容按字母,数字,符号的顺序存放。函数声明如下:
      void ParseString(char* pstr);

    要求:

    1. a.      不能改函数声明;
    2. b.      不改变字母数字等在字符串中原有的出现顺序;
    3. c.      直接使用pstr所值指缓冲区,不允许另开缓冲区。

    例如:给定的字符串为:A,2.d?3!e4r87we79...

    输出结果为:Aderwe2348779,.?!...

    1. 4.      写一个函数,对给定整数的二进制表示进行描述
      如:给定整数131,其二进制表示为10000011,要求函数输出以下结果:

    1: 2

    0: 5

    1: 1

    表示从最低位开始,包含2个1,5个0,1个1。

    参考上一题,确定本函数的名字,入口出口及返回值,并实现本函数

    1. 5.      定义一个student类,成员变量包含学生姓名、出生年月日。要求重载“>”运算符,实现以出生年月日为依据比较两个学生年龄大小的功能。
    2. 6.      有如下3个API:

    HANDLE FindFirst(char* lpFileName);//用于查找给定目录下是否有指定文件。若无则返回0,若有则返回一个句柄。例如:FindFirst("D:\\data\\*.txt")

    BOOL FindNext(HANDLE hFindFile); //继续查找该目录下是否有其他匹配文件。

    BOOL FindClose(HANDLE hFindFile);//用于结束查找。

    利用上述API实现函数NumOfPicFiles,找出给定目录下有多少个JPG及BMP文件(不考虑子目录)。

    int NumOfPicFiles(char*lpszfolder);

    Lpszfolder表示指定目录。

    返回值表示找到的文件个数。

    //此试题是金山在我学校招实习学生出的。

    个人做的

    2.vc6.0做的

    #include<iostream>
    using namespace std;

    bool IsEven(int i);
    int main()
    {
     int n;
     cout<<"偶数返回1,其他返回0"<<endl;
     cout<<"input a int number:";
     cin>>n;
     cout<<IsEven(n)<<endl;
     
    }

    bool IsEven(int i)
    {
     if(i>0)
     {
      if(i%2==0)
       return true;
      else
       return false;
     }
     else
     {
      cout<<"你输入的为负数"<<endl;
      return false;
     }
    }

    3.//我用vs2005做的

    #include<iostream>
    using namespace std;

    void ParseString(char* pstr);
    bool checkzm(char zm);      //判断是不是字母
    bool checksz(char sz);   //判断是否为数字

    void out(char* pstr);

    int main()
    {
     /*char str[]="25abe!E@R6?9";*/
     cout<<"请输入字符串"<<endl;
     char str[50];
     cin>>str;
     
     /*int n=(sizeof(str))/(sizeof(str[0]));*/
     cout<<"排序前"<<endl;
     out(str);
     ParseString(str);
     cout<<"排序后"<<endl;
     out(str);


      /*for(int i=0;i<n;i++)
       cout<<str[i];
       cout<<endl<<"排序后"<<endl;

      ParseString(str);
      for(int i=0;i<n;i++)
       cout<<str[i];
      cout<<endl;*/
    }

    void ParseString(char* pstr)
    {
       int zmnum=0;     //字母个数,也可以看作是已经排好序的字符个数
       int n=0;         //跟踪扫描的字符个数
       char*pstr1=pstr;
       for(;*pstr1;pstr1++) //扫描字符串,第一个for循环完成字母靠前
       {
        n++;
        if(checkzm(*pstr1))
        {
         zmnum++;
         char current=*pstr1; //获取当前的字母
         for(int i=n-2;i>=zmnum-1;i--)       //找到一个字母,就把它移动到前面去
         {
          *(pstr+i+1)=*(pstr+i);           //向后移动其他字符
         }
         *(pstr+zmnum-1)=current;
        }  
       }
       pstr1=pstr;
       n=zmnum; //不再从第1个开始扫描了,字母已经放好了,从字母后面的字符开始扫描字符串
     
       for(pstr1=pstr1+zmnum;*pstr1;pstr1++)                          //第二个for循环完成数字在字母后面
       {
        n++;
        if(checksz(*pstr1))
        {   
         zmnum++;     //在这里不在指字母了,指排好序的字符个数
         char current=*pstr1;
         for(int i=n-2;i>=zmnum-1;i--)
         {
           *(pstr+i+1)=*(pstr+i);           //向后移动其他字符
         }
         *(pstr+zmnum-1)=current;
        }
       }


    }

    bool checkzm(char zm)       //判断是不是字母
    {
        if((zm>='A' && zm<='z') || (zm>='a' && zm<='z'))
      return true;
     else
      return false;
    }

    bool checksz(char sz)   //判断是否为数字
    {
     if(sz>='0' && sz<='9')
      return true;
     else
      return false;

    }

    void out(char* pstr)
    {
     while(*pstr !='\0')
     {
      cout<<*pstr;
      pstr++;
     }
     cout<<endl;
    }

    4.//vs2005做的
    #include<iostream>
    using namespace std;

    void ParseBinary(int);

    int main()
    {
     int n;
     cout<<"input a int number:";
     cin>>n;
     ParseBinary(n);
    }

    void ParseBinary(int n)
    {
     int num=1;      //计数
     int current; //当前位
     int pre;     //当前的前一位

     for(int i=0;i<=7;i++)
     {
      
      
      if(n & (1 << i))
      {
       if(i==0)
       {
        pre=current=1;
       }
       current=1;
     //  cout<<"1 ";
      }
      else if(!(n & (1<<i)))
      {
       if(i==0)
       { 
        pre=current=0;
       }
       current=0;  
      // cout<<"0 ";
      }


      if(i!=0)
      {
       if(pre==current)
        num++;
       else
       {
        cout<<pre<<" : "<<num<<endl;
        num=1;
        pre=current;
       }

      }

     }
     cout<<pre<<" : "<<num<<endl;
     
    }

    5.

    //头文件 stu.h

    #ifndef STU_H
    #define STU_H
    #include<iostream>
    #include<string>
    using namespace std;

    class student
    {
    private:
     string name;
     int year;
     int month;
     int day;
    public:
     student(string name1,int year1,int month1,int day1)
     {
      name=name1;
      year=year1;
      month=month1;
      day=day1;  
     }
     void operator > (const student&student2)
     {
      if(year>=student2.year)   //比较年
      {
       if(year>student2.year)
       {
        cout<<name<<",你年龄小于 "<<student2.name<<endl;
       }
       else //出生年相同
       {
        if(month>=student2.month)       //比较月
        {
         if(month>student2.month)
         {
          cout<<name<<",你年龄小于 "<<student2.name<<endl;
         }
         else    //出生月相同
         {
          if(day>=student2.day)
          {
           if(day>student2.day)
           {
            cout<<name<<",你年龄小于 "<<student2.name<<endl;
           }
           else                   //同一天出生,年龄相等
           {
            cout<<name<<",你年龄等于 "<<student2.name<<endl;
           }
          }

         }
        }
       }
      }
      else
      {
       cout<<name<<",你年龄大于 "<<student2.name<<endl;
      }

     }


    };

    #endif

    //.cpp文件,student.cpp

    #include "stu.h"
    #include<iostream>
    using namespace std;

    int main()
    {
     student stu1("stu1",1985,6,7);
     student stu2("stu2",1986,6,5);
     stu1>stu2;
     
    }

  • 相关阅读:
    ASP.NET Forms 身份验证概述
    JS中变量相关的细节分析
    document对象execCommand的命令参数介绍
    一点一点学ASP.NET之基础概念——HTTP运行期与页面执行模型
    读《大道至简》第一章有感
    读大道至简第二章有感
    课程作业2
    编写一个程序,用户输入两个数,求其加减乘除,并用消息框显示计算结果。
    201920201 20209324《Linux内核原理与分析》第一周作业
    jQuery Plugins
  • 原文地址:https://www.cnblogs.com/heyonggang/p/2814494.html
Copyright © 2020-2023  润新知