中国地质大学2025春程序期末练习题上(选择+判断)

判断题:

1、在选择结构中,else总是与它前面最近的那个if相配套的。T

2、在switch分支结构中不能使用break语句。F

选择题:

1、执行下面程序段,给x、y赋值时,不能作为数据分隔符的是_____。

int x,y;
cin >> x >> y;

A. 回车

B. 空格

C. Tab键

D. 逗号

2、 C/C++语言中,运算对象必须是整型数的运算符是【 】。

A. /

B. %和/

C. *

D. %

3、高级语言编写的程序相比机器语言编写的特点是_____。

A. 计算机能直接识别和执行

B. 执行速度快

C. 可读性好,语法更接近自然语言

D. 依赖于具体机器,移植性差

4、标准C++语言的源程序的文件名的扩展名是_____。

A. .c

B. .cpp

C. .obj

D. .exe

5、把源程序文件翻译转换成目标文件的过程叫做_____。

A. 编译

B. 编辑

C. 连接

D. 调试

6、表达式10+‘a’+1.5-567.345/'b’的结果类型是( )。

A. unsigned float

B. int

C. long

D. double

7、下列字符串可以作为标识符的是_____。

A. long

B. INT

C. !DF

D. 5_student

8、下面关于C/C++语言注释的描述中,正确的是_____。

A.

以"/* "开始的单行注释

B.

以"/*"开始,以"//"结束的块式注释

C.

以"//"开始和结束的块式注释

D.

以 "/*" 开始,以 "*/"结束的块式注释

9、假定int a = 3, b = 2; 则表达式1.0 * a / b的值是( )。

A. 1.5

B. 1.0

C. 2

D. 1

10、设d为字符变量,下列表达式中不正确的是【 】。

A. d=110

B. d=“n”

C. d=‘n’

D. d=‘\n’

11、 C或C++语言中,运算对象必须是整型数的运算符是( )。

A. /

B. *

C. %

D. %和/

12、else语句嵌套使用时,C/C++语言规定,else总是与( )配对。

A. 距离最近的if

B. 其前面最近的if

C. 缩排位置相同的if

D. 其前面最近的未配对的if

13、假设有如下的程序片段,若grade的值为’C’,则输出结果是_____。

switch(grade)
{
    case 'A': cout << "GREAT!";
    case 'B': cout << "GOOD!";
    case 'C': cout << "OK!";
    case 'D': cout << "NO!";
    default : cout << "ERROR!";
}

A. OK!

B. GREAT!GOOD!OK!NO!ERROR!

C. 不确定

D. OK!NO!ERROR!

14、阅读下面的程序:

#include<iostream>
using namespace std;
int main()
{
    int a,b;
    cin >> a >> b;
   if(a>b) 
         a=b;b=a; 
     else 
         a++;b++; 
     cout << a << b;
     return 0;
}

正确的说法是( )。

A. 有语法错误不能通过编译

B. 若输入5,4则输出4,5

C. 若输入4,5则输出5,6

D. 若输入5,4则输出5,5

15、下面表达式与max = (a>b) ? a : b; 表示的作用不同的是( )。

A.

max = b;
if(a > b)
max = a;

B.

max = a;
if(a < b)
max = b;

C.

if( a> b)
max = a;
else
max = b;

D.

if( a> b)
max = b;
else
max = a;

16、 下面的程序段执行后,x 的值是【 】。

int a = 9, b = 7, c = 3, d = 5, x;
x = a > b ? c : d;

A. 3

B. 5

C. 7

D. 9

17、 判断 char 型变量 s 是否为小写字母的正确表达式是( )。

A. ‘a’ <= s<= ‘z’

B. (s>=‘a’) & (s<=‘z’)

C. (s>=‘a’) && (s<=‘z’)

D. (‘a’<=s) and (‘z’>=s)

18、 假设有如下的程序片段,若grade的值为’C’,则输出结果是【 】。

 switch(grade)
{
    case 'A': cout << "GREAT!";
    case 'B': cout << "GOOD!";
    case 'C': cout << "OK!";
    case 'D': cout << "NO!";
    default : cout << "ERROR!";
}

A. OK!

B. GREAT!GOOD!OK!NO!ERROR!

C. 不确定

D. OK!NO!ERROR!

19、下面程序段运行时的输出结果是( )。

grade='C';
switch(grade)
{
    case 'A': printf("A");
    case 'B': printf("B");
    case 'C': printf("C");
    case 'D': printf("D");
    default : printf("ERROR!");
}

A. C

B. ABC

C. DERROR

D. CDERROR

20、while和do…while语句的主要区别是_____。

A. while的循环控制条件比do…while循环控制条件严格

B. do…while允许使用break语句跳出循环,而while只能用continue跳出循环

C. 当循环体包含多条语句时,do…while的循环体必须使用复合语句,而while循环体不需要使用复合语句

D. do…while的循环体至少要无条件执行一次,而while可能一次都不执行

21、下面语句中,while循环执行的次数是【 】次。

    k=10; 
    while(k=1) 
        k=k-10;

A. 无限

B. 1

C. 0

D. 2

22、下面程序段执行时输出_____个字符#。

 int i=1; 
 while(1) 
 {
      i++; 
      if(i==10) 
          break;
      if(i%2==0) 
          cout << "#"; 
 }

A. 3

B. 4

C. 5

D. 10

23、若i,j已定义为int型,则以下程序段中循环体总的执行次数是_____(假定在循环体内不改变i,j的值)。

for(i=1; i<=5; i++)
    for(j=0; j<4; j++)
    { ……//循环体语句 }

A. 25

B. 30

C. 24

D. 20

24、下面代码段运行后,f的值为( )。

int f,f1=1,f2=1;
for(int i=3;i<=8;i++)
{
     f=f1+f2;
     f1=f2;
     f2=f;
}
 cout << f << " ";

A. 13

B. 34

C. 21

D. 10

25、 while和do…while语句的主要区别是【 】。

A. while的循环控制条件比do…while循环控制条件严格

B. do…while允许使用break语句跳出循环,而while只能用continue跳出循环

C. 当循环体包含多条语句时,do…while的循环体必须使用复合语句,而while循环体不需要使用复合语句

D. do…while的循环体至少要无条件执行一次,而while可能一次都不执行

26、有如下程序,编译运行这个程序将出现的情况是_____。

#include<iostream>
using  namespace std;
void f(double val);
int main()
{
     double val;
     f(val);
     cout << val;
     return 0;
}
void f(double val)
{
     val=3;
}

A. 输出:3

B. 输出:3.0

C. 输出一个不确定的数

D. 编译出错,无法运行

27、函数的定义和函数的声明需要匹配,否则无法通过编译。也就是说,匹配时函数的定义和声明中的( )可以不同,其它必须完全相同。

A. 函数名称

B. 参数名称

C. 参数类型及顺序

D. 返回类型

28、若一个函数的返回值类型为void,以下叙述正确的是_____。

A. 函数不能修改实际参数的值

B. 函数返回值需要强类型转换

C. 函数没有返回值

D. 调用该函数不执行任何操作

29、下面函数调用的语句中,一定不正确的是_____。

A. max(3, a+b);

B. max(3,5);

C. max(a ,b) ;

D. max(int a,int b);

30、下面关于形参与实参的说法中,不一定正确的是( )。

A. 形参与实参如果都是变量,则变量名称与数据类型必须完全相同

B. 形参(形式参数)是函数的局部变量,函数调用完毕后,局部变量就被销毁

C. 实参(实际参数)可以是常量、变量、表达式或其它函数调用的返回值

D. 值传递规定:函数调用时将实参的值传递给形参,函数调用结束后并不能将形参的值传递给实参

31、下列关于函数定义中return语句的描述,错误的是_____。

A. 函数通过return语句仅能返回一个值

B. return语句用于结束当前正在执行的函数,并将程序控制权返回给调用此函数的函数

C. 一个函数可以有多条return语句

D. 一个函数中必须有而且只能有一条return语句

32、函数返回值的类型是由_____决定的。

A. return语句中的表达式类型

B. 调用该函数时的主调函数实参的数据类型

C. 在定义该函数时所指定的函数返回类型

D. 调用该函数时系统临时分配的数据类型

33、若有下面的函数调用fun(a+b,3,max(n-1,b))则fun的实参个数是_____。

A. 5

B. 6

C. 3

D. 4

34、下面说法中正确的是:在C/C++语言程序中_____。

A. 函数的定义和函数的调用均可以嵌套

B. 函数的定义和函数的调用均不可以嵌套

C. 函数的定义不可以嵌套,但函数的调用可以嵌套

D. 函数的定义可以嵌套,但函数的调用不可以嵌套

35、下面定义了f与fun两个函数,当main函数中调用fun函数时,将出现的情况是( )。

void f(int n)
{
     n=1;
}
void fun()
{
     int n=0;
     f(n);
     printf("%d",n);
}

A. 输出1

B. 输出0

C. 输出一个不确定的数

D. 输出10

36、能够正常可靠实现交换两个整数值的函数定义的是( )。

A.

void fun(int *x, int *y)
 {
          int *temp;
          *temp = *x;
          *x = *y;
          *y = *temp;
 }

B.

void fun(int x, int y)
 {
          int temp = x;
          x = y;
          y = temp;
 }

C.

void fun(int* x, int* y)
 {
          int temp = *x;
          *x = *y;
          *y = temp;
 }

D.

void fun(int* x, int* y)
 {
          int *temp = x;
          x = y;
          y = temp;
 }

37、定义数组a的语句如下:int a[5]={1,3,5};
表示定义一个由5个int型元素组成的一维数组,同时进行初始化。
则下面对初始化值的说法中正确的是________。

A. 将1、3、5依次赋给a[0]至a[2]

B. 将1、3、5依次赋给a[1]、a[3]、a[5]

C. 将1、3、5依次赋给a[3]至a[5]

D. 数组访问越界

38、已知自定义函数的原型声明如下:int max(int a[],int n);,如果主函数中定义了数组int arr[5];并给予初始值,则主函数中调用max函数语法正确的是________。

A.

int maxValue = max(a,5);

B.

int maxValue = max(int a[],5);

C.

int maxValue = max(arr,5);

D.

int maxValue = max(int arr[],5);

39、假设定义数组int a[10];则程序中使用a[10]=1;,表示________。

A. 将数组a的最后一个元素之后的空间赋值为1,可能导致严重后果

B. 将数组a的第一个元素赋值为1

C. 将数组的所有10个元素都赋值为1

D. 将数组a的最后一个元素赋值为1

40、若有说明:int a{3][4] ;则对a数组元素的非法引用是_____。

A. a{0][4]

B. a{4-2][0]

C. a{0][2*1]

D. a{1][3]

41、若二维数组a有m列,则在a[i][j]前的元素个数为_______________。

A. j*m+i

B. i*m+j+1

C. i*m+j-1

D. i*m+j

42、下面函数是折半查找法判断key在数组a(n个已由小到大排序的整数)中是否存在,若找到则返回下标(>=0),若未找到则返回-1。

int search( int a[], int n, int key)
{
     int bot=0,top=n-1,mid;
     while(bot<=top)
    {
           mid=bot+(top-bot)/2;
           if(a[mid]==key)
                  return mid;
          else if(a[mid]>key)
                 【1】
           else
                 【2】
   }
   return -1;
}

A. 【1】bot=mid+1; 【2】top=mid-1;

B. 【1】bot=mid; 【2】top=mid;

C. 【1】top=mid-1; 【2】bot=mid+1;

D. 【1】top=mid; 【2】bot=mid;

43、假设定义数组int a[10];,则数组 a 能访问的元素的下标范围是 0 到 9。一旦超过这个范围,如访问a[10],可能会出现的情况不包括【 】。

A. 编译不通过

B. 运行正常

C. 运行显示意外值

D. 运行时异常退出

44、已知自定义函数的原型声明如下:
int max(int a[],int n);

如果主函数中定义了数组int arr[10];并给予初始值,则主函数中调用max函数语法正确的是【 】。

A.

int maxValue = max(a,10);

B.

int maxValue = max(int a[],10);

C.

int maxValue = max(arr,10);

D.

int maxValue = max(int arr[],10);

45、下面对二维数组 x 的定义错误的是【 】。

A.

int x[][3]={{0},{1},{1,2,3}};

B.

int x[][3]={0,1,2,3};

C.

int x[3][3]={{1,2,3},{1,2,3},{1,2,3}};

D.

int x[3][]= {{1,2,3},{1,2,3},{1,2,3}};

46、若有说明:int a[][3]={1,2,3,4,5,6,7,8,9,10}; 则a数组第一维的大小是【 】。

A. 3

B. 4

C. 10

D. 不确定

47、下面的语句定义了两个字符数组 sa 和 sb,说法正确的是【 】。

char sa[]="hello";
char sb[]={'h', 'e', 'l', 'l', 'o'};

A. 数组 sa 和数组 sb 是同一个内存,使用不同的名字

B. 数组 sa 的长度等于数组 sb 的长度

C. 数组 sa 的长度大于数组 sb 的长度

D. 数组 sa 的长度小于数组 sb 的长度

48、 已知有定义char s1[20],s2[20];,判断字符串s1是否大于字符串s2时,应当使用【 】。

A.

if (s1>s2)

B.

if (strcmp (s1,s2))

C.

if (strcmp (s1,s2)<0)

D.

if (strcmp (s1,s2)>0)

49 、定义一个字符数组s,下面语句段执行后,语句cout << s;的执行结果不是“How are you!”的是【 】。

A.

char s[20]; cin >> s;运行时输入How are you!回车

B.

char s[20]; cin.getline(s,20); 运行时输入How are you!回车

C.

char s[20]; strcpy(s,"How are you!"); 

D.

char s[20]="How are you!"; 

50、下面对C++语言字符数组的描述中错误的是【 】。

A. 不可以用关系运算符对字符数组中的字符串进行比较

B. 字符数组中的字符串可以整体输入、输出

C. 可以通过赋值运算符“=”对字符数组整体赋值

D. 字符数组可以存放字符串

51、若有以下定义:char s[20]="programming",*p=s;,则不能代表字符g的表达式是【 】。

A.

*p+3

B.

s[3]

C.

p[3]

D.

p+=3,*p

52、C++中,文件操作完成后必须进行关闭,断开文件流与文件的联系,保证将缓冲区中的数据写入到文件中。假如打开文件流对象ifs,则关闭文件要使用ifs.【 】方法。

A. end

B. fail

C. close

D. open

答案(仅供参考)

1 ~ 10	DDCBA DBDAB
11 ~ 20	CDDBD ACDDD
21 ~ 30	ABDCD CBCDA
31 ~ 40	DCCCB CACCA
41 ~ 50	CCCCD ACDAC
51 ~ 52	AC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值