某公司初中级C++笔试题目

某公司初中级C++笔试题目,第1张

概述本文章向大家介绍某公司初中级C++笔试题目,主要包括某公司初中级C++笔试题目使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。


初试试题(复试从里边抽查现场做)



姓    名:                                   应聘职位:                              


学    校:                                   专    业:                              


电    话:                                   邮    箱:                             



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++笔试题目所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1264508.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存