
初试试题(复试从里边抽查现场做)
姓 名: 应聘职位:
学 校: 专 业:
电 话: 邮 箱:
1、如何实现变量的跨文件访问?如何实现函数的跨文件访问?
访问文件外的变量时,使用关键字”extern”。
用于跨文件访问的函数在声明时,加关键字”extern”。
2、假定w、x、y、z、m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(w // m=2; m=3; 则该程序段执行后,m的值是______A___. A) 4 B) 3 C) 2 D) 1 3、以下程序段_______D___. x=-1; do { x=x*x; } while (!x); A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误 知识点:素数 4、在VC++ 6.0中编程:输出100~300中素数及素数的个数。 #include using namespace std; bool isPrime(int num); bool isPrime(int num){ for(int divisor = 2; divisor < num; divisor ++){ if( num % divisor == 0 ) return false; } return true; } int main(){ int start = 100; int end =300; int count = 0; for(int index = start; index <= end; index ++){ if(isPrime(index)){ cout< count ++ ; } } cout << endl; cout<<"prime datas in total:"<< count<< endl; return 0; } 知识点:闰年 5、在VC++ 6.0中编写代码,输出1000年(包括1000年)到1999年之间的所有闰年,要求每三个一行,分行输出。 #include using namespace std; int main(){ int start = 1000; int end = 1999; int count = 0; for(int year = start ; year < end; year ++){ if(year % 400 == 0 || ((year % 4 == 0) && (year % 100 !=0))){ count ++ ; cout << year<< " "; if(count % 3 == 0) cout< } } return 0; } 知识点:结构体 6、使用VC++ 6.0编程:有4名学生,每个学生考4门课,要求:写2个函数:(1)返回值为总平均分的函数;(2)返回值为最低分的函数。在main()函数中输入每个学生4门课的成绩,调用以上2个函数,输出总平均分和最低分。 #include using namespace std; struct Student{ float subjectOne; float subjectTwo; float subjectThree; float subjectFour; }; //(1)返回值为总平均分的函数; float average_total(struct Student *p){ float result = 0.0; int numOfSubjects = 0; // cout<< "the value of p"<< p ->subjectOne < // cout<< "the value of p"<< (p + 3)->subjectOne < for(struct Student * i = p; i < p + 4; i ++){ result = result + i->subjectOne + i->subjectTwo + i->subjectThree + i->subjectFour; numOfSubjects += 4; } result /= numOfSubjects; //也可以写死固定只有一个小数 return result; } //(2)返回值为最低分的函数。 float lowerest(struct Student *p){ float result = p->subjectOne; for(struct Student * i = p; i < p + 4; i ++){ if( result > i->subjectOne) result = i->subjectOne; if( result > i ->subjectTwo) result = i ->subjectTwo; if(result > i->subjectThree) result = i->subjectThree; if(result > i->subjectFour) result = i->subjectFour; } return result; } int main(){ struct Student stu[4] = {{100,90.5,88.5,93}, {70,70.5,78.5,73}, {60.9,40,66.5,67}, {50.5,55,68.9,44}}; cout<<"the average :"<< average_total(stu)< // cout << "the address of subjectOne " << p->subjectOne < cout<<" the lowest subject is: "<< lowerest(stu)< // cout< cout< return 0; } 知识点: 冒泡算法,小公司可能考 7、有如下数组 Array_A[ 203,3,45,6,9,200,80,1009,65,49 ] 使用冒泡算法,将数组从小到大进行排序。 #include using namespace std; voID bubble_sort(int * arr,int arr_length){ for(int i=0;i for(int j = 0; j< arr_length - i; j++) { if(arr[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1]=temp; } } } int main(){ //Array_A int arr1[] = {203,49}; int arr_length = sizeof(arr1)/sizeof(arr1[0]); // cout<< arr_length <<"yes"< bubble_sort(arr1,arr_length); cout< cout<<"the array after bubble sort:"< for(int i = 0 ; i < arr_length; i++){ cout< } cout< return 0; } 知识点: 判断回文,大中公司可能考 9、输入任意正整数,编程判断该数是否为回文数(回文数是指从左到右读与从右到左读一样,如12321)。 #include //#include using namespace std; //求出整数的长度 int myStrlen(int num){ int result = 0; while(num){ result += 1; num /= 10; } return result; } int main(){ int num; cout<<"input a positive number"< cin>>num; bool ispalindrome = true; //没有检测num是负数,零和小数,大整数等情况了; char stringOfNum[10]; //将整数转换为字符串的形式,便于检测是否是回文形式 itoa(num,stringOfNum,10); int lenOfString = myStrlen(num); //cout<< "lenOfString "< int end = (lenOfString + 1) / 2; for(int i = 0; i < end; i ++){ if(stringOfNum[i] != stringOfNum[lenOfString - i - 1]){ ispalindrome = false; break; } } if(ispalindrome) cout<<"是回文"< else cout<<"不是回文"< //cout<<"the length is: "< //cout<<"the num"< return 0; } !这一题哪里去了,汗 8. 9、写一段C语言代码,来验证处理器的存储方式是大端存储还是小端存储。 #include using namespace std; int checkcpu(); int main(){ bool small = true; small = checkcpu(); if(small) cout<<"小端存储"< else cout<<"大端存储"< //cout< return 0; } int checkcpu(){ union w{ int a; char b; } c; c.a = 1; return(c.b == 1); } 知识点: 字符串的逆序,大公司试题,比如baIDu校招 10、编程:完成字符串’IlovEMATLAB’的逆序 *** 作。 // strle() #include #include using namespace std; voID reverseString(char * str){ int lenOfString = strlen(str); char * p1; char * p2; p1 = str; p2 = str + lenOfString - 1; char temp; while(p1 < p2){ temp = *p1; *p1 = *p2; *p2 = temp; p1 ++; p2 --; } } int main(){ char str[] = "IlovEMATLAB"; reverseString(str); cout<<"after the reverse function: "< return 0; } 知识点:字符类别的判断 11、在VC++ 6.0中编程:输入一行字符,分别统计其中包含的数字、字母和其他字符的个数,并将统计结果显示出来。 #include #include #include using namespace std; voID statistic(char * str){ int numbers = 0,letters = 0,others = 0; while(*str!= ''){ if(isdigit(*str)) numbers ++; else if(isAlpha(*str)) letters ++; else others ++; str++; } cout<<"数字有: "< cout<<"字母有: "< cout<<"其他的字符(包括空格)有: "<< others <<" 个"< } int main(){ char str[100]; // gets(str); statistic(str); cout< return 0; } 知识点: 归并排序的变通 12、函数 merge(int a[],int b[],int temp[],int len_a,int len_b)的功能是:将降序的a和升序的b合并成一个新的升序序列temp。编写main函数,调用merge函数进行合并,输出合并后的结果。 #include using namespace std; voID merge(int a[],int len_b); voID merge(int a[],int len_b){ int * p_a = a + len_a - 1; int * p_a_begin = a; int * p_b = b; int * p_b_end = b + len_b - 1; int index = 0; //两个指针分别从a[]的尾部和b[]的头部开始 while(p_a >= p_a_begin && p_b < p_b_end){ if(*p_a > *p_b){ temp[index++] = *p_b; p_b ++; } else{ temp[index++] = *p_a; p_a --; } } while(p_a >= p_a_begin){ temp[index++] = *p_a; p_a -- ; } while(p_b <= p_b_end){ temp[index++] = *p_b; p_b ++ ; } // index++; temp[index] = ''; } int main(){ int a[] = { 9,4,2}; int b[] = {-100,-8,11,99,100,300}; int temp[20]; // '' int len_a = sizeof(a)/sizeof(a[0]); int len_b = 6; merge(a,b,temp,len_a,len_b); cout<<"合并后的结果: "; int * p = temp; while(*p != ''){ cout<<*p<<","; p ++; } cout< return 0; } 知识点: 你猜 13、在VC++ 6.0中设计一段程序,实现以下功能:(1)要求用户输入一个整数;(2)要求用户输入一个运算符(+ - * / );(3)要求用户输入一个整数;(4)输出步骤1输入的整数与步骤3输入的整数,根据步骤2进行运算的结果。 #include using namespace std; int main(){ int integer1,integer2; char operator1; cout<<"请输入一个整数:"; cin>>integer1; cout< cout<<"输入(+ - * / )中的一个运算符:"; cin>>operator1; cout< cout<<"请再输入一个整数:"; cin>>integer2; cout< cout<<"结果是:"; switch(operator1){ case '+': cout<< integer1 + integer2; break; case '-': cout<< integer1 - integer2; break; case '*': cout<< integer1 * integer2; break; case '/': cout< default: cout<<" 输入有误!"; } cout< return 0; } 知识点: 你猜 14、已知数组Array_A [ 13,2,5,78,36,43], Array_B [ 13,8,37,43],设计程序对两个数组进行比较,显示出数组中哪些数不同,分别在什么位置。 #include using namespace std; voID compare(int * a,int * b,int length){ for(int index = 0; index < length; index ++){ if(a[index] != b[index]){ cout<<"位置 "< } } } int main(){ int Array_A[] = {13,43}; int Array_B[] = {13,43}; int length = sizeof(Array_A)/sizeof(Array_A[0]); compare(Array_A,Array_B,length); return 0; } 15、画出单向链表进行插入与删除的流程,并使用VC++6.0 将此过程在DOS窗口中进行演示。 表中: 表尾部: 删除: //网友们,Word上作的图贴上来比较麻烦,我没贴上来了哦 知识点: 虚函数,多态,OO 16、在VC++ 6.0中定义一个学生类Student做基类,再派生一个Graduate类,学生类有学号、姓名、和分数,研究生增加工资,它们有同名的函数display(),利用虚函数,编程分别输出学生和研究生的数据,显示如下所示: 学生 学号 1 姓名 张三 分数 80 研究生 学号 2 姓名 李四 分数 85 工资 5000 ///注意派生类的构造函数的基类参数表不用类型 #include #include using namespace std; class Student{ public: Student(){} ~Student(){} virtual voID display(); voID setAttributes(long int,string,int ); //private: protected: long int studentID; string name; int score; }; voID Student::setAttributes(long int s,string n,int sr){ studentID = s; name = n; score = sr; } voID Student::display(){ cout<<"学号: "<< studentID < cout<<"姓名: "<< name < cout<<"分数: "<< score << endl; } class Graduate: public Student{ public: Graduate(): Student() {} ~Graduate(){} voID display(); voID setAttributes(long int,int,int); private: int salary_added; }; voID Graduate::setAttributes(long int s,int sr,int sa){ studentID = s; name = n; score = sr; salary_added = sa; } voID Graduate::display(){ cout<<"学号: "<< studentID < cout<<"姓名: "<< name < cout<<"分数: "<< score << endl; cout<<"工资: "<< salary_added << endl; } int main(){ //Student s; Student * s; s = new Student(); s->setAttributes(1,"张三",80); cout<<"学生"< s->display(); delete s; cout< Graduate * g; g = new Graduate(); g -> setAttributes(2,"李四",85,5000); cout<<"研究生"< g ->display(); delete g; return 0; } 知识点:数组中元素的插入,数组越界问题,可变数组vector(我没写这个解法) 17、在VC++ 6.0中编写一个函数,将一个数插入到已是升序的数组{2,14,19,21,52,56,64,77}中,且插入后该数组仍是升序数组,具体步骤(1)显示已是升序的数组;(2)显示“输入一个数:”,并从键盘获取一个数;(3)将插入数之后的数组显示出来。 // 数组 // vector // 方法1, 使用数组来存储数据 #include using namespace std; int arr_new[100]; voID ascend_insert(int * arr,int length,int value){ int index = 0; int index_new = 0; bool first = true; while(index < length){ // 小于所插入值的部分 if(arr[index] < value){ arr_new[index_new ++ ] = arr[index ++]; } else if(arr[index] > value && first){ arr_new[index_new ++] = value; first = false; } else{ arr_new[index_new ++ ] = arr[index ++]; } } //! '' arr_new[index_new] = ''; } int main(){ int arr[] = {2,77}; int length = sizeof(arr)/sizeof(arr[0]); // (1)显示已是升序的数组 cout<<"本来的数组: "; for(int index = 0; index < length; index++){ cout< } cout< // (2)显示“输入一个数:”, int value; cout<<"输入一个数:"; cin>>value; cout< int length_new = length + 1; ascend_insert(arr,length,value); //(3)将插入数之后的数组显示出来。 int i = 0; while(i < length_new){ cout< i ++; } cout< return 0; } 后面三道题目,没有学过,我不会,就先没动 18、在IAR中写一段代码完成处理器STM32F103ZET6的时钟初始化,处理器使用内部8M时钟晶振,将处理器的主频设置为48M。 19、已知AD采集的精度为12位,AD的基准电压为3V,如果输入的电压为1.67V,那么AD采集到的数值是多少?写出计算过程,此AD可达到的最小分辨率是多少? 20、在IAR中写一段程序实现以下功能: 在STM32F103ZET6的处理器上,设置AD的采样频率为1KHz,采样精度为12位,对电压进行数据采集。 说明: 1、本试卷不限定试题完成的时间; 2、本公司可接受暂未结业或未拿到毕业证的实习生。有意向者,只需将完成的初试题连同 个人简历一起反馈给我们,各部门负责人会进行专业地评估; 3、若面试者首次面试成绩不理想,自我学习后可再次参加面试。 工资:实习 第一个月4200多,二个月5200多,第三个月6200多。转正未知 以上是内存溢出为你收集整理的某公司初中级C++笔试题目全部内容,希望文章能够帮你解决某公司初中级C++笔试题目所遇到的程序开发问题。 如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。 欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)