C/C++笔试题目大全

最后更新于:2022-04-01 21:43:40

1、以下程序的运行结果是() ~~~ int main(void) { printf("%s , %5.3s\n","computer","computer"); return 0; } ~~~ A、computer , puter                                      B、computer , com C、computer , computer                                D、computer , compu.ter   2、以下程序的功能是() ~~~ #include int main(void) { FILE *fp; long int n; fp = fopen("wj.txt","rb"); fseek(fp , 0 , SEEK_END); n = ftell(fp); fclose(fp); printf("%ld",n); } ~~~ A、计算文件wj.txt内容的字节数 B、计算文件wj.txt的终止地址 C、计算文件wj.txt的起始地址 D、将文件指针定位到文件末尾 3、若输入B,则以下程序运行后的输出结果是() ~~~ int main(void) { char grade; scanf("%c",&grade); switch(grade) { case 'A': printf(">=85"); case 'B': case 'C': printf(">=60"); case 'D': printf("<60"); default: printf("error."); } } ~~~ A、error. B、>=60 C、>=85 D、>=60<60error. 4、以下程序的输出结果是() ~~~ int power(int x , int y); int main(void) { float a = 2.6 , b = 3.4; int p; p = power((int)a , (int)b); printf("%d\n",p); return 0; } int power(int x , int y) { int i , p = 1; for(i = y ; i > 0 ; i--) p *= x; return p; } ~~~ A、27                       B、9                             C、8                                  D、81 5、以下程序段的输出结果是() ~~~ int p = 1234; printf("%2d\n",p); ~~~ A、12                       B、34                            C、1234                                 D、提示出错、无结果 6、以下程序运行后的输出结果是() ~~~ int main(void) { int a; char c = 10; float f = 100.0; double x; a = f /= c *= (x=6.5); printf("%d %d %3.1f %3.1f\n",a,c,f,x); return 0; } ~~~ A、1     65     1         6.5 B、1     65     1.5      6.5 C、1     65     1.0      6.5 D、2     65     1.5      6.5 7、以下程序的运行结果是()(主要考察运算符的优先级) ~~~ int main(void) { int x , y , z; x = 0 , y = 1 , z = 3; x = ++y <= x || x+y != z; printf("%d,%d\n",x , y); return 0; } ~~~ A、1 ,2                       B、1 , 1                                   C、0,2                              D、0,1 8、以下语句的输出结果是()(主要考察逗号表达式) ~~~ int main(void) { int x = 10 , y = 3 , z; printf("%d\n",z = (x%y , x/y)); return 0; } ~~~ A、4              B、0                   C、3                      D、1 逗号表达式的一般形式: 表达式1,表达式2,表达式3......表达式n 它的值为表达式n的值。 括号表达式要求按顺序逐一计算各个子表达式,并以最后一个子表达式的值作为括号表达式的结果,最后将该结果赋给变量。 printf("%d %d %d",(a,b,c),b,c); 则(a,b,c)是一个逗号表达式,它的值等于c的值。括号内的逗号不是参数间的分隔符而是逗号运算符。括号中的内容是一个整体,作为printf函数的第一个参数。 9、设有语句  char a = '\72'; 则变量a() A、包含2个字符                                          B、说明不合法 C、包含1个字符                                          D、包含3个字符 10、已知数据表A中每个元素距其最终位置不远,为节省时间,应该采用的算法是() A、直接选择排序 B、堆排序 C、快速排序 D、直接插入排序 11、以下程序段的运行结果是() ~~~ int main(void) { char aa[][3] = {'a','b','c','d','e','f'}; char (*p)[3] = aa; p++; printf("%c\n",**p); return 0; } ~~~ A、b                        B、a                    C、c                    D、d 12、在C语言中,下列()是合法的标示符。 A、4x                   B、1P234 C、COUNT            D、short 13、C语言中的标识符只能有字母、数字和下划线三种字符组成,且第一个字符() A、必须为字母 B、必须为字母或下划线 C、必须不是字母或下划线 D、必须为下划线 14、下面程序的输出是() ~~~ int main(void) { enum team { my , your = 9 , his , her = his + 3}; printf("%d %d %d %d\n",my , your , his , her); return 0; } ~~~ A、0     9    10   13                 B、0     8    11   12 C、0     8    10   12                 D、0     8    12   9 15、以下程序 ~~~ int main(int argc, char**argv) { int n = 0 , i; for(i = 1 ; i < argc ; i++) n = n * 10 + *argv[i]-'0'; printf("%d\n",n); return 0; } ~~~ 经编译链接生成可执行文件tt.exe,若运行时输入以下命令行   tt   12   345   678,则程序运行的输出结果是() A、136              B、12345              C、12345678               D、12 解析:主函数的第一个参数argc为整型参数,记下从命令行输入参数的个数;第二个参数argv是一个字符型的指针数组,它的每一个元素分别指向命令行输入的各字符串。在本例中argc的值为4,argv[0]指向字符串“tt”,argv[1]指向字符串“12”,argv[2]指向字符串“345”, argv[3]指向字符串“678”。程序中,通过一个for循环,遍历了后面的三个参数字符串,每次将n自乘10,然后累加argv[i]-‘0’,即第i个参数字符串的首字符减去‘0’。  一个数字字符减去‘0’字符,即可得到这个数字字符的实际数值,因此三次循环的结果是让n的值变为136,故本题应该选择A。 16、若已定义:int a[9],*p = a; 并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是() A、++p            B、a+1            C、p+1            D、a++ 17、若执行下面的程序时,从键盘上输入5,则输出是() ~~~ int main(int argc, char**argv) { int x; scanf("%d",&x); if(x++ > 5) printf("%d\n",x); else printf("%d\n",x--); return 0; } ~~~ A、7                 B、4                   C、6                  D、5 18、已知有如下的变量定义,那么第二行的表达式的值是多少()(主要考察运算符的优先级) ~~~ int main(void) { int x = 3 , y = 4 , z = 5; !(x + y) + z-1 && y + z/2; return 0; } ~~~ A、6             B、2               C、0                  D、1 19、下列运算符函数中,肯定不属于类Value的成员函数是() A、Value operator/(Value); B、Value operator-(Value,Value); C、Value operator+(Value); D、Value operator*(int); 20、以下关于函数模板和模板函数的描述中,错误的是() A、函数模板是定义重载函数的一种工具 B、模板函数在编译时不生成可执行代码 C、函数模板是一组函数的样板 D、模板函数是函数模板的一个实例 21、以下关于文件操作的描述中,不正确的是() A、关闭文件的目的之一是释放内存中的文件对象 B、关闭文件的目的之一是保证将输出的数据写入硬盘文件 C、文件读写过程中,程序将直接与磁盘文件进行数据交换 D、打开文件的目的是使文件对象与磁盘文件建立联系 22、在重载一运算符时,若运算符函数的形参表中没有参数,则不可能的情况是() A、该运算符函数是类的友元函数 B、该运算符函数有一个隐含的参数this C、该运算符函数是类的成员函数 D、该运算符是一个单目运算符 23、下列哪一个是析构函数的特征() A、析构函数定义只能在类体内 B、一个类中只能定义一个析构函数 C、析构函数名与类名不同 D、析构函数可以有一个或多个参数 24、数据流程图(DFD图)是() A、软件概要设计的工具 B、软件详细设计的工具 C、结构化方法的需求分析工具 D、面向对象方法的需求分析工具 25、执行 int a = ( 1 , 3 , 11); int b = a; 后,b的值是多少? A、11 B、1 C、3 D、15 E、{ 1 , 3 , 11} 26、设a=1,b=2,则(a++)+b 和 a+++b 这两个表达式的值分别是() A、4 , 4 B、3 , 4 C、4 , 3 D、3 , 3 27、如果A类型是B类型的子类型,则A类型必然适应于B类型 A、错                B、对 28、条件语句不能作为多路分支语句。 A、对                B、错 29、下列while循环的次数是() ~~~ void main() { while(int i = 0) i--; } ~~~ A、无限 B、0 C、1 D、5 30、关于纯虚函数,下列表述正确的是() A、派生类必须实现基类的纯虚函数 B、纯虚函数的声明总是以”=0“结束 C、纯虚函数是给出实现版本(即无函数体定义)的虚函数 D、含有纯虚函数的类一定是派生类 31、下列静态数据成员的特性中,()是错误的 A、引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符 B、说明静态数据成员时前边要加关键字static来修饰 C、静态数据成员在类体外进行初始化 D、静态数据成员不是所有对象所共有的 32、关键词explicit的作用是什么? A、它使一个默认构造函数的声明变为强制性的 B、它可以使一个变量存在主内存中而不是处理器的缓存中 C、它可以防止单参数的构造函数被用于隐式转换 33、下列输出字符‘A’的方法中,()是错误的 A、char A = 'A';   cout< using namespace std; class MyClass { public: MyClass(int i = 0) { cout< using namespace std; class A { public: A(int i ) { cout<<"A "; } ~A() { } }; class B { public: B(int j ) { cout<<"B "; } ~B() { } }; class C { public: C(int k ) { cout<<"C "; } ~C() { cout<<"~C "; } }; class D : public C { public: D(int i , int j , int k ) : a(i) , b(j) , C(k) { cout<<"D "; } ~D() { cout<<"~D "; } private: B b; A a; }; int main() { C *pc = new D(1 , 2 , 3); delete pc; return 0; } ~~~ A、A  B  C  D ~D B、A  B  C  D ~C C、C  B  A  D ~D **D、C  B  A  D ~C** 42、关于运算符重载,下列说法正确的是() A、重载时,运算符的结合性可以改变 B、重载时,运算符的优先级可以改变 C、重载时,运算符的功能可以改变 D、重载时,运算符的操作数个数可以改变 43、下面哪一个不是由标准模板库提供的合法的哈希表? A、hash_multiset B、hash_table C、hash_set D、hash_multimap E、hash_map 44、int x = 2 , y = 3 , z = 4; 则表达式!x+y>z的值为() A、1 B、FALSE C、TRUE D、0 45、下面的程序段的输出结果是() ~~~ void main() { char *x = "abcd"; x += 2; cout<score的结果是() ~~~ struct node { int num; float score; }stu[2]={101,91.5,102,92.5} , *p = stu; ~~~ A、102 B、91.5 C、92.5 D、101 81、以下程序的输出结果是() ~~~ #define f(X) X*X void main() { int a = 6 , b = 2 , c; c = f(a)/f(b); printf("%d\n",c); } ~~~ A、18 B、9 C、36 D、6 82、如果a = 1 , b = 2 c = 3 , d = 4,则条件表达式abook,line#,His.age D、print,_3d,oodb,aBc 88、若执行fopen()发生错误,函数的返回值是() A、地址值 B、NULL C、EOF D、1 89、若调用一个函数,且此函数中无return语句,则正确的说法是() A、能返回一个用户所希望的函数值 B、返回一个不确定的值 C、返回若干个系统默认值 D、没有返回值 90、长度相同但格式不同的2种浮点数,假设前者阶码长、尾数短,后者阶码短、尾数长,其它的规定均相同,则它们可表示的数的范围和精度为() A、前者可表示的数的范围大且精度高 B、两者可表示的数的范围和精度相同 C、前者可表示的数的范围大但精度低 D、后者可表示的数的范围大且精度高 91、单继承情况下,派生类中对基类成员的访问也会出现二义性 A、错                        B、对 92、关系数据库模型是以下哪种方式组织数据结构 A、二维表 B、网状 C、文本 D、树状 93、()命令可以查看视图的创建语句 A、SHOW VIEW B、SHOW CREATE VIEW C、SELECT VIEW D、DISPLAY VIEW 94、正则表达式中的*代表的是() A、0个或多个匹配 B、1个或多个匹配 C、0 95、预处理过程是编译过程之后、连接过程之前进行的 A、对                           B、错 96、下面程序的输出结果是() ~~~ int main(void) { char x = 0xFF; printf("%d\n",x--); return 0; } ~~~ A、-1              B、0             C、255             D、256 printf("%d \n",x--)函数参数首先传递的是x--这个,但是它是先返回值才减小,因此x传递过去时候仍然是0xff。 0xff当作为无符号数的时候,数字为255,作为带符号数时候,是-1。char类型是带符号的,因此是-1。 97、下面程序的输出结果是() ~~~ int main(void) { printf("%d\n",12&012); return 0; } ~~~ A、12              B、0             C、8                D、-1 012=1010;(C语言中数字前缀0表示八进制) 012是8进制数,它的值为10,二进制是0000 1010 12是十进制,它的二进制是0000 1100 两个数相与(&),得到0000 1000,即8
';