还有一周就要期末了!快把学校的题库做一遍吧 ,说不定期末原题就在其中!!!
(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);
}