金山试题
时间:2022-04-22
本文章向大家介绍金山试题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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 !=' ')
{
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; }
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一文教你搞懂C语言的Q格式
- 基础算法之排序算法
- C++核心准则E4,5:设计并构建不变量
- Selenium实际应用注入并执行Javascript语句
- 什么是Python的 “内存管理机制”
- 2020年手工webpack构建react项目,完美支持ssr,包括css和图片资源
- php中赋值、浅拷贝与深拷贝
- 2020最新:100道有答案的前端面试题(下)
- UI自动化测试之ddt实战
- KVM 之网络配置
- Mysql操作
- CentOS7+nginx+uwsgi+Django部署之路
- 【翻译】200行代码讲透RUST FUTURES (4)
- 使用Flask部署图像分类模型
- Try2Cry:使用蠕虫技术传播的勒索软件