【C++】课堂练习集锦(复习笔记)

概述

  1. 在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()
    A.main B. MAIN C. name D. function
  2. 以下叙述不正确的是()。
    A. C++程序书写格式规定,一行内只能写一个语句
    B. main()函数后面有一对花括号,花括号内的部分称为函数体
    C. 一个C++程序必须有main()函数
    D. C++规定函数内的每个语句以分号结束
  3. 以下叙述正确的是()。
    A. 在C++程序中,main函数必须位于程序的最前面
    B. C++程序的每行中只能写一条语句
    C. 在对一个C++程序进行编译的过程中,可发现注释中的拼写错误
    D. C++语言本身没有输入、输出语句

正确的应该是c++语言本身没有输入和输出语句,但是有控制输入和输出的流操作符<<和>>

输入和输出并不是C++语言中的正式组成成分。C和C++本身都没有为输入和输出提供专门的语句结构。输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的。
C++的输出和输入是用“流”(stream)的方式实现的。

在C语言中,没有输入输出语句,对文件的读写都是用库函数来实现的。ANSI规定了标准输入输出函数,用它们对文件进行读写。C提供的函数以库的形式存放在系统中,它们不是C语言文本中的组成部分,是经过模板化了的原有标准库中的iostream部分。 不把输入输出作为C语言提供的语句的目的是使C语言编译系统简单,因为将语句翻译成二进制的指令是在编译阶段完成的,没有输入输出语句可以避免在编译阶段处理与硬件有关的问题,可以使编译系统简化,而且通用性强,可移植性好,对各种型号的计算机都适用。

  1. C++语言属于()
    A. 机器语言 B. 低级语言 C. 中级语言 D. 高级语言
  2. 下列说法正确的是()。
    A. 用C++语言书写程序时,不区分大小写字母
    B. 用C++语言书写程序时,一个语句可以分几行写
    C. 用C++语言书写程序时,一行只能写一个语句
    D. 用C++语言书写程序时,每行必需有行号
  3. C++语言中的函数,下列书写正确的是()
    A. int a()
    B. double f(){
    C. float fun{}
    D. void h(){}
  4. 编写、调试运行C++程序的顺序是()
    A.编辑、编译、连接、运行
    B.编译、编辑、连接、运行
    C.编辑、连接、编译、运行
    D.编辑、编译、运行、连接

数据类型与输入输出

  1. 关于C++语言变量,描述不正确的是()
    A.变量有空间 B. 变量有类型
    C. 变量先定义后使用 D. 变量定义必须初始化
    2.下列表示整型数据的是( )。
    A. 3.2 B.’a’ C. « abc » D.0x11
  2. 属于合法的C++语言长整型常量的是()
    A. 6273 B.0L
    C. 2E10 D.(long)5876273
  3. C++语言中整数-8在内存(2字节)中的存
    储形式为
    A. 1111111111111000 B. 100000000001000
    C. 000000000001000 D. 1111111111110111
    5.下面选项中,合法浮点数的是()
    A. +1e+1 B. -.60 C.123e D.-e3
    1.下列四组选项中,均是合法转义字符的选项是()
    A. ‘\”’ ‘\’ ‘\n’
    B. ‘\’ ‘\017’ ‘\”’
    C. ‘\018’ ‘\f’ ‘xab’
    D. ‘\0’ ‘\101’ ‘xlf’
    2.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为( )
    A.D B. 68 C.不确定的值 D.C
  4. 在C++语言中,字符型数据在内存中以()形式存储
    A.原码 B.BCD码 C.反码 D.ASCII码
    1.给整型变量a,b输入值1和2;要求采用3种方式输入:
    (1)1 2
    (2)1,2
    (3)a=1,b=2
    对三种输入方式分别采用两种方式输出
    (1) 1 2
    (2)a=1,b=2

getline()函数的定义如下所示
1. istream& getline ( istream &is , string &str , char delim );
2. istream& getline ( istream &is , string &str );
is 进行读入操作的输入流
str 用来存储读入的内容
delim 终结符,遇到该字符停止读取操作,不写的话默认为回车,如定义2中的示例。

运算符和表达式

  1. 给出三角形的底a和高b,利用公式s=1/2ab 计算三角形的面积并输出。
  2. 编写一个程序,输入一个3位正整数,要求逆序输出对应的数,如输入123,则输出321。
  3. 设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为()。
    A. float B. char C. int D.double
  4. 在C++语言中,要求参加运算的数必须是整数的运算符是( )。
    A./ B.* C.% D. =
  5. 假定x和y为double型,则表达式x=2,y=x+3/2的值是() 。
    A.3.500000 B.3 C.2.000000 D.3.000000
  6. 设 int a=12; 表达式a+=a-=a*=a的值是()
    A. 12 B. 144 C. 0 D. 132
  7. 以下代码段输出结果是多少,为什么?
int a;
a=a+8;
cout<<a<<endl;

变量a未初始化,会出现异常
8. 以下代码段a的值是多少,为什么?

int a=4;
a*=5+3;

32
9. 表达式a=(b=6)*7语法正确吗?
10. 给出三角形的底a和高b,利用公式s=1/2ab
计算三角形的面积并输出。(分别应用隐式和
显示类型转换)。
11.

int i=3;
cout<<i++<<i++<<i++<<endl;
cout<<i++<<endl;

输出结果是多少
345
6
13.

 int i=3;

(i++ + i++ + i++)的值是多少?i的值是多少?
12 6
14. 设以下变量均为int类型,则值不等于7的表
达式是()。
A.(x=y=6,x+y,x+1) B.(x=y=6,x+y,y+1)
C.(x=6,x+1,y=6,x+y) D.(y=6,y+1,x=y,x+1)
2.若x、i、j、k都是int型变量,则计
算下面表达式后,x的值为( )。
x=(i=4,j=16,k=32)
A. 4 B.16 C. 32 D. 52

选择与循环结构

  1. 输入a、b两个整数,比较a、b大小,使得a中存放小的数,b中存放大的数,输出a、b。
  2. 下面关于C++语言语句,描述正确的是()
    A、空语句就是什么也没有的语句;
    B、把一些语句连接起来就是复合语句;
    C、i==1;是一个赋值语句;
    D、printf(“This is a C++ statement”) ;是一个函数调用语句;
  3. 下面程序执行结果是()
void main()
{
int a=5,b=4,c=3,d=2;
if(a>b>c) cout<<d<<endl;
else if(((c-1)>=d) = = 1) cout<<d+1<<endl;
else cout<<d+2<<endl;
}

A. 2 B. 3 C. 4 D. 编译错误

  1. 以下关于switch语句和break语句的描述中,只
    有()是正确的。
    A. 在switch语句中必须使用break语句
    B. break语句只能用于switch语句
    C.在switch语句中,可以根据需要使用或者不使用break语句
    D. break语句是switch语句的一部分
  2. 设有程序段
    int k=10;
    while(k=0)k=k-1;
    这下面描述中正确的是()
    (A)while循环执行10次 (B)循环是无限循环
    (C)循环体语句一次也不执行 (D)循环体语句执行一次
  3. 对于 for( 表达式1; ;表达式3) 可理解为()。
    (A)for( 表达式1;0;表达式3)
    (B)for( 表达式1;1;表达式3)
    (C)for( 表达式1;表达式1;表达式3)
    (D)for( 表达式1;表达式3;表达式3)
  4. 以下while循环中,循环体执行的次数是()
    k=1;
    while( - - k) k = 10;
    (A)执行10次 (B)执行无限次
    (C)一次也不执行 (D)执行1次
  5. 执行语句for(i=1;i++<4; );后变量i的值是()
    (A)3 (B)4 (C)5 (D)不定
  6. 有以下程序段,其中x 为整型变量
int x = -1;
do
{
;
} while(x++);
cout<<"x = "<<x<<endl;

以下正确的是()。
(A)该循环没有循环体,程序错误
(B)输出 x = 1
(C)输出 x = 0
(D)输出 x = -1

  1. 以下正确的描述是().
    (A)continue语句的作用是结束整个循环的执行
    (B)只能在循环体内和switch语句体内使用break语句
    (C)在循环体内使用break语句和continue语句的作用相同
    (D)从多层循环嵌套中退出时,只能使用goto语句
  2. 下列程序的输出结果是: ().
void main()
{
int i;
for(i=1;i<10;i++)
{
if(i%5==0) break;
cout<<i;
}
cout<<"end\n";

(A)end (B)1 2 3 4 5 end
©1 2 3 4 5 ==(D)1 2 3 4 end ==

数组

  1. 以下为一维整型数组a的正确说明是()
    a)int a(10);
    b)int n=10,a[n];
    c) int n;
    scanf("%d",&n);
    int a[n];
    d)#define SIZE 10
    int a[SIZE];
  2. 下列对数组的定义和初始化正确的为()
    A. int n, a[n]={1,2,3};
    B. double a[6]={1.1,2.2,3.3};
    C. int a [5] = { 1,3, , 7,9};
    D. float a[5]={};
  3. 以下叙述中错误的是 ()。
    A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
    B)数组名代表的是数组所占存储区的首地址,其值不可改变
    C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
    D)可以通过赋初值的方式确定数组元素的个数

数组下标从0开始,当数组元素的下标超出了定义的范围时,系统不会出“下标越界”的信息,运行会出错,因此在编程时务必检查下标是否越界。

  1. 有一个3×4的矩阵,求出其中值最大的那个元素的值,以及其所在的行号和列号。
  2. 矩阵乘法C=A×B。前提条件:A的列数等于B的行数,假定为M。则:C[i,j]+=A[i][k]*B[k][j]; k=0,1…M-1。
  3. 求一个3×3的整型二维数组对角线元素之和。要求:数组元素通过键盘输入
  4. 若有以下程序段:
int a[]={4,0,2,3,1},i,j,t;
for(i=1;i<5;i++)
{
t=a[i]; j=i-1;
while(j>=0&&t>a[j])
{a[j+1]=a[j]; j--; }
a[j+1]=t;
}

则该程序段的功能是().
a)对数组a进行插入排序(升序)
b)对数组a进行插入排序(降序)
c)对数组a进行选择排序(升序)
d)对数组a进行选择排序(降序)

指针与引用

  1. 指针变量存储的是什么?地址
  2. 若有语句int point,a=4;和point=&a;下面均代表
    地址的一组选项是()
    A)a,point,
    &a B)&*a,&a,point
    C)
    &point,*point,&a D)&a,&*point ,point
  3. 有以下程序
main()
{ int a,k=4,m=4,*p1=&k,*p2=&m;
a=p1==&m;
cout<<a;
}

程序运行后的输出结果是()
A)4 B)1 C)0 D)运行时出错,无定值

  1. 定义一个有5个元素的数组,请分别通过
    指针变量-指针移动法
    指针变量计数器-指针移动法
    求该数组的最大值。
  2. 用指针变量-指针移动法实现一个一维数组的转置。
  3. 有以下程序段
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];

b中的值是()
A)5 B)6 C)8 D)9

  1. 设有如下定义:
int arr[]={6,7,8,9,10};
int *ptr;
ptr=arr;
*(ptr+2)+=2;
cout<<*ptr<<,<<*(ptr+2);

则程序段的输出结果为
A)8,10 B)6,8 C)7,9 D)6,10
9. 一个学习小组有10个人,每个人学习3门课程,用10行3列浮点型数组存储。编写函数计算每个人的总成绩,参数为float (p)[3]类型。
10. 若有以下定义:int a[2][3]={2,4,6,8,10,12};则a[1][0]的值是_____. ((a+1)+0)的值是_______。
8 8
11. 若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为______.
a)
(a[i]+j) b)(a+i) c)*(a+j) d)a[i]+j
本题老师答案为A,我觉得应该是D, A选项是第i行第j列的元素值(题目见ppt第63页,解析详见ppt第46页)
12. 下列选项中声明了一个指针数组的是:
A)int *p[2]; B)int (p)[2];
C)typedef int
intPtr; intPtr p[2];
D)A和B
E)A和C
F)B和C
13. 若有以下程序:

void main()
{
char *a[3] = {"I","love","China"};
char **ptr = a;
cout<< *(*(a+1)+1)<<*(ptr+1) ;
}

这段程序的输出是()
A) I l
B) o o
C)o love
D) I love

函数

double average(int x, int y);
int main()
{
int a = 5, b = 2;
double ave = average(a, b);
}
/* 函数名: average
函数功能: 计算两个数的平均值
函数入口参数: 整型x,存储第一个运算数
整型y,存储第二个运算数
函数返回值: x与y的平均数
*/
double average(int x, int y)
{
double result;
result = (x + y) / 2.0;
return result;

函数定义、调用、声明在哪里?
2. int max( int 3,int x){ …}函数定义错在哪里?
int max( int 3,int x);函数调用错在哪里?
3. 编写一个square(int x)函数,计算一个整数的平方,然后调用该函数计算并打印1-10的平方
4. 编写一个函数printChars(int n,char t),打印n个连续的字符t
5. 写一个判断素数的函数,在主函数输入一个数,输出是否为素数的信息。
6. .在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。
A. 地址传递
B. 单向值传递
C. 由实参传给形参,再由形参传回实参
D. 传递方式由用户指定
7. 以下正确的说法是( )。
A. 实参和与其对应的形参各占用独立的存储单元
B. 实参和与其对应的形参共占用一个存储单元
C. 只有当实参和与其对应的形参同名时才共占用
相同的存储单元
D. 形参是虚拟的,不占用存储单元
8. 下列程序输出结果是( )

fun( int x , int y ,int z )
{
z= x * x + y * y ;
}
main( )
{
int a = 31 ;
fun( 5, 2, a ) ;
cout<<a<<endl;
}

A. 0 B. 29
C. 31 D.无定值
9. 编写一个递归函数int power(int a,int b) 例如:power(3,4)=333*3.假设b是大于等于1的整数。
10. 编写递归函数对数组元素求和。
11. 一下程序的输出结果是( )
A.7 B. 3 C. 9 D. 5

fun(int x)
{
int p;
if(x==0||x==1)
return 3;
p = x – fun(x-2);
return p;
}
main()
{
cout<<fun(9)<<endl;
}
  1. 在函数内部局部变量与全局变量同名,以
    哪个为准?函数内部
  2. 静态存储的变量都是static修饰的变量
    是否正确?2. 否,全局变量也是(全局变量不一定非得要static修饰)
  3. 分析下列程序输出结果:4 5 6
#include <stdio.h>
int f(int a)
{ auto int b=0;
static int c=0;
b=b+1;
c=c+1;
return(a+b+c);
}
int main()
{ int f(int);
int a=2,i;
for(i=0;i<3;i++)
cout<<f(a)<<endl;
return 0;
}
  1. 编写一个多文件程序,f1.c和f2.c:f1.c中定义全局变量a和b 要求f2.c的main函数可以打印a的值,不能打印b的值;
f1.c extern int a;
f2.c int a;static int b;
//剩余代码较简单,不是考察重点

  1. f1.c中定义函数fa()和fb()
    fa()功能是打印“fa run”
    fb()功能是打印“fb run”
    要求f2.c的main()函数可以调用f1(),不能调用f2();
  2. 下列有关extern 关键字的说明错误的是()
    A. extern 可以改变同一个文件中的全局变量的作用域
    B. extern 可以使得一个文件中的函数对其他文件可见
    C. extern不能将静态外部变量的作用域扩展到其他文件
    D. extern 可以用来定义一个外部变量
  3. 下列有关静态变量的说法不正确的是()
    A. 静态局部变量占用静态存储区空间,在程序运行期间不释放该空间
    B. 静态外部变量存放在静态存储区,非静态外部变量存放在动态存储区
    C. 定义静态变量时,编译器会自动为它赋初值
    D. 静态局部变量不能被其他函数引用,静态外部变量不能被其他文件中的函数引用
  • 声明:以上内容来自老师上课讲述和PPT,未经允许不得转载

我并不期望人生可以过得很顺利,但我希望碰到人生难关的时候,自己可以是它的对手。

闭上眼睛,好好回想之前的努力,自信就会喷薄而出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值