【临时抱佛脚】C++程序设计基础 选择填空题库整理

还有一周就要期末了!快把学校的题库做一遍吧 ,说不定期末原题就在其中!!!

(C++题库附详细答案)

先放个答案:

选填答案:

第一次实验1-5daa

第二次实验1-5bacba 6-10bb

1.  14 2

2.  6

第三次实验1-5abcba 6-10cddbb 11-13add

1.2 3

2、8

3、5

第四次实验1-5bcbbd 6-10b

1\120

2\23

3\x=4

4\*

5\5

第五次实验1-5adcac 6-10bddd

第六次实验1-5ccdbd 6-10cbcbc 11-12bd

第七次实验1-5dbccd 6c

1\5,6.00

2\600

3\15

第八次实验1-5dbcbc 6-10abacc 11-15xcddd 16-20daaaam21-25bdcba

1\i=j

2\4 2

3\不正确

4、a=10,b=20

5\C B

6\language OK!

7\60

第一次实验


1、在C语言中的if语句中,用作判断的表达式为

 A 关系表达式
 B 逻辑表达式
 C 算术表达式
 D 任意表达式

2、一个C程序的执行是从 
A. 本程序的main函数开始,到main函数结束

B. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C. 本程序的main函数开始,到本程序文件的最后一个函数结束

D.本程序文件的第一个函数开始,到本程序main函数结束

3、已知:char a=’a’;float b=2.3;double c=41;int d;则执行语句d=a+b+c;后变量d的数据类型为       
(A) int  (B) char  (C) float  (D) double

第二次实验

1、设字符型变量ch中存放字符'A',则执行'ch+++5'后,ch中的字符是  正确答案:

A. A
B. B
C. F
D. G

2、下列哪个数不是正确的int类型 【 正确答案: 】。
 A 32768  B -32768  C 057 D 0xAC

3、设整型变量x和y的值均为7,则表达式"x/(y-4)"的值是 【 正确答案:

A. 3
B. 
-3
C. 2
D. 1

4、执行以下程序段后,变量a,b,c的值分别为  正确答案:
int x = 10, y = 9;
int a, b, c;
a = (--x == y++)? --x: ++y;
b = x++;
c = y;

A)a = 9, b = 9, c = 9  
B)a = 8, b = 8, c = 10
C)a = 9, b = 10, c = 9  
D)a = 9, b = 10, c = 11

5、已知:char a=’a’;float b=2.3;double c=41;int d;则执行语句d=a+b+c;后变量d的数据类型为   【 正确答案: 】    
(A) int  (B) char  (C) float  (D) double

6、若定义int i=3, 则表达式i+++i+++i的值是 【 正确答案: 】。

A  9  B 12  C 15

7、字符串"\ta\017bc"的长度(不包括结束符)是   正确答案: 】         
(A)  9
(B)  5
(C)  6
(D)  7

1、已知 int a=8,则运算a+=a-=a/a后a的值为     14      【 正确答案: 】,  运算表达式a+=a%=2+a/a后a的值为     4      【 正确答案: 】。

2、已知:int a=5,b=6,w=1,x=2,y=3,z=4;执行语句“(a=w>x)&&(b=y>z);”后b 的值为     6      【 正确答案:

第三次实验

1、选择运行结果 【 正确答案: 】。

#include <iostream>

using namespace std;

int main()

{ int n=4;

  while(n--)

      printf("%d ",--n);

}

(A)2 0
(B)3 1
(C)3 2 1
(D)2 1 0

2、写出下述程序的输出结果  【 正确答案: 】            

#include <iostream>

using namespace std;

int main()

{

   int a=0,b=0,c=1,d=10;

   if (a) d=d-5;

   else if (c)

               if (!b) d==15;

               else d==25;

   printf("%d\n",d);

}

A:5

B:10

C:15

D:25

3、以下程序的运行结果是  【 正确答案:

#include <iostream>

using namespace std;

int main()

{

    int s=1,t=1,a=5,b=2;

    if (a>0)

        s++;

    if (a>b)

        t+=s;

    else if (a==b)

        t=5;

    else

        t=2*s;

    printf("s=%d,t=%d\n",s,t);

}

A:s=2,t=5

B:2,3

C:s=2,t=3

D:s=2,t=4   

4、给出下述程序的输出结果  【 正确答案: 】 
 

#include <iostream>

using namespace std;

int main()

{

    int a=5,b=0,c=0;  

    if(a=b+c)

     printf("***");

    else

     printf("$$$");

 }

A:***

B:$$$

C:***$$$

D:$$$***

5、请选择下列程序的运行结果 【 正确答案: 】。

#include <iostream>

using namespace std;

int d=1;

fun(int p)

{

 int d = 5;

 d+= p++;

 cout<<d<<endl;

}

int main()

{

 int a=3;

 fun(a);

 d += a++;

 cout<<d<<endl;

}

(A)8 4
(B)9 6
(C)9 4
(D)8 5

6、若有变量定义int a; double b; 要输入数据存放在a和b中,则下面正确的输入数据的语句为: 【 正确答案:
A. scanf("%d%f",a,b);
B. scanf("%d%f",&a,&b);
C. scanf("%d%lf",&a,&b);
D. scanf("%d%lf",a,b);

7、下面程序段执行结果为  正确答案:
char c = '0'+2;
switch (c){
case 1:  printf("A"); break;
case '2' : printf("B");
case 2:  printf("C");
default: printf("D");
};
A) A   
B) D  
C) BC 
D) BCD

8、在执行以下程序过程中
#include<stdio.h>
void main() {
 char c1,c2,c3,c4,c5,c6;
 scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
 c5=getchar();
 c6=getchar();
 putchar(c1);
 putchar(c2);
 printf("%c%c\n",c5,c6);
}

如果输入数据:
987<CR>
65432<CR>
(
注意:从第一列开始,<CR>表示回车)
输出结果为  【 正确答案:        
(A)9843
(B)9854
(C)9832
(D)9865

9、以下不正确的语句是  正确答案: 】           
(A)  if (x > y);
(B)  if (x = y) && ( x!= 0) x += y;
(C)  if (x !=y) scanf("%d", &x); else scanf("%d", &y);
(D)  if (x < y) {x++; y++;}

若有以下语句
int x = 3;
do {
    printf("%d\n", x -= 2);
} while (!(--x));
10、则上面程序段  
 正确答案:      

(A)  输出的是1
(B)  输出的是1和-2
(C)  输出的是3和0
(D)  是死循环

11、C语言中while和do-while循环的主要区别是  正确答案:           
(A)  do-while
的循环体至少无条件执行一次
(B)  while的循环控制条件比do-while的循环控制条件严格
(C)  do-while允许从外部转到循环体内
(D)  do-while的循环体不能是复合语句

12、 在C语言中的if语句中,用作判断的表达式为 【 正确答案:
 A 关系表达式
 B 逻辑表达式
 C 算术表达式
 D 任意表达式

13、有输入语句:int a,b,c; scanf("a=%d,b=%d,c=%d", &a, &b, &c); 为使变量a的值为1,b的值为3,c的值为2,
1、从键盘输入数据的正确形式应当是 
 正确答案: (注:#表示空格)
(A)  132<回车>
(B)  1,3,2<回车>
(C)  a=1#b=3#c=2<回车>
(D)  a=1,b=3,c=2<回车>

以下程序的运行结果是     2 3      【 正确答案:

#include <iostream>

using namespace std;

int main() 

{

 int k=2;

 switch(k)

 {

  case 1:cout<<k++;

    break;

  case 2:cout<<k++;

  case 3:cout<<k++;

   break;

  case 4:cout<<k++;

  default:cout<<"Full!";

  }

}

2、给出下述程序的执行结果       8      【 正确答案: 】           

#include <iostream>

using namespace std;

long fib (int x)

{

 switch(x)

 {

  case 0: return 0;

  case 1:

  case 2:  return 1;

 }

 return (fib(x-1)+fib(x-2));

}

int main()

{

 int x=6;

 cout<<fib(x)<<endl;

}

3、程序结果

#include <iostream>

using namespace std;

int main()

{

 int x=4;

 if (x++>5)

 printf("%d\n",x);

 else

 printf("%d\n",x--);

}

第四次实验

 1、以下正确的描述是   正确答案:        

(A)  continue语句的作用是结束整个循环的执行
(B)  只能在循环体内和switch语句体内使用break语句
(C)  在循环体内使用break语句或continue语句的作用相同
(D)  从多层循环嵌套中退出时,只能使用goto语句

2、以下正确的函数声明形式是   正确答案: 】         

(A)  double fun(int x, int y)
(B)  double fun(int x; int y)
(C)  double fun(int x, int y);
(D)  double fun(int x, y);

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、下列关于switch语句和break语句的结论中,正确的是 【 正确答案:
(A)break语句是switch语句中的一部分
(B)在switch语句中可以根据需要使用或不使用break语句
(C)在switch语句中必须使用break语句
(D)break语句是switch语句的一部分

5、以下程序的输出结果是 【 正确答案: 】。
main()
{ int a=-1,b=4,k;
  k = (++a<0)&&!(b--<0);
  printf("%d%d%d\n",k,a,b);
}
(A)104
(B)103
(C)003
(D)004

6、给出下述程序的输出结果  【 正确答案: 】     
 

#include <iostream>

using namespace std;

int main()

{

 int a,b;

 for(a=1,b=1;a<=100;a++)

 {

  if (b>=20) 

   break;

  if(b%3==1) 

  {

   b+=3;

   continue;

  }

  b-=5;

 }

 printf("%d,%d\n",a,b);

}

A:7,22

B:8,22

C:9,22

D:8,19

1、下面程序段的执行结果是           【 正确答案:

int a,b,c,t;
a=1; 
b=2; 
c=2;
while(a<b<c)
{
 t=a; a=b; b=t;
 c--;
}
printf("%d,%d,%d", a, b, c);

2、以下程序的运行结果是           【 正确答案: 】  

#include <iostream>

using namespace std;

int main() 

{

 int k=2;

 switch(k)

 {

  case 1:printf("%d",k++);

    break;

  case 2:printf("%d",k++);

  case 3:printf("%d",k++);

   break;

  case 4:printf("%d",k++);

  default:printf("Full!");

  }

}

3、给出下述程序的输出结果           【 正确答案:

#include <iostream>

using namespace std;

int main()

{

 int x=0;

 char ch='A';

 do{

  switch(ch++)

  {

  case 'A': x++;break;

  case 'B': x--;

  case 'C': x+=2;break;

  case 'D': x=x%2;continue;

  case 'E': x=x*10;break;

  default: x=x/3;

  }

  x++;

 }while(ch<'G');

 printf("x=%d\n",x);

}

4下述程序的输出结果是         【 正确答案: 】          

#include <iostream>

using namespace std;

int main()

{

 int x=3,y;

 do{

  y=x--;

  if(!y)

  {

   printf("*\n");

   continue;

  }

}while(1<=x<=2);

}

5、以下程序的运行结果是           【 正确答案: 】  

#include <iostream>

using namespace std;

int main() 

{

 int x=4;

 if (x++>5)

 printf("%d\n",x);

 else

 printf("%d\n",x--);

}

6有以下程序:
 

#include <iostream>

using namespace std;

int main()

{

 int i=1;

 switch(i)

 {

 case 1:  printf("%d",i++);

 case 2:  printf("%d",i++);

 case 3:  printf("%d",i++);

 case 4:  printf("%d",i++);

   break;

 default:  printf("END");

 }

}

上述程序的输出结果为           【 正确答案:

第五次实验

1、在C++语言中,形参的隐含存储类别是  正确答案:
(A)自动(auto)  
(B)静态(static) 
(C)外部(extern) 
(D)寄存器(register)

2、在一个C++源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是   正确答案: 】         

(A)  extern
(B)  register
(C)  auto
(D)  static

3、设有函数模板

template <class T>

T max(T a,T b)

{

       return  (a>b)?a:b;

}

则下列语句中对该函数模板的错误使用是  正确答案:

(a)max(1,2)        (b)max(2.3,4.5)        (c)max(1,2.3)        (d)max(‘a’,’b’)

4程序输出结果是 【 正确答案:

#include <iostream>

using namespace std;

#define SUB(X,Y) (X)*Y
int main()
{ int a=3,b=4;
  printf("%d\n",SUB(a++,b++));
}
(A)12
(B)15
(C)16
(D)20

5、以下说法中正确的是 【 正确答案: 】。
(A)c++语言程序总是从第一个定义的函数开始执行
(B)在c++语言程序中,要调用的函数必须在main()函数中定义
(C)c++语言程序总是从main()函数开始执行
(D)c++语言程序中的main()函数必须放在程序的开始部分

6在C++语言程序中,以下正确的描述是  正确答案: 】 
 (A)  函数的定义可以嵌套,但函数的调用不可以嵌套
 (B)  函数的定义不可以嵌套,但函数的调用可以嵌套
 (C)  函数的定义和函数的调用均不可以嵌套
 (D)  函数的定义和函数的调用均可以嵌套

7、在C++语言中,调用函数时,下列说法正确的是  【 正确答案:
(A) 实参占有独立的存储单元,形参不占存储单元。
(B) 实参和形参必须共用存储单元。
(C) 实参和形参是否共用存储单元由用户指定。
(D) 实参和形参各自占有独立的存储单元。

8、以下不正确的说法是  正确答案: .
 (A)  在不同函数中可以使用相同名字的变量
 (B)  形式参数是局部变量
 (C)  在函数内定义的变量只在本函数范围内有效
 (D)  函数内定义的变量,在函数调用返回后,其值仍然存在可用

9、请选择下列程序的运行结果 【 正确答案: 】。

#include <iostream> 

using namespace std;

int Try ()

{

 static int x=3;

 x++;

 return (x);

}

int main ()

{

 int i,x;

 for(i=0;i<=2;i++)

  x = Try();

 printf("%d\n",x);

}

(A)3
(B)4
(C)5
(D)6

第六次实验

1、以下各组 选项中,均能正确定义二维数组a的选项是  【 正确答案:
(A) int a[][4];
      int a[2][];
(B) int a(2,3);
      int a[][3]={{0},{0}};
(C) int a[][4]={{0},{0}};
       int a[][4]={{0},{0},{0}};
(D) int a[3][4];
       int a[][4];

2、已知:int i,x[3][3] = { 1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是 【 正确答案: 】。
for(i=0;i<3;i++)
 printf("%d ",x[i][2-i]);
(A)1 5 9
(B)1 4 7
(C)3 5 7
(D)3 6 9

3、如果数组名作为函数调用的实参,则传递给形参的是 【 正确答案: 】。
 A 数组中的全部元素的值
 B 数组中第一个元素的值
 C 数组中元素的个数
 D 数组的首地址

4、对以下说明语句的正确理解是  正确答案:】          
int a[10] = {6, 7, 8, 9, 10};
(A) 
将5个初值依次赋给a[1]至a[5]
(B)  将5个初值依次赋给a[0]至a[4]
(C)  将5个初值依次赋给a[6]至a[10]
(D)  因为数组长度与初值的个数不相同,所以此语句不正确

5以下在任何情况下计算平方数时都不会引起二义性的宏定义是    正确答案:         
(A)  #define POWER(x) x * x
(B)  #define POWER(x) (x) * (x)
(C)  #define POWER(x) (x * x)
(D)  #define POWER(x) ((x) * (x))

6以下程序的运行结果是 【 正确答案: 】。
 #define  A 3.5
 #define S(b) A*b*b
 main()
 {
   int x=1,y=2;
   printf("%4.1f\n",S(x+y));
 }

 A 14.0   B 3   C  7.5   D 10.5

7、若有宏定义:#define INTEGER(x,y) x/y 
则执行以下语句后
int z,a=15,b=100;
z=INTEGER(b,a);
printf("%d\n",z++);
输出结果为  【
 正确答案:
(A) 宏定义非法
(B) 6
(C) 6.666667
(D) 7

8下述对C++语言字符数组的描述中错误的是  正确答案:          
(A)  字符数组可以存放字符串
(B)  字符数组的字符串可以整体输入,输出
(C)  可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
(D)  不可以用关系运算符对字符数组中的字符串进行比较

9、有如下定义:
    int a[3][4][2];
则数组a的第10个元素是  
 正确答案:            
(A)  a[2][1][2]
(B)  a[1][0][1]
(C)  a[2][0][1]
(D)  a[2][2][1]

10、当文件包含预处理命令#include后面的文件名用尖括号(<>)括起来时,寻找被包含文件方式是  【 正确答案:
(A) 先在源程序所在目录中搜索,然后按系统设定的标准方式搜索
(B) 只在当前目录搜索
(C) 只按系统设定的标准方式搜索
(D) 只在源文件所在目录中搜索

以下对二维数组a进行正确的初始化的是 【 正确答案:
(A)int a[2][3] = {{1,2}, {3,4}, {5,6}};
(B)int a[][3] = {1,2,3,4,5,6};
(C)int a[2][] = {1,2,3,4,5,6};
(D)int a[2][] = {{1,2},{3,4}};

11、已知以下程序段, 【 正确答案: 】。
char a[3],b[]="China";
a=b;
printf("%s",a);
(A)
运行后将输出China
(B)运行后将输出Ch
(C)运行后将输出Chi
(D)程序出错

第七次实验

1、如果数组名作为函数调用的实参,则传递给形参的是 【 正确答案: 】。
 A 数组中的全部元素的值
 B 数组中第一个元素的值
 C 数组中元素的个数
 D 数组的首地址

2以下给字符数组str定义和赋值正确的是 【 正确答案:
(A)char str[10]; str = {"China"};
(B)char str[] = "China";
(C)char str[10]; strcpy (str, "abcdefghijklmn");
(D)char str[10] = {"abcdefghigklmn"};

3下述对C++语言字符数组的描述中错误的是  正确答案:          
(A) 
字符数组可以存放字符串
(B)  字符数组的字符串可以整体输入,输出
(C)  可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
(D)  不可以用关系运算符对字符数组中的字符串进行比较

4在定义 int a[2][3]; 之后,对a的引用正确的是 【 正确答案:
(A)a(1,2)
(B)a[1,3]
(C)a[1>2}[!1]
(D)a[2][0]

5下面程序段的运行结果是 【 正确答案: 】。(其中#表示空格)
char a[7]="abcdef",b[4]="ABC";
strcpy(a,b);
printf("%c",a[5]);
(A)#
(B)\0
(C)e
(D)f

6在定义 int a[5][6];后,第10个元素是 【 正确答案:
(A)a[2][5]
(B)a[2][4]
(C)a[1][3]
(D)a[1][5]

1】以下程序的运行结果是            【 正确答案: 】  

#include <iostream>

using namespace std;

int main()

{

 int a[10]={1,2,3,4,5,6,7,8,9,10};

 int k,s,i;

 float ave;

 for (k=s=i=0;i<10;i++)

 {

  if (a[i]%2!=0)

   continue;

  s+=a[i];

  k++;

 }

 if (k!=0)

 {

  ave=s/k;

  printf("%d,%.2f\n",k,ave);

 }

}

2下面程序段的运行结果是            【 正确答案:         
char ch[ ] = "600";
int a, s = 0;
for (a = 0; ch[a] >= '0' && ch[a] <= '9'; a++)
    s = 10 * s + ch[a] - '0';
printf("%d", s);

3以下程序运行后,k的值是           【 正确答案:】         

#include <iostream>

using namespace std;

#define MIN(x, y) (x) < (y)? (x): (y)

int main()

 {

int i = 10, j = 15, k;

    k = 10 * MIN (i, j);

 }

第八次实验

1、若有说明: char *language[] = {"FORTRAN", "BASIC", "PASCAL", "JAVA", "C"};则以下不正确的叙述是  正确答案: 】          
(A)  language+2
表示字符串"PASCAL"的首地址
(B)  *language[2]的值是字母P
(C)  language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串变量的指针
(D)  language包含5个相同长度的数组

2以下正确的说明语句是  正确答案:          
(A)  int *b[] = {1, 3, 5, 7, 9};
(B)  int a[5], *num[5] = {&a[0], &a[1], &a[2], &a[3], &a[4]};
(C)  int a[] = {1, 3, 5, 7, 9}; int *num[5] = {a[0], a[1], a[2], a[3], a[4]};
(D)  int a[3][4], (*num)[4]; num[1] = &a[1][3];

3、若有以下定义,则数值不为3的表达式是    正确答案:          
int x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p1;

(A)  x[3]
(B)  p1 = x + 3, *p1++
(C)  p1 = x + 2, *(p1++)
(D)  p1 = x + 2, *++p1

4、若有下面的程序片断:
void main( )
{
 int n;
char a[10][8];
 ......
 sort(a, n);
 ......
}
则正确的sort函数头部是 
 正确答案:

(A) void sort ( char p[ ][ ], int x );  
(B) void sort ( char p[ ][8], int x );
(C) void sort ( char p[10][ ], int x ); 
(D) void sort ( char **p, int x );

5、以下与 int *q[5]; 等价的定义语句是    正确答案:         
(A)  int q[5] ;
(B)  int *q ;
(C)  int *(q[5]) ;
(D)  int (*q)[5] ;

6、若定义了int i, *p; 则能通过scanf函数给输入项读入数据的程序段是   正确答案:

(A)  p = &i; scanf ( "%d", p );  
(B) p = &i; scanf ("%d", i );
(C)  *p = i; scanf ( "%d", p );  
(D) *p = i; scanf ("%d", &p);

7、若有定义语句 int (*p)(); ,则p的含义是   正确答案:
(A) p是一个函数,该函数返回指向整型数据的指针。
(B) p是一个指向函数的指针,该函数返回整型值。
(C) p是一个指向整型数据的指针变量。
(D) 以上说法都是错误的。

8、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为   正确答案:       

(A)  自动(auto)
(B)  静态(static)
(C)  外部(extern)
(D)  寄存器(register)

9、若有说明: char *language[] = {"FORTRAN", "BASIC", "PASCAL", "JAVA", "C"};则表达式 *language[1] > *language[3] 比较的是   正确答案:        
(A) 
字符F和字符P
(B)  字符串BASIC和字符串JAVA
(C)  字符B和字符J
(D)  字符串FORTRAN和字符串PASCAL

10下面能正确进行字符串赋值,并且能确保字符串以'\0'结尾的操作是  正确答案: 】     
(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);

11若有:
char *p[2][3] = {
"abc", "defg", "hi",
"jklmnop", "qrstuvwxyz", "ABCD"
};
则表达式(*(*(p+1)+1))[7]的值为 
 正确答案:

12设有说明 int (* ptr) [M]; 其中ptr是  正确答案:          
(A)  M个指向整型变量的指针
(B)  指向M个整型变量的函数指针
(C)  一个指向具有M个整型元素的一维数组的指针
(D)  具有M个指针元素的一维指针数组,每个元素都只能指向整型量

13已知int a, *p=&a; 则下列函数调用中错误的是    正确答案: 】        
(A)  scanf("%d", &a);
(B)  scanf("%d", p);
(C)  printf("%d", a);
(D)  printf("%d", p);

14说明语句 int *(*p)();的含义是   正确答案:       
(A) p是一个指向int型数组的指针
(B) p是指针变量,它构成了指针数组
(C) p是一个指向函数的指针,该函数的返回值是一个整型
(D)  p是一个指向函数的指针,该函数的返回值是一个指向整型的指针

15下列不属于C++语言关键字的是 【 正确答案: 】。
(A)default
(B)register
(C)enum
(D)external

16设有下面的程序段:
char s[] = "china";
char *p;
p = s;
则下列叙述正确的是 【
 正确答案:
(A)s和p完全相同
(B)数组s中的内容和指针变量p中的内容相等
(C)s数组长度和p所指向的字符串长度相等
(D)*p与s[0]相等

17、假设已定义double (*sin)();有一个函数的定义如下:
void newprint(double (*f)(), double x)
{
printf("%f", (*f)(x));
}
则正确的调用语句是 【
 正确答案:
(A)newprint(sin, 0.5);
(B)newprint(sin(0.5));
(C)newprint(&sin, 0.5);
(D)newprint((&sin)(0.5));

18、阅读程序,选择程序的输出结果。 【 正确答案:

#include <iostream> 

using namespace std;

int main()

{

 static int a[2][3] = {{1,2,3},{4,5,6}};

 int m, *ptr;

 ptr = &a[0][0];

 m=(*ptr)*(*(ptr+2))*(*(ptr+4));

 printf("%d\n",m);

}

A.15
B.48
C.24
D.
无定值

19、已知:int a[]={1,2,3,4},y,*p = &a[1];则执行语句“y=(*--p)++;”之后,变量y的值为 【 正确答案:
A.1
B.2
C.3
D.4

20、以下程序段的输出是 【 正确答案:】。

static char a[] = "-12345";

int k=0,symbol,m;

if(a[k]=='+'||a[k]=='-')

 symbol=a[k++]=='+'?1:-1;

for(m=0;a[k]>='0'&&a[k]<='9';k++)

 m = m*10+a[k]-'0';

printf("number = %d\n",symbol*m);

(A)number = -12345
(B)number = 12345
(C)number = -10000
(D)number = 10000

21、设 char **s; 以下正确的表达式是 【 正确答案:
(A)s = "computer";
(B)*s = "computer";
(C)**s = "computer";
(D)*s = ’c’;

22、下面程序的运行结果是  【 正确答案: 】.

#include <iostream> 

#include <string.h>

using namespace std;

void fun(char *s)

{

char a[7];

s = a;

strcpy(a, "look");

}

int main()

{

char *p;

fun (p);

puts(p);

}

(A)look###
(B)look
(C)look##
(D)
不确定的值
(选项中的#表示空格)

23、若有函数 max(a, b), 并且已使函数指针变量p指向函数max,当使用指针调用该函数时,正确的调用方法是 【 正确答案: 】.
(A)(*p)max(a, b);
(B)*pmax(a, b);
(C)(*p)(a, b);
(D)*p(a, b);

24已知:char *s="\t\"Name\\Address\n";则s所指的字符串的长度为 【 正确答案: 】。
(A)19
(B)15
(C)18
(D)
说明不合法

25下面关于字符串的说明中,错误的是 【 正确答案:
(A)char str[7]="FORTRAN";
(B)char str[]="FORTRAN";
(C)char *str="FORTRAN";
(D)char str[]={‘F','O','R','T','R','A''N','\0'};

1、函数int min(int *x, int n)计算并返回具有n个元素的数组x中的最小元素的下标(该函数不是递归函数)。请填空(表达式中间不要有空格)。
int min(int *x, int n)
{
  int i=0, j;
  for(j=0; j<n; j++)
    if(x[j] < x[i])
                   【 
正确答案: ;
  return i;
}

2、给出下述程序的执行结果            【 正确答案:          

#include <iostream> 

using namespace std;

int main()  

{

      int a[4] = {1,2,3,4};

      int *p;

      p=&a[2];

      printf("%d ",++*p);

      printf("%d\n",*--p);

3、如果想输出字符串"hello",下列程序是否正确?如果正确,答案处填写正确;如果不正确,答案处填写不正确。           【 正确答案:      

#include <iostream> 

using namespace std;

void func(char *q)

{

           char a[]="hello";

           q=a;

}

int main()  

{

           char *p, b[]="hey";

           p=b;

           func(p);

           cout<<p;

4、给出下述程序的执行结果           【 正确答案:】         

#include <iostream> 

using namespace std;

void swap(int *p, int *q)

{

         int *t;

         t=p;

         p=q;

         q=t;

}

int main()  

{

          int a=10,b=20;

          swap(&a,&b);

          printf("a=%d,b=%d\n",a,b);

5、下面程序的功能是将字符串 s 中的内容按逆序输出,但不改变串中的内容,
请选择填空(答案请填写所选择的两个字母,中间用空格格开,如A A的形式):           【 
正确答案:

#include <iostream> 

using namespace std;

void inverp(char *a)

{

    if (_______________)

        return;

    inverp(a+1);

    printf("%c",______________);

}

int main()

{

    char s[10] = "hello!";

    inverp(s);

}

空 1 :
(A)  *a != '\0'
(B)  *a != NULL
(C)  *a == '\0'
(D)  ! a * == 0

空 2 :
(A)  * (a-1)
(B)  *a
(C)  * (a+1)
(D)  * (--a)

6以下程序的运行结果是            【 正确答案:】  

#include <iostream> 

using namespace std;

char *strc(char *s1,char *s2)

{

 char *p=s1;

 while (*s2!='\0')

 {

  *p++=*s2++;

 }

 return s1;

}

int main()

{

 char s1[30]="computer OK!",s2[]="language",*pt;

 pt=strc(s1,s2);

 cout<<pt<<endl;

}

7、以下程序的运行结果是            【 正确答案:】  

#include <iostream> 

using namespace std;

int main()

{

 int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

 int (*p)[4]=a,i,j,k=0;

 for (i=0;i<3;i++)

  for (j=0;j<2;j++)

   k+=*(*(p+i)+j);

 printf("%d\n",k);

}

  • 54
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值