正文

金山试题2007-06-25 14:39:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/jixian/27083.html

分享到:

1.      结构POINT定义如下: typedef struct tagPOINT {          int x;         int y;     } POINT 用变量var给出下面的定义 例:一个POINT 变量 答案:POINT var; a.      一个指向POINT的指针; b.      一个指向指针的指针,它指向的指针是指向一个POINT; c.      一个有16个POINT的数组; d.      一个有16个指针的数组,每个指针指向一个POINT; e.      一个指向数组的指针,该数组有16个POINT 2.      实现函数IsEven,用于判断一个给定的整数是否为偶数 3.      写一个函数,实现对给定的字符串(字符串里面包括:英文字母,数字,符号)的处理。经过处理后的字符串其内容按字母,数字,符号的顺序存放。函数声明如下:void ParseString(char* pstr); 要求: a.      不能改函数声明; b.      不改变字母数字等在字符串中原有的出现顺序; c.      直接使用pstr所值指缓冲区,不允许另开缓冲区。 例如:给定的字符串为:A,2.d?3!e4r87we79... 输出结果为:Aderwe2348779,.?!... 4.      写一个函数,对给定整数的二进制表示进行描述如:给定整数131,其二进制表示为10000011,要求函数输出以下结果: 1: 2 0: 5 1: 1 表示从最低位开始,包含2个1,5个0,1个1。 参考上一题,确定本函数的名字,入口出口及返回值,并实现本函数 5.      定义一个student类,成员变量包含学生姓名、出生年月日。要求重载“>”运算符,实现以出生年月日为依据比较两个学生年龄大小的功能。 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; }  

阅读(3443) | 评论(2)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册