4.指针考试试卷
来源:互联网 发布:2016年零售业数据 编辑:程序博客网 时间:2024/04/28 01:16
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其代码填入题干后的括号内。每小题2分,共40分)
1、下面有关重载函数的说法中,正确的是(C)
A) 重载函数必须具有不同的返回值类型
B) 重载函数形参个数必须不同
C) 重载函数必须有不同的形参列表
D) 重载函数名可以不同
函数重载的条件:参数类型不同或者参数个数不同。
2、以下选项中能表示合法常量的是(D)
A) '\' B) 1,200 C) 1.5E2.0 D) ‘\007
A选项是一个转义字符,不能识别
B选项中的“,”错误
C表示幂的时候,指数只能是整数,不能是小数
3、若变量已正确定义为int型,要通过语句
cin >> a >> b >> c;
给a赋值1、给b赋值2、给c赋值3,以下输入形式中正确的是(注:□代表一个空格符)( D )
A) □□□1,2,b3<回车>
B) N1,2,MN3<回车>
C) 1, □□□2, □□□3<回车>
D) 1 □ 2 □3<回车>
4、以下选项中,值为1的表达式是(D )
A) ‘\0’-‘0’
B) ’1’-0
C) 1-‘0’
D) 1-‘\0’
‘\0’就是0
‘1’表示的是ASCII码值
5、以下选项中关于常量的叙述错误的是 ( A)
A) 经常被使用的变量可以定义成常量
B) 所谓常量,是指在程序运行过程中,其值不能被改变的量
C) 常量可分为数值型常量和非数值型常量
D) 常量分为整型常置、实型常量、字符常量和字符串常量
6、阅读以下程序
#include <iostream>
using namespace std;
void main ()
{
int case;
float printF;
cout<< “请输入2个数:”
cin>> case >> printF;
cout<< case << printF;
}
该程序在编译时产生错误,其出错原因是( A)
A) 定义语句出错,case是关键字,不能用作用户自定义标识符
B) 定义语句无错,printf不能输出case的值
C) 定义语句无错,scanf不能作为输入函数使用
D) 定义语句出错,printF不能用作用户自定义标识符
“case”是关键字,不能定义为变量
7、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是( D )。
A、k%2 B、k%2==1 C、(k%2)!=0 D、!k%2==1
k%2的值只有两种:0或1,代入数字直接计算即可
8、有以下程序
#include <iostream>
using namespace std;
void main()
{
char a='H';
a = ( a>='A'&&a<='Z')?(a+32):a;
cout<< a << endl;
}
程序运行后的输出结果是(C )
A) A
B) a
C) h
D) H
题目的意义是:大写变为小写,小写直接输出
9、关于变量,以下叙述中错误的是(A )
A) 变量所占的存储单元地址可以随时改变
B) 程序中用到的所有变量都必须先定义后才能使用
C) 由三条下划线构成的符号名是合法的变量名
D) 所谓变量是指在程序运行过程中其值可以被改变的量
地址在运行时是不能改变的
10、以下叙述中正确的是( B)
A) C语言的关系表达式:0<x<10完全等价于:(0<x)&& (x<10)
B) 由&&构成的逻辑表达式与由||构成的逻辑表达式都有"短路"现象
C) 取地址符*的运算级别是最高的
D) 逻辑”或”(即运算符||)的运算级别比算术运算要高
运算符优先级:算数>关系>逻辑
单目>双目>三目
11、对于语句int* pa[5];下列描述中正确的是(D )
A) pa是一个指向数组的指针,所指向的数组是5个int型元素
B) pa是一个指向某数组中第5个元素的指针,该元素是int型变量
C) pa[5]表示某个元素的第5个元素的值
D) pa是一个具有5个元素的指针数组,每个元素是一个int型指针
Int*p[5]:指针数组:是一个数组,数组的每一个元素是指针
Int(*)p[5]:数组指针:是一个指针,这个指针指向的是一个数组
12、已知以下函数声明
int fun(double d, int n)
则下面,与此函数构成重载的是(D )
A)int fun1(double x, int n); B)double fun(double x, int n);
C)double fun1(double x, int n); D)int fun(int x, int n);
函数的重载的条件是:参数个数不同或者参数类型不同
13、以下对一维数组a的正确说明是(D )
A)char a(10); B)int a[ ];
C)intk=5,a[k]; D)char a[ ]={'a' , 'b' ,'c'};
A:括号错误 B:数组的元素个数未知 C:写法错误,a未定义
14、下段程序的运行结果是(B )
void main()
{
char *p,*q;
char str[]="Hello,World\n";
q = p =str; //将指针的首地址赋值给p,再将p的值赋值给q
p++; //p的值向前移一位
cout<< q;
cout<< p;
}
A) H e
B) Hello,World ello,World
C) Hello,World Hello,World
D) ello,World ell,World
15、若有说明语句:int a[2][4];,则对a数组元素的正确引用是( A)
A)a[0][3] B)a[0][4] C)a[2][2] D)a[2][2+1]
题目定义的是2行4列的二维数组;
B:列数越界(4) C:行数越界 (2) D:行数越界(2)
16、已知 int array[10] = {},下面描述正确的是(B )
A) sizeof(array)的值为10 //正解:40=4*10
B) sizeof(*array)的值为4
//正解:意义是数组的第一个元素所占的字节数,int型为4字节
C) sizeof(&array)的值为40 //首地址的地址???
D) sizeof(*&array)的值为4
//正解:“*&”:解引用与取地址相互抵消,sizeof(array)=???
17、若二维数组y有m列,则在y[i][j]前的元素个数为(B )
A) j*m+i B) i*m+j
C) i*m+j-1 D) i*m+j+1
自己定义一个2行2列的数组可直接得出答案B
18、若有说明:"int i,j=7,*p=&i;", 则与i=j;等价的语句是(B )
A) i=*p; //式子的意义与j没有关系
B) *p=*&j;//*p=7;*&”:解引用与取地址相互抵消,7=j
C)i=&j; //i=j的地址
D) i=**p;//二级指针
19、若有以下说明,则数值为6的表达式是(C )
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
A) *p+6 B) *(p+6)
C) *p+=5 D) p-5
A:*p+6 为数组中的第7个元素:7
B) *(p+6) 为数组中的第7个元素:7
C) *p+=5《==》*p=*p+5
D) p-5:越界
20、下面程序的输出结果是( A)
void main()
{
inta[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=k+*(*(p+i)+j);}
Cout<< k << endl;
}
A) 60 B)68
C) 99 D)108
二.填空题(每小题4分,共20分)
1、如果程序中已有定义:int a;
1) 定义一个指向变量a的指针变量ptr的语句是 int *ptr = &a; 。
2) 通过指针变量,将数值6赋值给a的语句是 *ptr = 6; 。
3) 定义一个可以指向指针变量ptr的变量pp的语句是 int**pp = NULL; 。
4) 通过赋值语句将pp指向指针变量ptr的语句是 pp= &ptr; 。
5) 通过指向指针的变量pp,将a的值增加一倍的语句是 a += **pp; 。
2、若有定义 int a[6] = {}; ,sizeof(a)= 24 ,sizeof(&a) = 4 。
3、若有定义有: double x[5];,那么获取指向此一维数组的指针的语句是
double *ptr = x; 。
若有定义有:char x[5][5];,那么获取 指向此二维数组的指针的语句是
char (*ptr)[5] = x; 。
4、若有定义:int a[3][4]={{1, 2}, {0}, {4, 6, 8, 10}};, 则初始化后,a[1][2]得到的初值是 0 ,a[2][1]得到的初值是 6 。
5、语句int (*pa)[5]表示的意思是 一个指向列数为5的二维数组的指针
三.编程题(每小题20分,共40分)
1. 编写一个程序实现功能:将字符串”Computer Science”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完成。
char ch[] = "Computer Science";
char* pch = ch;
int length = 0;
while (ch[length] != '\0') //求长度
{
length++;
}
for (int i = 0; i < length; i+=2) //输出
{
cout << pch[i];
}
2.输入一个字符串数组,求出字符串的长度,然后反转顺序输出。
char ch[100];
cin >> ch;
int length = 0;
while (ch[length] != '\0')
{
length++;
}
cout << "字符串的长度为:" << length << endl;
//反转顺序输出
cout << "反转顺序输出的结果为:";
for (int i = length - 1; i >= 0; i--)
{
cout << ch[i];
}
3.利用数组指针变量求5×3数组各行元素之和。
inta[5][3] =
{
{1, 2, 3 },
{10, 20, 30 },
{5, 6, 7 },
{15, 21, 33 },
{12, 25, 10 }
};
int(*p)[3]= a;
for(int i = 0; i < 5; i++)
{
intsum = 0;
for(int j = 0; j < 3; j++)
{
sum += p[i][j];
}
cout<<"第"<< i + 1 << "行元素之和为:" << sum << endl;
}
4.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:①输入10个数;②进行处理;③输出10个数。所有函数的参数均用指针。
#include<iostream>
usingnamespace std;
//输入
voidInputArray(int* arr,int length)
{
for (int i = 0; i < length; i++)
{
cin >> arr[i];
}
}
//处理
voidProcess(int* arr, int length)
{
int min = arr[0]; //最小数的值
int minIndex = 0; //最小数的索引
int max = arr[0]; //最大数的值
int maxIndex = 0; //最大数的索引
for (int i = 0; i < length; i++)
{
if (min > arr[i])
{
min= arr[i];
minIndex = i;
}
if (max < arr[i])
{
max = arr[i];
maxIndex = i;
}
}
int temp = arr[minIndex];
arr[minIndex] = arr[0];
arr[0] = temp;
temp = arr[maxIndex];
arr[maxIndex] = arr[length-1];
arr[length - 1] = temp;
}
//输出
voidOutputArray(int* arr, int length)
{
for (int i = 0; i < length; i++)
{
cout << arr[i] << "";
}
cout << endl;
}
void main()
{
int arr[10];
int length = sizeof(arr) / sizeof(int);
InputArray(arr, length);
Process(arr, length);
OutputArray(arr, length);
}
- 4.指针考试试卷
- 测试人员考试试卷
- 《诛仙四级考试》试卷
- Linux考试试卷评讲
- 测试人员考试试卷1
- 考试试卷自动生成系统
- 软件工程导论考试-试卷7
- 软件工程导论考试-试卷6
- 软件工程导论考试-试卷4
- 河北省大学生计算机一级考试模拟试卷
- 测试人员考试试卷(四套)
- 2008年招录老婆统一考试试卷
- 全国女生录老公统一考试试卷
- 2009年招录老婆全国统一考试试卷
- 全国男生录取老婆统一考试试卷
- Java 二级考试试卷汇编纠错
- C++考试及答案(试卷一)
- 兰州大学数理统计数值分析考试ab试卷
- hibernate FetchType和FetchMode
- LeetCode 714 Best Time to Buy and Sell Stock with Transaction Fee
- Linux里面常用的几个解压缩指令。
- Python之模块
- 递归算法
- 4.指针考试试卷
- 使用阿里云redis搭建电商秒杀系统
- nitoj_113_强制类型转换略坑
- Ubuntu中apt-get install安装软件,显示“E:无法定位软件包”
- 第14章-C++中的代码重用
- 【PHP自学笔记】第六章 Web技术
- 怎么彻底删除 免安装版的mysql
- 从零开始学C++之运算符重载(一):以成员函数方式重载、以友元函数方式重载
- 数据预处理之scaling