一些关于C++的练习题
之前在学校的一些练习题~ 大家可以做一下~
选择
一、选择题 1、求“abc\12\n”字符串的长度( C ) (A) 5 (B) 6 ? 7 (D) 8 2、C++语言规定:在一个源程序中,main函数的位置( C )。 A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后 3、在每个C++程序中都必须包含有这样一个函数,该函数的函数名为( A )。 A.main B.MAIN C.name D.function 4、当需要对标准输入/输出设备进行输入/输出操作时,应在文件开始使用#include预处理命令,使之包含( A )头文件。 A.iostream.h B.stdlib.h C.fstream.h D.strstream.h 5、若a=-14,b=3,则条件表达式a<b?a:b+1的值为( A )。 A.-14B.-13C.3D.4 6、字符串常量 ”\tMyNane\103” 的长度是:( B ) (A) 6 (B) 8 ? 12 (D) 14 3、设x=7,执行语句y=++x,则y等于( D ) (A) 6 (B) 7 ? 9 (D) 8 7、下列字符列中,合法的长整型常量是:( D ) (A) 4.18e3 (B) 0.46793 ? 4L (D) 956738 8、在C++中,char类型数据在内存的存储形式是:( D ) (A) 原码 (B) 反码 ? 补码 (D) ASCII码 9、若a是int类型变量,则表达式a=25/3%3的值是:( B )。 A) 3 B) 2 C) 1 D) 0 10、设有变量定义 int i, j; 与表达式 i0 && j0 等价的表达式是:( B ) (A) i||j (B) !i&&!j ? !i==!j (D) i==j
11、设变量int a = 5; 下列哪个表达式计算后,使得变量b的值等于2 ?( A ) (A) b=a/2 (B) b=6-(a–) ? b=a%2 (D) b=a>3?3:2 12、if…else中为避免嵌套出现二义性,C++规定else子句总与( B ) (A)其之前最近的if语句 (B)其之前最近且尚未配对的if语句 (C)缩排位置相同的if语句 (D)其之后最近的if语句 13、逻辑运算符两侧运算对象的数据( D ) (A)只能是逻辑型数据 (B)只能是整型数据 (C)只能是整型或字符型数据 (D)可以是任何类型的数据 14、设变量x,y,a,b,c,d的值为1,计算表达式(x=a!=b)&&(y=c!=d)后,变量x,y的值分别是:( B ) (A) 0,0 (B) 0,1 ? 1,0 (D) 1,1 15、若a是int类型变量,则计算表达式a=1000%999的值是( B )。 A) 0 B) 1 C) 2 D) 3 16、已知 int x=1, y=0; 执行下面程序段后,y的值为( C )。 if(x) { if (x>0) y=1; } else y = -1 ; (A)-1 (B)0 ? 1 (D)不确定 17、 已知 int x=1, y=0, w ; 执行下面程序段后,w的值为( A )。 if(x) if(y) w=x&&y; else w=y; (A)0 (B)-1 ?1 (D)不确定 18、语句while(w) … 中的表达式w的等价表示是:( C ) (A) w0 (B) w1 ? w!=0 (D) w!=1 19、语句while(a>b) a–; 等价于( D )。 (A)if(a>b)a–; (B)do{a–}while(a>b); ?for(a>b)a–; (D) for(;a>b; a–); 20、已知int i=0,x=0; 下面while语句执行时循环次数为( D )。 while( x || i ) { x ++ ; i ++ ; } (A) 3 (B) 2 ? 1 (D) 0 21、执行语句 x=1; while(++x<7)cout<<’*’; 后输出结果是:( A ) (A) ***** (B) ****** ? ******* (D) ******** 22、C++中循环语句while和do …while的主要区别是( A ) (A)do…while的循环体至少无条件执行一次 (B)while的循环控制条件和do…while的循环控制条件的控制条件的控制方式是相反的 (C)do …while允许从外部转到循环体内,while不允许 (D)while的循环体不能复合语句 23、若有以下程序段: for(m=1;m<=100;m++) { cin>>y; if(y<0) continue; cout<<m; } 则下面正确的说法是( D ) (A)当y<0时整个循环结束 (B)当y>=0时什么也不输出 (C)cout语句永远也不执行 (D)最多输出100个非负整数 24、假定a为一个字符型(char)数组,则元素a[8]的地址比该数组的首地址大( B ) 个字节。 A.4 B.8 C.16 D.32 25、语句“while(!x)…”等价于( A ) (A)while(x0)… (B) while(x!=1)… ? while(x!=0)… (D) while(x1)… 26、一维数组a正确定义是( D )。 (A)char a(10) (B) int a[] ?int k=5,a[k] (D)char a[]={‘a’,’b’,’c’} 27、char x[5]={‘a’,’b’,’\0’,’c’,’\0’} ; cout<<x;输出的结果是( B ) (A)’a’’b’ (B)ab ? ab c (D)abc 28、在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是( C)。 A.1 B.0 C.6D.2 29、设有下面和程序段 char a[3],b[]=“China” a=b; cout<<a; 则( A ) (A)编译出错 (B)运行后将输出Ch ? 运行后将输出Chi (D)运行后将输出Chian 30、判断字符串s1是否大于字符s2的是( A ) (A)if(strcmp(s1,s2)>0) (B)if(strcmp(s1,s2)) (C)if(strcmp(s2,s1)>0) (D)if(s1>s2) 31、下面关于C++字符数组的叙述中,错误的是( C )。 (A)字符数组可以放字符串 (B)字符数组的字符可以整体输入、输出 (C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 (D)可以用关系运算符对字符数组比较大小 32、以下正确的描述是( B )。 A.函数的定义可以嵌套,但函数的调用不可以嵌套。 B.函数的定义不可以嵌套,但函数的调用可以嵌套。 C.函数的定义和函数的调用均不可以嵌套。 D.函数的定义和函数的调用均可以嵌套。 33、若有数组名作为函数调用的实参,则传递给虚参的是( A ) (A)数组的首地址 (B)数组第1个元素的值 (C)数组中全部元素的值 (D)数组元素的个数 34、下列字符列中可以作为“字符串常量”的是( B )。 A. ABC B. ″ABC″ C. ’abc’ D. ’a’ 35、下面各语句中能正确进行赋字符串操作的语句是( B )。 A. char s[5] = {“ABCDE”}; B. char s[5] = {‘A’,’B’,’C’,’D’,’E’}; C. char *s; s = “ABCDE”; D. char *s; scanf(“%s”, s); 36、以下正确的函数原型声明语句是( C ) (A)int fun(int a,b); (B)float fun(int a;int b); (C)double fun( ); (D)int fun(char a[][],b); 38、变量的指针,其含义是指该变量的( B )。 A) 值 B) 地址 C) 名 D) 一个标志
39、变量的引用,其含义是指该变量的( C )。 A.值 B.类型 C.别名 D.地址 40、有如下代码段: int p,a[10]={1,3,4,5,7,8,10,12,15,16}; p=&a[5]; 则(p-1)的值为( C )。 A)1 B) 4C) 7 D) 10 41、设有数组定义:char array[]=”China”;则数组array所占的空间为( C )。 A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节 42、已有定义“int a=5,&ra=a;”则下叙述中,错误的说法是( C )。 (A)ra是变量a的引用 (B)ra的值为5 (C)ra是a的地址值 (D)执行“ra=10;”后变量a的值也变为10 43、若有定义“int c[5],*p=c;”,则以下对数组c元素地址的正确引用是( D ) (A)p+5 (B)c++ ?&c+1 (D)&c[0] 44、若有以下定义 int a[10] = {1,2,3,4,5,6,7,8,9,10}, *p = a; 则不能表示a数组元素的表达式是( B )。 A. *p B. a[10] C. *a D. a[p-a] 45、设有定义“int a = 3, b, p = &a;”则下列语句中使b不为3的语句是( D )。 A. b = &a; B. b = p; C. b = a; D. b = a; 46、设 int x = 1, y = 3 , 能正确表示代数式3x|x-y|的C++表达式是( A )。 (A)abs(x-y)3x (B)3x(abs(x-y)) ?3x||(x-y) (D)3x(x-y)|| 3x(y-x) 47、下面关于new和delete运算的叙述中,错误的说法是( C )。 (A)由new分配的内存空间是连续的 (B)如果当前内存无足够的空间可分配,则new运算符返回NULL (C)由new运算符分配的内存空间,当函数执行结束时系统会自动收回 (D)对于程序中的静态数组占用的存储空间不能使用delete来释放 48、设有说明语句 struct abc { int m; float n; } stype; 则下面错误的叙述是( B ) (A)struct 是定义结构体类型的关键字 (B)stype是结构体类型名 (C)m和n都是结构体成员 (D)stype是结构体变量名 50、一个结构体变量所占用的内存字节数是( D ) (A)结构体中第一个成员所需的内存字节数 (B)结构体中最后一个成员所需的内存字节数 (C)结构体中占用内存最大的成员所需的字节数 (D)结构体中各成员所需的内存字节数和 51、设a和b是两个结构体变量,下面正确的表达式是( A ) (A)a=b (B)a=b+1 ?a>b (D)a==b 52、关于构造函数的叙述中,错误的说法是( B ) (A)构造函数的名称必须为类名 (D)构造函数最多只能有一个 (C)创建对象时自动执行构造函数 (D)构造函数无任何函数类型 53、C++中类有两种用法,一种是类的实例化,即生成类对象,另一种是通过( B )派生出新的类 (A)复用 (B)继承 (C)重载 (D)封装 54、派生类对象的构造顺序是先调用:( B )。 A.派生类的构造函数B.基类的构造函数 C.内嵌对象的构造函数 D.友元类的构造函数 55、派生类对象的析构造顺序是先调用:( A )。 A.派生类的析构造函数B.基类的析构造函数 C.内嵌对象的析构造函数 D.友元类的析构造函数 56、假定AB为一个类,则执行"AB a(4),b[4],*p[5]”语句时,自动调用该类构造函数的次数为( B )。 A.4 B.5 C.8 D.13 57、派生类的成员函数不能访问基类的( C )。 A) 所有成员 B) 公有成员 C) 私有成员 D) 保护成员 58、类的构造函数的作用是( A )。 A) 对象的初始化 B) 删除对象时的清理任务 C) 与一般成员函数一样 D) 类的初始化 59、类的析构造函数的作用是( B )。 A) 对象的初始化 B) 删除对象时的清理任务 C) 与一般成员函数一样 D) 类的初始化 60、类的构造函数的作用是( A )。 A) 对象的初始化 B) 删除对象时的清理任务 C) 与一般成员函数一样 D) 类的初始化 61、类的析构造函数的作用是( B )。 A) 对象的初始化 B) 删除对象时的清理任务 C) 与一般成员函数一样 D) 类的初始化 62、作用域运算符::的功能是(D )。 A 标识作用域的级别 B 指出作用域的范围 C 给定作用域的大小 D 标识某个成员是属于哪个类 63、派生类的对象对它的基类成员中( A )是可以访问的。 A. 公有继承的公有成员 B. 公有继承的私有成员 C. 公有继承的保护成员 D. 私有继承的公有成员 64、设置虚基类的目的是( B )。 A. 简化程序B. 消除二义性 C. 提高运行效率 D. 减少目标代码 65、下面程序的运行结果为 ( C ) #include<iostream.h> using namespace std; class A { public: A( ){cout<<"1";} ~A( ){cout<<"2";} }; class B:public A { public: B( ) {cout<"3";} ~B( ){cout<<"4";} }; int main( ) { B b;return 0; } A.1234 B.1324 C.1342 D.3142
66、C++中,主函数的个数是( B ) 个。 A. 2个 B.1个 C. 任意个 D. 10个
67、下列关于C++注释的叙述中错误的是( D )。 A. 以“/”开头并以“/”结尾的字符串为C++的注释符 B. 注释可以出现在任何位置,用以提示和注释程序的意义 C. 程序编译时,不对注释作任何处理 D. 程序编译时,需要对注释进行处理
68、已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为 ( A )。 A. D B. 68 C. 不确定的值 D. C 69、设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为( D ) 。 A. float B. char C. int D double 70、以下程序段,当输入“3”并回车后,屏幕上显示的内容是( C )。 int ch ; ch = getchar () ; putchar (ch) ; A. 2 B. 1 C. 3 D. 0
70、以下程序的输出结果是( C ) 。 char c1, c2; c1=65; c2 = 65 + 32 + 1 ; cout<<c1<<c2 ; A. a, B B. A, B C. A, b D. a, b
71、判断char型变量ch是否为大写字母的正确表达式是( C )。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 72. 以下程序的运行结果是( B ) 。 main() { int a,b,d=241; a=d/100%9; b=(-1)&&(-1); cout<<a<<”,”<<b<<endl; } A) 6,1 B) 2,1 C) 6,0 D) 2,0 73. 已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是( B )。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 74. 若运行时给变量x输入12,则以下程序的运行结果是( D )。 main() { int x,y; cin>>x; y=x>12 ? x+10 : x-12; cout<<y<<endl; } A) 4 B) 3 C) 2 D) 0 75、以下由while构成循环的次数是 ( D )。 int i = 1 ; while ( i == 1 ) i++; A. 执行无限次 B. 语法错 C. 一次也不执行 D. 执行1次
76、若有说明语句:int a[ 2 ][ 3 ] ={ 0 };,则下面正确的叙述是 ( C ) 。 A. 此语句说明不正确 B. 只有a[0 ][ 0]可以得到初值0 C.数组中的每个元素可以得到初值0 D.数组中的每个元素可以得到初值,但不一定为0
77、若有以下语句,则下面 ( B ) 是正确的描述。 char x [ ] = “12345”; char y [ ] = { ‘1’, ‘2’, ‘3’, ‘4’, ‘5’ }; A.x数组和y数组的长度相同 B.x数组的长度大于y数组的长度 C. x数组等价于y数组 D.x数组的长度小于y数组的长度
78、在数组中,数组名表示 ( A ) 。 A. 数组第一个元素的首地址 B.数组第一个元素的首地址 C.数组所有元素的首地址 D.数组最后一个元素的首地址
79、在C语言中,二维数组元素在内存中的存放顺序是 ( A ) 。 A. 按行存放 B. 按列存放 C. 由用户决定 D. 由编译器确定
80、被调用函数调用结束后,返回到 ( A ) 。 A. 主调用函数中该被调用函数调用语句处 B. 主函数中该被调用函数调用语句处 C. 主调用函数中该被调用函数调用语句的前一条语句 D. 主调用函数中该被调用函数调用语句的后一条语句
81、有关数组名作为函数参数说法错误的是 (C ) 。 A. 用数组名作为函数参数时,要求形参和实参类型相同 B. 用数组名作为函数参数时,实参传给形参的是数组的首地址 C. 用数组名作为函数参数时,实参将数组各元素的值传给形参 D. 用数组名作为函数参数时,实参和形参共享同一数组
82、在函数内部定义的变量称为 B 。 A. 全局变量 B. 局部变量 C. 外部变量 D. 静态变量
83、静态变量的说明符为 B 。 A. auto B. static C. extern D. register 84、变量的指针,其含义是指该变量的_B______.
A. 值 B. 地址 C. 名 D. 一个标志 85.若有以下定义,则不能对a数组元素的正确引用是___B____.
int a[5],p=a; A.&a[5] B. a+2 C. *(p+5) D. *(a+2) 86.若有以下定义,则p+5表示___A____.
int a[10],*p=a; A. 元素a[5]的地址 B. 元素a[5]的值 C. 元素a[6]的地址 D. 元素a[6]的值 87、若有定义:int a;,则定义一个指针p,使其可以指向变量a的赋值语句是( C )。 A. int p = a; B.int *p = a; C. int *p = &a; D.int p = *a; 88、以下正确的叙述是( A )。 A. 数组名实际上是此数组的首地址,所以数组名相当于一个指针变量 B. 若定义数组a[2][3],则a+1和 *(a+1)完全相等 C. 若定义数组a[2][3],则++a和 a[1]完全等价 D. 某函数的形参为一个数组,则调用此函数时只能将数组名作为对应的实参 89、若有以下定义:int n, *p; ,则正确的赋值表达式是( A )。 A. p = &n; B.p = n; C. *p = &n; D.*p = *n; 90、以下程序执行后,x 值为 ( B )。 main () { int *p, x; x = 20; p = &x; x = *p + 5; cout<<x; } A. 20 B.25 C. 15 D.5 91、下列程序的运行结果是 ( A )。 void fun ( int *a, int *b ) { int *k; k = a; a = b; b = k; } main () { int a = 3, b = 6, *x = &a, *y = &b; fun ( x, y ); cout<<a<<b<<endl; } A. 3 6 B.6 3 C. 编译出错 D.0 0 92、以下程序段的执行结果是 ( B )。 char a[ ] = “Program”; char * ptr; ptr = a; for ( ptr = a; ptr < a + 7; ptr += 2 ) putchar ( *ptr ); A. Program B.Porm C. 有语法错误 D.Por 93、以下对结构体变量stu1中成员age的非法引用是__B______. struct student {int age; int num; }stu1,*p; p=&stu1; A. stu1.age B. student.age C. p->age D. (*p).age 94、设有以下说明语句: srruct ex { int x ; int y ; int z ; }example ; 由以下叙述中不正确的是( B ) 。 A. struct是结构体类型的关键字 B. example是结构体类型名 C. x, y, z都是结构体成员名 D. struct ex 是结构体类型
95、若有以下结构体定义,则( B ) 是正确的引用或定义。 struct example { int x ; int y ; } v2 ; A. example.x=10 ; B.example v2; v2.x =10; C. struct v2; v2.x = 10; D.struct example v2 = { 10 }; 96、以下程序的运行结果是 ( B )。 main () { struct sample { int x ; int y ; }a[ 2 ] = { 1, 2, 3, 4 }; cout<< a[0].x +a[0].y * a[1].y <<endl; } A. 7 B.9 C. 13 D.16 97、编写C++程序一般需经过的几个步骤依次是( B ) A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 98、适宜采用inline定义函数情况是( C ) A. 函数体含有循环语句 B. 函数体含有递归语句 C. 函数代码少、频繁调用 D. 函数代码多、不常调用 99、下面对于友元函数描述正确的是( C )。 A.友元函数的实现必须在类的内部定义 B.友元函数是类的成员 C.友元函数破坏了类的封装性和隐藏性 D.友元函数不能访问类的私有成员 100、下面选项中不属于面向对象程序设计特征的是( C ) 。 A.继承性 B多态性 C相似性 D封装性
填空
二、填空题 1、若有定义int m=5,y=2;则计算表达式y+=y-=m*=y后的y值是【-16】。 2、 若s是int型变量,且s=6,则表达式s%2+(s+1)%2的值为【1】。 3、若有定义:char c=‘\010’;则变量c中包含的字符个数为【1】。 4、已知字母a的ASCII码为十进制数97,且设ch为字符型变量, 则表达式ch=‘a’+‘8’-‘3’的值为【f】。 4、有定义int a;则“a是偶数”的表达式是【a%2==0】 。
5、下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束 循环。请填空。 int n=0,c; c=getchar(); while( 【c!=’\n】’) { if(【c>=’0’&&c<=’9’ 】) n++; c=getchar(); } 6、下面程序的功能是用"辗转相除法"求两个正整数的最大公约数。请填空。 #include main() {int r,m,n; cin>>m>>n; if(m<n) 【r=m;m=n;n=r;】; r=m%n; while? {m=n;n=r;【r= m%n】;} cin<<n<<endl; } 7、若有定义:double x[3][5];则x数组中行下标的下限为___0_,列下标的上限为____4_____. 8、下面程序以每行4个数据的形式输出a数组,请填空。 #define N 20 main() {int a[N],i; for(i=0;i<N;i++) cin>> a[i] ; for(i=0i<N;i++) {if (【i%4==0】__) 【cout<<endl;】 cout<<a[i]; } cout<<endl; }
9、 下面程序可求出矩阵a的主对角线上的元素之和,请填空。 main() {int a[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) if(【ij||i+j2】) 【sum=sum+a[i][j]】; cout<<sum<<endl; } 10、若有定义:int a[]={2,4,6,8,10,12},p=a;则(p+1)的值是_4___. (a+5)的值是___12______. 11、若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是__8___. 12、下面程序的运行结果是___254______. #include main() {int a,s,n,count; a=2;s=0;n=1;count=1; while(count<=7){n=na;s=s+n;++count;} cout<<s<<endl; } 12、int n=0; while(n= =1)n++; while循环执行次数是 【0次】 。 13、面向对象程序设计有四个主要特点,即抽象、封装、【继承__】和【多态性】。 14、非成员函数应声明为类的【友元__】函数才能访问这个类的private成员。 14、派生类中的成员不能直接访问基类中的【私有__】成员。 15、在用class定义一个类时,数据成员和成员函数的默认访问权限是【private】。 16、在字长为32位的机器中,sizeof(char)=【1】字节,sizeof(unsigned int)=【 4 】字节. 17、C++语法规定,任何变量在使用前必须先【定义】;变量有两个值,一个是变量本身的值,另一个是变量的【地址值】。 18、C++中任何一个数组的名字是一个【常量】指针,该指针的值是该数组【首元素】的地址。 19、函数调用时的参数传递主要分为单向传递和【双向】传递,前者的特点是【形参的改变不影响实参】。 20、函数重载时要求同名函数的参数【个数】或【类型】不同,否则无法确定是哪个函数。 21、静态数据成员是类的所有对象中【共享】的成员,静态数据成员初始化与一般数据成员初始化【不同】。 22、在类中必须声明成员函数的【 原型 】,成员函数的【 实现 】部分可以写在类外。 23、如果需要在被调函数运行期间,改变主调函数中实参变量的值,则函数的形参应该是【 引用 】类型或【 指针 】类型。 24、【 抽象 】类只能作为基类使用,而不能声明它的对象。 25、通过一个【 常 】对象只能调用它的常成员函数,不能调用其他成员函数。 26、拷贝构造函数的形参必须是【 本类对象的引用 】。 27、已知pow(a,b)的值为a的b次方,则数学表达式对应的C++表达式为【2*pow(x,5)】。 28、每个字符指针变量占用内存的【4】个字节的存储空间。 29、假定一维数组的定义为"int a[8]”,则该数组所含元素的个数为【8】。 30、若whi1e循环语句的头部为”while(i++<=10)”,若i的初值为0,同时在循环体中不会修改i的值,则其循环体将被重复执行【11】次后正常结束。 31、在C++中,函数的参数有两种传递方式,它们是地址传递和【值传递】。 32、 C++中比C语言更高级的两种代码复用的方式:【继承】,【模板】 。 33、在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为【抽象类】,定义该类至少具有一个【纯虚函数】。 34、C语言中没有字符串类型,字符串是通过字符数组来表示的,每一个字符串都有一个结尾字符【\0】,C++中字符串类型是【string】。 34、执行下列代码: string str=“Hello World!”; cout<<str; 程序的输出结果是【Hello World!】 。 35、 完成以下程序,实现求任意一个3位正整数各位数字之和。 #include using namespace std; void main() { int s,m; cin>>m; s=________+m/10%10+m/100; cout<<s; }
答案:m%10
36、完成以下程序,实现求任一个非负整数的算术平方根。 #include #include using namespace std;
void main() { int x; double y; cout<<“请输入一个非负整数:”; cin>>x; _____________; cout<<“平方根:”<<y<<endl; }
答案:y=sqrt(x)
37.完成以下程序,实现判断某年是否是闰年的功能。 #include using namespace std; void main() { int x; bool leap; cin>>x; leap=false; if(x%40&& x%100!=0||x%4000) leap=true; if ( _______ ) cout<<x<<“年是闰年”<<endl; else cout<<x<<“年是平年”<<endl; } 关键字:选择结构 答案:leap leap==true leap!=false
- 完成以下程序,实现判断某年是否是闰年的功能。
#include using namespace std; void main() { int x; bool leap; cin>>x; leap=false; if(x%4==0&& x%100!=0|| __________ ) leap=true; if (leap) cout<<x<<“年是闰年”<<endl; else cout<<x<<“年是平年”<<endl; }
关键字:选择结构 答案:x%400==0
39、完成以下程序,实现判断数x是否为偶数的功能。 #include using namespace std; main() { int x; cout<<“请输入一个数:”; cin>>x; if (_______________) cout<<“是偶数!”; else cout<<“不是偶数。”<<endl; } 关键字:选择结构 答案:x%2==0
40、 完成以下程序,实现下列分数序列的前15项之和。 2/1,3/2,5/3,8/5,13/8,21/13,. . . #include using namespace std; void main() { int I,m,n,k; float s=0; m=1;n=2; for(I=1;I<=15;I++) { s=s+1.0*n/m; k=m; m=n;
} cout<<”s=”<<s<<endl; }
关键字:循环结构 答案:n=k+n; 41、完成以下程序,实现下列分数序列的前15项之和。 2/1,3/2,5/3,8/5,13/8,21/13,. . . #include using namespace std; void main() { int I,m,n,k; float s=0; m=1;n=2; for(I=1;I<=15;I++) {
k=m; m=n; n=k+n; } cout<<”s=”<<s<<endl; } 关键字:循环结构 答案:s=s+1.0*n/m;
42、 完成下面程序,使其输出l0,并在退出运行时正确释放分配给指针的存储空间。 #include using namespace std; void main() { int *a,*p; a=new int; *a=10; p=a; cout<<*p<<endl; __________; } 关键字:数组与指针 答案: delete(a) delete§
43、完成下面程序,使其输出30,并在退出运行时正确释放分配给指针的存储空间。 #include using namespace std; void main() { int *a,*p; a=________ int; *a=30; p=a; cout<<*p<<endl; delete§; } 关键字:数组与指针 答案:new 44、完成以下程序,实现两个变量的交换。 #include using namespace std; void main() { void swap(int *x,int *y); int i,j; cout<<“输入两个整数:”; cin>>i>>j; swap(&i,&j); cout<<“i=”<<i<<" j="<<j<<endl; }
void swap(_________) { int p; p=*x; *x=*y; *y=p; } 关键字:数组与指针 答案:int x,inty 45、完成以下程序,实现两个变量的交换。 #include using namespace std; void main() { void swap(int *x,int *y); int i,j; cout<<“输入两个整数:”; cin>>i>>j; swap( ); cout<<“i=”<<i<<" j="<<j<<endl; }
void swap(int x,inty) { int p; __________ *x=*y; *y=p; }
关键字:数组与指针 *答案: &i,&j p=x; 46. 输入10个数,使用选择排序,按升序排序。 #include using namespace std; int main() { int a[10]; int i,j,t,k; cout<<“Input 10 number:”<<endl; for(i=0;i<10;i++) ; for(j=0;j<9;j++) //共进行九轮比较 { k=j; for(i=j+1;i<10;i++) //每轮中找出最小值下标 if(a[i]<a[k]) ;
t=a[j];
; //每轮中的最小值与a[j]交换
a[k]=t;
}
cout<<"the sorted numbers:"<<endl;
for(i=0; ;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
答案:cin>>a[i] k=i; a[j]=a[k] i<10
47、编写程序,从键盘输入一个整数,判断是否为水仙花数,在下划线处填上正确的语句。 #include using namespace std; int main() { int a,b,c,num cout<<“输入一个三位数:”<<endl; cin>>num; a=num/100; //求百位数 b= ; //求十位数 c= ; //求个位数 if( ) cout<<num<<“是水仙花数”<<endl; else cout<<num<<”不是水仙花数”<<endl; return 0; } 答案:num/10%10 num%10 aaa+bbb+ccc= =num
读程序写结果
三、读程序写结果
1、下面程序段的运行结果是__8_____. i=1;s=3; do{s+=i++; if(s%7==0)continue; else ++i; }while(s<15); cout<<i; 2、 #include using namespace std; void main() { int x,y,z; x=2/47; y=2/47.0; z=int(2/4.0*7); cout<<“x=”<<x<<" y=“<<y<<” z="<<z<<endl; } 请写出输出结果。
答案:x=0 y=0 z=3 3、 #include using namespace std; void main() { int x,y,z; x=3; y=++x; z=x; cout<<“x=”<<x<<" y=“<<y<<” z="<<z<<endl; } 请写出输出结果。
答案:x=4 y=4 z=4 4、 #include using namespace std; void main() { int x,y,z; x=3; y=x++; z=x; cout<<“x=”<<x<<" y=“<<y<<” z="<<z<<endl; } 请写出输出结果。
答案:x=4 y=3 z=4 5、 #include using namespace std; void main() { int x,y,z; x=3; y=x++; z=x; cout<<“x=”<<x<<" y=“<<y<<” z="<<z<<endl; } 请写出输出结果。
答案:x=4 y=3 z=4 6. #include using namespace std; void main() { int x,y,z; x=3;y=5; x=x+y; y=x-y; x=x-y; cout<<“x=”<<x<<" y="<<y<<endl; } 请写出输出结果。
答案:x=5 y=3
#include using namespace std; void main() { float a,b,c,t; a=7;b=3;c=15; if (a>b) { t=a;a=b;b=t; } if (a>c) { t=a;a=c;c=t; } if (b>c) { t=b;b=c;c=t; } cout<<a<<“,”<<b<<“,”<<c<<endl; } 请写出输出结果。 答案:3,7,15
#include using namespace std; void main() { float x,y; x=-5; if (x<0) y= -1; else; if (x<=10) y=x; else y=x*x+1; cout<<“x=”<<x<<" y="<<y<<endl; } 请写出输出结果。 关键字:选择结构 答案:x=-5 y=-5
#include using namespace std; void main() { char c; cin>>c; if(c>=’a’ && c<=’u’) c=c+5; else if(c>=’v’&&c<=’z’) c=c-21; cout<<c<<endl; } 当输入b时,请问输出的内容是( )。 关键字:选择结构 答案:g
#include using namespace std; void main() { int c; cin>>c; if(c>=8 || c<=3) c=c+5; else c=c-21; cout<<c<<endl; } 当输入2时,请问输出的内容是( )。 关键字:选择结构 答案:7
#include using namespace std; void main() { int i=0; while(++i) { if(i==10) break; if(i%3!=1) continue; cout<<i; } } 请写出输出结果。 关键字:循环结构 答案:147
#include using namespace std; void main() { int a,b; for(a=1,b=2; b<50;) { cout<<a<<’ ‘<<b<<’ '; a=a+b; b=a+b; } } 请写出输出结果。 关键字:循环结构 答案:1 2 3 5 8 13 21 34
#include using namespace std; void main() { for(int i=1,s=0;i<20;i++) { if(i%20 || i%30) continue; cout<<i<<’ '; s+=i; } cout<<s<<endl; } 请写出输出结果。 关键字:循环结构 答案:1 5 7 11 13 17 19 73
#include using namespace std; void main() { int i=1; do{ i++; cout<<++i<<” ”; if(i= =7) break; }while(i= =3); }
请写出输出结果。 关键字:循环结构 答案:3 5
#include using namespace std; void main() { int i,t,sum=0; for(t=i=1;i<10;) { sum+=t; ++i; if(i%3==0) t=-i; else t=i; } cout<<“sum=”<<sum; } 请写出输出结果。 关键字:循环结构 答案:sum=9
#include using namespace std; void main() { int i,n,d[10]={1,2,3,4,5,6,7,8,9,10}; i=n=1; while(i<10) { if(n==1) i+=4; else i-=2; if(i<10) cout<<d[i]<<" "; n=1-n; } } 请写出输出结果。 关键字:数组与指针 答案:6 4 8 6 10 8
#include using namespace std; int a[8]={36,25,20,43,12,70,66,35}; void main() { int s0,s1,s2; s0=s1=s2=0; for(int i=0; i<8; i++) { switch(a[i]%3) { case 0: s0+=a[i];break; case 1: s1+=a[i];break; case 2: s2+=a[i];break; } } cout<<s0<<’ ‘<<s1<<’ '<<s2<<endl; } 请写出输出结果。 关键字:数组与指针 答案:114 138 55
#include using namespace std; void main() { int a[]={1,3,5,7,9}; int *p,*q,k; p=&a[0]; q=&a[4]; for(;q-p>0;p++,q–) { k=*p; *p=*q; *q=k; } for(k=0;k<4;k++) cout<<a[k]<<" "; cout<<endl; } 请写出输出结果。 关键字:数组与指针 答案:9 7 5 3
#include using namespace std; void main( ) { int a[3][3]={{1,3,5},{7,9,11},{13,15,17}}; int *p; for(p=a[0];p<a[0]+9;p++) cout<<p<<" "; cout<<endl; } 请写出输出结果。 关键字:数组与指针 答案:1 3 5 7 9 11 13 15 17 20. #include using namespace std; main() { int x[3][3],i,j; for (i=0;i<3;i++) for (j=0;j<3;j++) ((x+i)+j)=i-j; for (i=0;i<3;i++) for (j=0;j<3;j++) cout<<x[i][j]<<” ”; } 请写出输出结果。 关键字:数组与指针 答案:0 -1 -2 1 0 -1 2 1 0 21. #include using namespace std; int sum(int n) {int c=0; do{ c+=n%10; n/=10; } while(n); return c; } main() { cout<<sum(1234)<<‘\t’<<sum(4567)<<endl; } 请写出输出结果。 关键字:函数 答案:10 22 22. #include using namespace std; void main() { int t(int ); int x; x=t(5); cout<<x<<endl; } int t(int a) { if(a>0) return at(a-2); else return 1; } 请写出输出结果。 关键字:函数 答案:15
#include using namespace std; #define N 5 void fun(); void main() { for (int i=1;i<N;i++) fun(); } void fun () { static int a; int b=2; cout<<(a+=3,a+b)<<" "; } 请写出输出结果。 关键字:函数 答案:5 8 11 14 24. #include using namespace std; #define N 5 int f1(int a); void main() { int a(N); cout<<f1(a)<<endl; } int f1(int a) { return(a==0)?1:af1(a-1); } 请写出输出结果。 关键字:函数 答案:120 25. #include using namespace std; int fac(int a); void main() { int s(0); for(int i(1);i<=3;i++) s+=fac(i); cout<<s<<endl; } int fac(int a) { static int b=1; b=a; return b; } 请写出输出结果。 关键字:函数 答案:9 26、#include <iostream.h> using namespace std; class base { public: base(){cout<<“Construction base class.\n”;} ~base(){cout<<“Destruction base class.\n”;} }; class derive:public base { public: derive(){cout<<“Construction derived class.\n”;} ~derive(){cout<<“Destruction derived class.\n”;} }; int main() { derive op; return 0; } 答案:Construction base class. Construction derived class. Destruction derived class. Destruction base class. 27、#include using namespace std; class A { public: A(){cout<<“1”;} ~A(){cout<<“2”;} }; class B:public A { public: B(){cout<<“3”;} ~B(){cout<<“4”;} }; int main() { B b;return 0; } 答案:1342
|