【习题】 一、
选择题
1. 下列数据类型不是C++语言基本数据类型的是( )。
(a)字符型 (b)整型 (c)浮点型 (d)数组
一、 下列字符列中,可作为C++语言程序自定义标识符是( )。选择题
2.
(a)x (b)-var (c)new (d)3i 3. 下列数中哪一个是8进制数( )。
(a)0x1g (b)010 (c)080 (d)01b 4. 已知a=1,b=2,c=3,则表达是++a||-b&&++c的值为( )。
(a)0 (b)1 (c)2 (d)3 5. 下列表达式选项中,( )是正确的。
(a)++(a++) (b)a++b (c)a+++b (d)a++++b 6. 已知枚举类型定义语句为:( )。
enum color{RED,BLUE,PINK=6,YELLOW,GREEN,PURPLE=15}; 则下列叙述中错误的是( )。
(a)枚举常量RED的值为1 (b)枚举常量BLUE的值为1 (c)枚举常量YELLOW的值为7 (d)枚举常量PURPLE的值为15
二、
填空题
1. c++语言标示符是以字母或____下划线______开头的,由字母、数字、下划线组成。 2. 在C++语言中,char型数据在内存中的存储形式是____ ASCII______。
3. 在内存中,存储字符‘x’占用1个字节,存储字符串“x”要占用____2____个字
节。
4. 符号常量可以用宏定义define和_____ const_____表示。 5. 转义字符序列中的首字符是__\\_______。 6. 空字符串的长度是____0______。
7. 表达式cout<<’\\n’;还可以表示为cout< 编程题 1. 编写一个程序,输入一个三位数,分别输出该数的百位、十位和个位。 【参】 一、 选择题 1. d 2. a 3. b 4. b 5. c 6. a 7. c 二、 填空题 1. 下划线 2. ASCII 3. 2 4. const 5. \\ 6. 0 7. cout< #include int num,var1,var2,var3; cout<<\"请输入一个三位数:\"< if(num>999||num<100) //用于检查输入数据的合法性 else { var1=num/100; var2=(num-var1*100)/10; var3=num%10; cout<<\"百位数为:\"< 第3章 C++程序的流程控制 【习题】 一、 选择题 1. 在循环语句中使用break语句的作用是( )。 (a)结束本次循环 (b)结束该层循环 (c)结束所有循环 (d)结束程序执行 2. 对if后的括号中的表达式,要求i不为0的时候表达式为真,该表达式表示正确的为 ( )。 (a)i (b)!i (c)i<>0 (d)i=0 3. 下列循环语句的执行次数是( )。 while(!1) cout<<”ok!”; (a)0次 (b)1次 (c)2次 (d) 无数次 4. 运行下列程序结果为( )。 #include int i; for (i=0;i<=10;i++){ if (i%2) cout<(a)246810 (b)12345 (c)6710 (d)13579 二、 填空题 1. 结构化程序设计的三种基本结构是顺序结构、选择结构(分支结构)、循环结构。 2. continue语句实现的作用是____跳出本次循环。__________________________。 3.若输入”china 2008!”,运行下列程序的输出结果为___________________________。 #include char c; int letters=0,digits=0,others=0; cout<<\"Please input a line charaters\"< if (c>='0' && c<='9') digits++; else others++; } cout<<\"letters:\"< 4.本程序完成1!+2!+……+18!的计算,请将程序补充完整。 #include double sum=0,fac=1; for(int i=1;i<=18;i++) { ___________ fac*=i ____________ ____________ sum+=fac ___________ } cout<<\"1!+2!+……+18!=\" < 1. 输入某学生成绩,若成绩在90-100输出"优秀",若成绩在80-输出"良好",若 成绩在70-79输出"中",若成绩在60-69输出”及格”,若成绩在0-59输出”不及格”。 2. 输入三人数,按从小到大的大顺序输出。 3. 在100~200中找出同时满足用3除余2,用5除余3和用7除余2的所有整数。 【参】 一、选择题 1. b 2. a 3. a 4. d 二、填空题 1.顺序结构、选择结构(分支结构)、循环结构 2.跳出本次循环。 3. please input a line charaters letters:5 digits:4 others:2 4.①fac*=i; ②sum+=fac; 三、编程题 1. #include double grade; char* degree; cout<<\"请输入学生成绩:\"; cin>>grade; if(grade>100||grade<0) { cout<<\"您的输入有误!\"< degree=\"优秀\"; else if(grade>=60) degree=\"及格\"; else degree=\"不及格\"; cout<<\"分数:\"< int num1,num2,num3,num; cout<<\"请输入三个整数:\"; cin>>num1>>num2>>num3; if(num1>num2) { num=num1; num1=num2; num2=num; } if(num1>num3) { num=num1; num1=num3; num3=num; } if(num2>num3) { num=num2; num2=num3; num3=num; } cout<<\"三个数按从小到大输出为:\"< cout<<\"在100~200中同时满足用3除余2,用5除余3和用7除余2的整数为:\"< 第4章 数组 【习题】 一、选择题 1.在C++中对数组下标说法正确的是( )。 (a)初始化数组的值的个数可以多于定义的数组元素的个数,多出部分将被忽略。 (b)初始化数组的值的个数可以少于定义的数组元素的个数。 (c)初始化数组的值的个数必须等于定义的数组元素的个数。 (d)初始化数组的值可以通过跳过逗号的方式来省略。如int a[3]={1,,2}; 2.数组定义为:int a[2][2]={1,2,3,4};则a[1][0]%3为( )。 (a)0 (b)1 (c)2 (d)4 4.运行下列程序结果为( )。 #include int a[4]={1,2,3,4}; for(int i=3;i>=0;i--) } (a)1234 (b)1324 (c)4231 (d)4321 5.运行下列程序结果为( )。 #include int i,j,t,a[2][2]={8,7,6,5}; for(i=0;i<1;i++) for(j=i+1;j<2;j++) { t=a[i][j]; cout<} } a[i][j]=a[j][i]; a[j][i]=t; for(i=0;i<2;i++) { } for(j=0;j<2;j++) cout<cout< 1. mn数组包含____M______行、___N______列和______M*N____个元素。 2. 定义数组int a[10];,若要给该数组的第三个元素赋值100,其语句为___ a[2]=100_______。 3. 已知数组a中的元素个数为4,下列语句的作用是将下标为i的元素移动到下标为i-1 的单元,其中1≤i<4。a中原有数据为1,2,3,4,移动后a中元素结果为2,3,4,4。请将下列程序补充完整。 #include int a[4]={1,2,3,4}; for(int i=0;______①i<3______;i++) } 4. 程序填空 运行下列程序后当str是对称的时,输出“是回文”,否则输出“不是回文”,请将程序补充完整。 #include char str[20]; cin.get(str,20);//输入字符串 a[i]=______②__ a[i+1]____; int i=0, j=0; while (str[j])_______①___ j++________; for(j--; i 5. 运行下列程序的结果为___________________。 #include int array1[3][3]={1,2,3,4,5,6,7,8,9},array2[3][3],i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) array2[j][i]=array1[i][j]; for(i=0;i<3;i++) { } } 1 4 7 2 5 8 3 6 9 6. 运行下列程序的结果为____________________。 #include for(j=0;j<3;j++) cout< cout<<\"请输入1到50的六个正整数:\"; for(i=0;i<6;i++) cin>>num[i]; for(i=0;i<6;i++) { } } 输入为:2 4 1 6 3 1 ** **** * ****** *** * 三、编程题 1设学生人数N=8,提示用户输入N个人的考试成绩,然后计算出平均成绩,显示出来。 2. 将一个二维数组行和列互换,然后存放到另一个二维数组中; 【参】 一、 选择题 1.b 2.a for(j=1;j<=num[i];j++) cout<<\"*\"; cout< 二、填空题 1.m n m×n 2.a[2]=100; 3.①i<3 ②a[i+1] 4.①j++ ②i==j 5. 1 4 7 2 5 8 3 6 9 6. ** **** * ****** *** * 三、编程题 解: 源程序: #include float grades[N]; //存放成绩的数组 void main() { int i; float total,average; //提示输入成绩 for(i = 0; i < N; i++ ) { cout << \"Enter grade #\" <<(i +1) << \": \"; cin >> grades[i]; } total = 0; for (i = 0; i < N; i++) total += grades[i]; average = total / N; cout << \"\\nAverage grade: \" << average << endl; } #include int a[m][n],b[n][m],i,j; cout<<\"请输入一个两行三列的数\"< } cout<<\"转换为三行两列值为\"< } 第4章 C++函数与程序结构 【内容提要】 【习题】 一、选择题 1.下列函数定义语句正确的是((a) void fun(int var1) { int var1=0; cout< void fun(int var1,var2) { cout< if(var1) return 1; else return 0; } (d) int fun(int var1) { } 2.下列叙述中正确的是( ) (a)C++语言程序中,main()函数必须在其它函数之前,函数内可以嵌套定义函数。 (b)C++语言程序中,main()函数的位置没有,函数内不可以嵌套定义函数。 (c)C++语言程序中,main()函数必须在其它函数之前,函数内不可以嵌套定义函数。 (d)C++语言程序中,main()函数必须在其它函数之后,函数内可以嵌套调用函数。 3.下列对return语句叙述错误的是( )。 (a)在函数定义中可能有return语句,也可能没有return语句。 (b)在函数定义中可以有多条return语句。 (c)在函数定义中每条return语句可能返回多个值。 (d)如果函数类型不是void型,则函数定义中必须有return语句。 4.C++语言中函数返回值的类型是由( )决定的。 (a)return语句中的表达式类型 (b)调用该函数的主调函数类型 (c)定义函数时所指定的函数类型 (d)以上说法都不正确 5.C++中,关于参数默认值的描述正确的是( )。 (a)只能在函数定义时设置参数默认值 if(var1) return 1; else cout<<0< (d)设置参数默认值后,调用函数不能再对参数赋值 6.使用重载函数编程序的目的是( )。 (a)使用相同的函数名调用功能相似但参数不同的函数 (b)共享程序代码 (c)提高程序的运行速度 (d)节省存储空间 7.系统在调用重载函数时,下列不能作为确定调用哪个重载函数的依据的选项是((a)函数名 (b)参数个数 (c)函数类型 (d)参数类型 9.数组作为函数的形参,把数组名作为函数的实参时,传递给函数的是( )。 (a)数组中各元素的值 (b)数组中元素的个数 (c)数组中第0个元素的值 (d)该数组的首地址 10.运行下列程序结果为( )。 #include int a[][3]={0,1,2,3,4,5,6,7,8}; cout< int i,j,t=1; for(i=0;i 。 ) } return t; } (a)0 (b)48 (c)105 (d)45 相当于 下面矩阵的对角线相乘 1 2 3 4 5 6 7 8 9 11.运行下列程序的输出结果为( )。 #include int var=2; ::var=0; //访问全局变量 if(var>1) { int var=5; cout<} } (a)20 (b)000 (c)520 (d)500 二、填空题 1.一个C++语言程序总是从_____ main函数_____开始执行。 3.在函数原型说明中必须包含的要素有函数类型(如果省略则默认为int型)、___函数名______、______参数表_____。 4.____ const ______限定符声明只读变量。 5.若某个函数没有返回值,则该函数的类型应定义为_____ void _____类型。 6.一个函数直接或间接地调用自身,这种现象称为函数的____递归调用______。 cout<7.在一个函数的定义或声明前加上关键字___ inline _______则就把该函数定义为内联函数,它主要是解决____程序的运行效率______问题。 8.函数的参数传递的方式分为两类,分别是_____值传递_____方式和_____引用传递_____方式。 9.在c++中,可以有多个同名而处理不同参数类型或个数的函数,称为函数____重载______。 12.运行下列程序的结果为____ ______。 #include int a=66,b=4; cout<<\"a=\"<cout<<\"a=\"<void swap(int &x,int &y) { int t=x; x=y; y=t; } a=66,b=4 a=4,b=66 13.运行下列程序的结果为__________。 #include void fun(int array[ ],int n); void main( ) { } void fun(int array[ ],int n) { } 1 1 2 3 5 8 13 21 34 55 14.运行下列程序,若输入1 2 3 4 5则输出结果为_______________________。 #include void main() { rev(5); int x; cin>>x; if(n==1) cout< cout< rev(n-1); cout< 用递归调用:321 15. 运行下列程序结果为________________。 #include void fun(char PrChar='$',int num=10); main() { char ch; int num; ch='#'; num=20; fun(ch,num); fun(); fun('&'); return 0; } void fun(char ch,int num) { for(int i=0;i cout<<\"\\n\"; 16.运行下列程序结果为____________________________。 #include void fun( ) { } 答案:01234 三、编程题 1. 编写函数将华氏温度转换为摄氏温度,公式为c(F32)59;并在主函数中调用。 2. 编写函数利用全局变量统计数组中奇数和偶数的个数。 【参】 一、选择题 1. c 2. b 3. c 4. c 5. b 6. a 7. c 8. b 9. d 10. d 11. c static int m=0; M的值保持不变 cout< fun(); 二、填空题 1. main函数 2. 函数原型 3. 函数名、参数表 4. const 5. void 6. 递归调用 7. inline、程序的运行效率 8. 值传递、引用传递(或地址传递) 9. 重载 10. 函数范围、文件范围、块范围、函数原型范围 11. static 12. a=66,b=4 a=4,b=66 13. 1 1 2 3 5 8 13 21 34 55 14. 321 15. #################### $$$$$$$$$$ &&&&&&&&&& 16.01234 三、编程题 1. #include double ftoc(double f) { double c; c=(f-32)*5/9; return c; cout<<\"华氏温度\"<<104.0<<\"度为摄氏\"< #include int array[N]={0,2,3,4,5,6,7,8,10,12}; sta(array,N); cout<<\"奇数有\"< void sta(int a[],int n) { for(int i=0;i numo++; } 第6章 指针、引用和动态空间管理 【习题】 一、选择题 1. 要使变量i成为int型变量x的别名,正确的定义语句是( )。 (a) int &i=x; (b) int i=&x; (c) int &i=&x; (d) int i=x; 2. 在下列指针表达式中,与下标访问a[i][j]不等效的是( )。 (a) *(a+i+j) (b) (*(a+i))[j] (c) *(*(a+i)+j) (d) *(a[i]+j) 3. 已定义字符串char str[5],则下列表达式中不能表示str[1]的地址的是((a) str+1 (b) str++ (c) &str[0]+1 (d)&str[1] 4. 已知:int a[]={1,2,3,4,5,6},*p=a,x;下面语句中x的值为5的是( )。。 ) (a) p+=3;x=*(p++); (b) p+=5;x=*p++ ; (c) p+=4;x=*++p; (d) p+=4; x=*p++ 5. 若有说明:int i,j=6,*p;p=&i;则与i=j等价的语句是( )。 (a) i=*p; (b) *p=*&j; (c) i=&j; (d)i=**p; 6. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行 的语句是( )。 (a) k=*p1+*p2; (b) p2=k; (c) p1=p2; (d) k=*p1*(*p2); 7. 下面函数的功能是( )。 int fun(char *x) { char *y=x; while(*y++){}; //执行到结尾,即指针指到字符串的尾部 return y-x-1; } (a) 求字符串的长度 (b) 求字符串存放位置 (c) 比较两个字符串的大小 (d) 将字符串x连接到字符串y后面 8. 执行以下程序段后,m的值为( )。 int a[2][3]={{1,2,3},{4,5,6}}; int m,*p=&a[0][0]; m=(*p)*(*(p+2))*(*(p+4)); //第1,3,5个元素的乘积 (a) 15 (b) 14 (c) 13 (d) 12 9. 设有如下定义,下面关于ptr正确叙述是( )。 int (*ptr)(); (a) ptr是指向一维数组的指针变量。 (b) ptr是指向int 型数据的指针变量。 (c) ptr是指向函数的指针,该函数返回一个int型数据。 (d) ptr是一个函数名,该函数的返回值是指向int型数据的指针。 10. 若有如下语句: int **pp,*p,a=10,b=20; pp=&p; p=&a; p=&b; cout<<*p<<”,”<<**pp< (b) 10,10 (c) 20,10 (d) 20,20 1. 运行下列程序结果为_____10_____。 #include { int a[3]={10,15,20}; int *p1=a,*p2=&a[1]; //*P2=15 *p1=*(p2-1)+5; //*P1=15 *(p1+1)=*p1-5; // A[1]=10 cout<2. 运行下列程序结果为max=15,min-=-5,请将程序补充完整。 #include void max_min(int arr[],int *pt1,int *pt2,int n) { } void main() { } 三、编程题 【参】 void max_min(int arr[],int *pt1,int *pt2,int n); int array[N]={1,8,10,2,-5,0,7,15,4,-5}; int *pt1,*pt2,a,b; pt1=&a; pt2=&b;
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务