当前位置:文档之家› C++课本习题答案1-5

C++课本习题答案1-5

C++课本习题答案1-5
C++课本习题答案1-5

《面向对象程序设计(C++版)》习题答案

董正言

本文档中包含书中所有习题的答案,其中的程序都在VC++6.0系统中通过编译,并可以正确运行。

第一章

1.1 面向对象程序设计方法有哪些基本特征?

答:面向对象程序设计方法的基本特征有:抽象、封装、继承、多态。

1.2从着手开始编写一个程序,到形成一个可执行文件,通常需要经过哪几个步骤?答:一个由高级语言编写的程序从开始编码到可以运行需要经过编辑、编译和链接几步。

1.3C++程序的入口点是什么?

答:C++程序的入口点是main函数。

第二章

2.1 在C++程序中,以下_C_是合法的标识符。

A、Cat.100

B、321day

C、_100num

D、int

2.2 在基于32位系统的VC++6.0编译器中,以下数据类型各占多少个字节?

A、char

B、int

C、float

D、long

E、double

答:在基于32位系统的VC++6.0编译器中,char型数据为1个字节,int型数据为4个字节,float型数据为4个字节,long型数据为4个字节,double型数据为8个字节。

2.3C++系统采用什么编码存储字符数据,该编码的长度是多少?

答:C++系统采用ASCII码存储字符数据,该编码的长度是1个字节。

2.4 写出定义以下变量的程序语句:

1、ASCII码值为65的字符型变量

2、值为10000的无符号整型变量

3、一个双精度浮点型变量

解:1:char ch=65;

2:unsigned int i=10000;

3:double f;

2.5、在程序中经常出现的标识符cout和cin是什么?它们有什么功能?

答:cout是C++系统预定义的标准输出流对象,代表标准输出设备---显示器,在控制台应用程序中可以利用它向显示器输出字符串。cin是C++系统预定义的标准输入流对象,代表标准输入设备---键盘,在控制台应用程序中可以利用它从键盘输入数据。

2.6 程序中可能出现各种形式的数值常量,请写出以下语句的输出结果:

1、cout<<0144;

2、cout<<0x64;

3、cout<<0xB3L;

4、cout<<1234E-2;

5、cout<<(char)65;

解:几条语句的输出结果如下:

1、100

2、100

3、179

4、12.34

5、A

2.7 C++中如何定义符号常量,和C语言定义符号常量的方法有什么不同?

答:C++使用关键字const定义符号常量,而C语言使用预编译指令#define定义符号常量。由关键字const定义的符号常量具有数据类型,在程序运行期间占据存储空间;而由预编译指令#define定义的符号常量没有数据类型,在程序运行期间也不占据存储空间。

2.8 假设var1和var2都是整型写出以下C++表达式的值。

1、11/3

2、11%3

3、var1=(var2=10)+5

4、var1=(var2=10)++

解:上面表达式的值分别是:

1、3

2、2

3、15

4、10

2.9 写出下面语句段的输出结果。

int i=5,j=10;

i*= --j;

cout<<"i="<

解:上面程序段的输出为:i=45

2.10 假设i,j,k是整型变量,而且i=5,j=10,k=20,写出下列表达式的值。

1、ik

2、ik

3、!i>k

4、!(i>j)&&(j>k)

解:上面表达式的值分别是:

1、0(或false)

2、1(或true)

3、0(或false)

4、0(或false)

2.11假设i和j是整型变量,i的值为10,j的值为3。请写出下列语句的输出结果。

1、cout<<(i & j) ;

2、cout<<(i | j) ;

3、cout<<(i ^ j) ;

4、cout<<(i << j) ;

5、cout<<(i >> j) ;

6、cout<<(~i | i) ;

解:上面语句的输出分别为:

1、2

2、11

3、9

4、80

5、1

6、-1

2.12请写出下列语句的输出结果。

cout<<"Hello!\r"<<"Welcome to C++!\n";

解:上面语句的输出为:Welcome to C++!

2.13假设i和j是整型变量,执行下列语句后,i的值是多少?

i =(j = 10, j * 3) ;

解:执行上面的语句后,i的值为30。

2.14 假设i和j是整型变量,j的值为10,则执行下列语句后,i的值是多少?

i=j<10?1:2 ;

解:执行上面的语句后,i的值为2。

2.15下面表达式的结果是什么类型?

1、(10L+20)*0.5

2、(10L+20)*(1/2)

3、static_cast(1.234)*10L

解:上面表达式的结果分别是:

1、15.0

2、0

3、12.34

第三章

3.1 编写一段程序,提示用户输入一个英文字母,使用if语句判断用户输入的字母是大写字母还是小写字母,然后输出相关信息。

解:程序代码如下:

#include

using namespace std;

void main()

{

char ch;

cout<<"请输入一个大写或小写的英文字母"<

cin>>ch;

if(ch>='A'&&ch<='Z')

cout<<"您输入的是大写字母"<

if(ch>='a'&&ch<='z')

cout<<"您输入的是小写字母"<

}

3.2 以下程序段输出若干行字符串“How are you!”,行数由用户的输入的整数决定,如

用户输入0,则输出一行字符串“Hello!”,请找出下面程序中存在的语法错误。

int n;

cout<<"请输入一个整数:";

cin>>n;

if(n=0)

cout<<"Hello!\n";

else

for(int i=0;i

cout<<"How are you!\n";

解:上面程序段中共有2处语法错误。第一处是语句if(n=0)应改为if(n==0);第二处是循环控制语句for后面不应该有分号。

3.3编写一段程序,连续输入若干个学生的考试成绩,根据成绩判断其所在的等级,并输出

相关信息。判断成绩等级的规则如下:

例如,如果第3个学生的成绩为82分,则应输出一行字符串“学生3的成绩为B等”。

要求使用while循环和switch选择语句。

解:程序代码如下:

#include

using namespace std;

void main()

{

int numbers;

float score;

cout<<"请输入学生人数";

cin>>numbers;

for(int i=1;i<=numbers;i++)

{

cout<<"请输入第"<

cin>>score;

if(score>=90)

cout<<"第"<

else if(score>=80)

cout<<"第"<

else if(score>=70)

cout<<"第"<

else if(score>=60)

cout<<"第"<

else

cout<<"第"<

}

}

3.4编写程序,输出下面的由星号组成的倒三角形。

*********

*******

*****

***

*

解:程序代码如下:

#include

using namespace std;

void main()

{

for(int i=1;i<=5;i++)

{

for(int j=0; j<10+i; j++)

cout<<' ';

for(int k=1;k<=(10-(2*i-1));k++)

cout<<'*';

cout<

}

}

3.5请举例说明break语句和continue语句各自的用法和区别。

答:break语句用在switch语句或循环语句之中,作用是使程序的控制流立即跳出包含它的switch语句体或包含它的最内层循环语句体,接着执行后面的语句。而continue语句只能用在循环语句中,其作用是使程序不在执行本次循环位于continue语句之后的循环体内的语句,但并不跳出循环体,而是跳转到循环开始处并判断是否应进行下一次循环。请同学自行举例验证。

第四章

4.1编写程序,声明并初始化一个包含10个元素的整型数组,找出其中的最大值。

解:程序代码如下:

#include

using namespace std;

void main()

{

int array[10]={9,51,33,7,48,76,51,64,25,17};

int max=0,maxindex;

for(int i=0;i<10;i++)

if(max

{

max=array[i];

maxindex=i;

}

cout<<"数组中第"<

}

4.2编写程序,声明并初始化一个4行3列的二维单精度浮点型数组,找出其中的最大值。解:程序代码如下:

#include

using namespace std;

void main()

{

float array[4][3]={{52.4f,23.9f,123.6f},

{81.5f,247.2f,77.0f},

{52.5f,187.0f,225.4f},

{78.4f,63.2f,111.5f}};

float max=0.0;

int rindex,lindex;

for(int i=0;i<4;i++)

for(int j=0;j<3;j++)

{

if(max

{

max=array[i][j];

rindex=i;

lindex=j;

}

}

cout<<"二维数组中第"<

}

4.3编写程序,将一个有序数组按逆序存放,例如:若原数组为1、2、4、5、8、10,则逆

序后的数组为10、8、5、4、2、1。

解:程序代码如下:

#include

using namespace std;

void main()

{

int array[6]={1,2,4,5,8,10};

int i=0,j=5;

while(i

{

int temp=array[i];

array[i]=array[j];

array[j]=temp;

i++;

j--;

}

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

cout<<"array["<

}

4.4编写程序,定义一个字符数组,用来接收用户从键盘输入的字符串,首先去掉其中的非

字母字符,然后将其中所有的大写英文字母转换成与其相应的小写字母,并将转换后的结果输出。

解:程序代码如下:

#include

using namespace std;

void main()

{

char array[50];

cout<<"请输入一行字符串(要求少于50个字符):";

cin>>array;

int i=0;

while(array[i])

{

if(array[i]<'A'||(array[i]>'z'&&array[i]<'a')||array[i]>'z')

{

int k=i,j=i+1;

while(array[j])

array[k++]=array[j++];

array[k]='\0';

}

else

i++;

}

i=0;

while(array[i])

{

if(array[i]>='A'&&array[i]<='Z')

array[i]='a'+(array[i]-'A');

i++;

}

cout<

}

4.5请找出下面程序段中存在的错误。

int *p;

*p=100;

cout<<*p<

解:在上面的程序段中,定义了指针变量p后,应该使它指向某个确定的变量,然后才能使用该指针操作它所指向的变量。否则,指针变量中是一个随机地址,如果直接使用它,容易引发实时错误。所以上面的程序应该改为:

int i, *p;

p=&i;

*p=100;

cout<<*p<

4.6编写程序,首先定义并初始化一个一维整型无序数组,然后对该数组排序。要求排序过

程中使用指针来操作数组。

解:程序代码为:

#include

using namespace std;

void main()

{

int array[10]={12,3,34,64,9,56,21,76,5,1};

int *ptr;

for(int i=9;i>0;i--)

{

ptr=array;

for(int j=1;j<=i;j++)

{

if(*ptr>*(ptr+1))

{

int temp=*ptr;

*ptr=*(ptr+1);

*(ptr+1)=temp;

}

ptr++;

}

}

ptr=array;

for(int k=0;k<10;k++)

cout<<*ptr++<<" ";

cout<

}

4.7编写程序,首先定义并初始化一个整型二维数组用来表示一个4行×4列的矩阵,然后

将上三角矩阵中的元素和与其相应的下三角阵中的元素相交换,并输出交换后的矩阵。

要求使用指针操作数组元素。

解:程序代码如下:

#include

using namespace std;

void main()

{

int array[4][4]={{0,1,2,3},

{4,5,6,7},

{8,9,10,11},

{12,13,14,15}

};

int (*ptr)[4];

ptr=array;

for(int i=0;i<4;i++)

{

for(int j=0;j<4;j++)

{

if(*(*(ptr+i)+j)<10) cout<<' ';

cout<<*(*(ptr+i)+j)<<' ';

}

cout<

}

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

for(int j=0;j<4;j++)

if(i

{

int temp=*(*(ptr+i)+j);

*(*(ptr+i)+j)=*(*(ptr+j)+i);

*(*(ptr+j)+i)=temp;

}

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

{

for(int j=0;j<4;j++)

{

if(*(*(ptr+i)+j)<10) cout<<' ';

cout<<*(*(ptr+i)+j)<<' ';

}

cout<

}

}

4.8找出下面程序段中存在的错误,并进行修改。

char *chptr;

cin>>chptr;

cout<

解:此题程序段之中的错误同4.5题程序段中的错误类型相同,即定义了指针之后,必须使该指针指向一个确定的变量或数组(确定的内存地址)之后,才能使用该指针操作它所指向的变量或数组。否则,该指针中存放的是一个随机地址,直接使用它会引发严重的实时错误,造成严重的后果。所以,上面的程序段应该改为:

char str[50];

char *chptr;

chptr=str ;

cin>>chptr;

cout<

4.9编写程序,首先从键盘输入两个字符串,然后比较两个字符串的大小。要求使用指针操

作字符串。

解:程序代码如下:

#include

using namespace std;

void main()

{

char str1[50],str2[50];

char *sp1,*sp2;

sp1=str1;

sp2=str2;

cout<<"请输入第一个字符串:";

cin>>sp1;

cout<<"请输入第二个字符串:";

cin>>sp2;

while(*sp1&&*sp2)

{

if(*sp1>*sp2)

{

cout<<"字符串"<

break;

}

else if(*sp1<*sp2)

{

cout<<"字符串"<

break;

}

else

{

sp1++;

sp2++;

}

}

if(!*sp1)

cout<<"字符串"<

else if(!*sp2)

cout<<"字符串"<

}

4.10请写出下面程序段的输出结果。

int i;

int &j=i;

j=100;

cout<

解:上面程序段的输出为:100

4.11编写程序,动态创建一个一维字符数组,数组的长度由用户输入,从键盘输入一行字

符串存放到该数组中,并判断是否是回文字符串。回文字符串是指从左向右度读和从右向左读字符串的内容相同。例如,字符串qWeRReWq就是一个回文字符串。

解:程序代码如下:

#include

#include

using namespace std;

void main()

{

int len;

cout<<"请输入一个整数,作为字符数组的长度:";

cin>>len;

char *start,*sp1,*sp2;

sp1=new char[len];

start=sp1;

cout<<"请输入一个字符串(要求字符个数少于"<

cin>>sp1;

int aclen=strlen(sp1);

sp2=sp1+aclen-1;

while(sp1

{

if(*sp1!=*sp2) break;

sp1++;

sp2--;

}

if(sp1

cout<

else

cout<

}

4.12编写程序,声明一个表示颜色的枚举(enum)类型Color,包含白(White)、红(Red)、黄

(Yellow)、蓝(Blue)、绿(Green)五种颜色。定义一个Color类型的变量col,在屏幕上输出字符串“请输入大写字母选择您最喜欢的颜色:W(白)、R(红)、Y(黄)、B(蓝)、G(绿)”,然后根据用户输入的字母,给变量col赋值,再根据col的值输出相关信息。例如,如果用户输入大写字母‘R’,则col的值应为Red,并输出字符串“您最喜欢红色!谢谢!”;

若用户输入的大写字母不在上面的集合中,则输出字符串“对不起,这里没有您喜欢的颜色!”。

解:程序代码如下:

#include

using namespace std;

enum Color {White,Red,Yellow,Blue,Green};

void main()

{

enum Color col;

char ch;

cout<<"请输入大写字母选择您最喜欢的颜色:\nW(白)、R(红)、Y(黄)、B(蓝)、G(绿):";

cin>>ch;

switch(ch)

{

case 'W':

col=White;

break;

case 'R':

col=Red;

break;

case 'Y':

col=Yellow;

break;

case 'B':

col=Blue;

break;

case 'G':

col=Green;

break;

default:cout<<"对不起,这里没有您喜欢的颜色!"<

}

switch(col)

{

case White:

cout<<"您最喜欢白色!谢谢!"<

break;

case Red:

cout<<"您最喜欢红色!谢谢!"<

break;

case Yellow:

cout<<"您最喜欢黄色!谢谢!"<

break;

case Blue:

cout<<"您最喜欢蓝色!谢谢!"<

break;

case Green:

cout<<"您最喜欢绿色!谢谢!"<

break;

}

}

4.13编写程序,首先定义一个表示公司雇员的结构(struct)类型employee,包含5个成员,

分别是:字符数组name[20]用来存放雇员的姓名,int型变量empNo用来存放雇员的员工号,float型变量salary用来存放雇员的月薪,float型变量hourlyPay用来存放每小时工作的酬金,整型变量workHours用来存放雇员每月工作的总时间(以小时为单位)。

其中salary=hourlyPay×workHours 。创建一个employee类型的数组表示若干个公司员工,分别从键盘输入每个员工的姓名和月工作时数,员工的工号根据输入的顺序自动生成,并假设员工每小时工作的酬金数为50元,根据上面的公式计算出每个员工的月薪。最后分别输出每个员工的月薪总额。例如“第001号员工李强的月薪为2000元”。解:程序代码如下:

#include

using namespace std;

struct employee

{

char name[20];

int empNo;

float salary;

float hourlyPay;

int workHours;

};

void main()

{

int nums;

cout<<"请输入员工的人数:";

cin>>nums;

struct employee *emp;

emp=new employee[nums];

for(int i=0;i

{

cout<<"请输入第"<

cin>>emp[i].name;

cout<<"请输入第"<

cin>>emp[i].workHours;

emp[i].empNo=1001+i;

emp[i].hourlyPay=50.0;

emp[i].salary=emp[i].hourlyPay*emp[i].workHours;

}

for(i=0;i

cout<

}

第五章

5.1 程序设计中使用函数的主要作用是什么?

答:使用函数的主要作用包括以下几点:

1.可以避免在编程时重复输入代码,提高了编程效率;

2.避免大段相同的代码在程序中多次重复出现,使程序的体积变小,节省了存储空间;3.符合软件工程的模块化编程原理,使程序易于修改和维护。例如,如果要修改某个函数,则只要函数的原型保持不变,就可以使函数的调用形式保持不变,那么程序的其他部分(包括调用了该函数的部分)就可以不做任何改动。即使是修改了函数原型,在程序的其他部分,也只需简单地修改函数的调用语句,较之不使用函数,修改的效率也会大幅提高。

5.2什么是形式参数?什么是实际参数?它们有什么联系?

答:调用一个函数时,可以通过向它传递参数来把函数运行所需的数据传递到函数内部。出现在函数定义中的参数(或者说函数内部使用的参数)称为形式参数。而调用函数时作为参数向函数传递的数据称为实际参数。发生函数调用时,实际参数的值或引用被传递给函数中的形式参数。

5.3 函数的返回值有什么作用?怎样声明没有返回值的函数?

答:函数返回值的作用是,当函数运行结束后,把函数的执行结果传递给调用它的程序。C++使用关键字void来声明没有返回值的函数。

5.4 什么是主调函数?什么是被调函数?它们有什么联系?

答:如果在函数A中调用了函数B,则称函数A为主调函数,而称函数B为被调函数,它们之间的关系是相对而言的,即一个被调函数中也可能调用其他函数甚至调用它自身,对于被它调用的函数而言,它就是主调函数。反之亦然。另外主调函数可以通过参数向被调函数传递数据,而被调函数也可以通过返回值向主调函数传递数据。

5.5 什么是函数原型?为什么要使用函数原型?

答:函数原型是对函数的声明,在一个源程序文件中,如果函数的定义出现在函数调用语句之后,则在函数调用语句之前应该使用函数原型来声明该函数;C++的源程序是多文件结构的,如果一个源程序文件中调用了在另一个源文件中定义的函数,则在调用语句之前也需要用函数原型声明该函数。函数原型的作用是告诉编译器被调函数的调用形式,以便编译器在函数调用时进行参数类型检查。

5.6 声明一个函数add,实现两个整数相加,并返回它们的和。

解:函数代码如下:

int add(int num1,int num2)

{

return num1+num2;

}

5.7 编写程序,在main函数中从键盘输入两个整数,调用上题中编写的add函数计算并返回两个数的和。

解:程序代码如下:

#include

using namespace std;

int add(int num1,int num2)

return num1+num2;

}

void main()

{

int i1,i2;

cout<<"请输入两个整数:";

cin>>i1>>i2;

cout<

cin>>ch;

ptriangle(ch);

}

}

5.10编写一个函数,用来计算并返回矩形的面积。该函数有两个float型的形参,分别表示

矩形的长和宽。

解:函数代码如下:

float area(float wid,float hei)

{

return wid*hei;

}

5.11编写一个函数intfrac,该函数的功能是将一个float型形参切分成整数部分和小数部分。

在main函数中从键盘输入一个float型变量var,以var为实参调用intfrac函数,函数调用结束返回到main函数后,再分别输出变量var的整数部分和小数部分。

解:程序代码为:

#include

using namespace std;

int intfrac(float &varin)

{

int inti=varin;

varin=varin-inti;

return inti;

}

void main()

{

float var;

int inti;

cout<<"请输入一个实数:";

cin>>var;

inti=intfrac(var);

cout<<"整数部分为:"<

cout<<"小数部分为:"<

}

5.12声明一个存储学生信息的结构体类型Student,其中包含表示学生姓名、学号、性别、

年龄的成员name、num、sex和age。编写一个函数InFromKeyB,用来从键盘向结构体Student型的变量输入一个学生的信息。在main函数中定义一个包含10个元素的Student型数组,并分别以每个数组元素为参数调用函数InFromKeyB输入学生的信息。

最后在main函数中输出学生的信息,检查输入是否正确。

解:程序代码如下:

#include

#include

using namespace std;

struct Student

{

char name[20];

int num;

char sex;

int age;

};

void InFromKeyB(Student &one)

{

cout<<"请输入学生姓名:";

cin>>https://www.doczj.com/doc/d113315209.html,;

cout<<"请输入该学生的学号:";

cin>>one.num;

cout<<"请输入学生的性别('m'代表男性,'f'代表女性):";

cin>>one.sex;

cout<<"请输入学生的年龄:";

cin>>one.age;

}

void main()

{

Student stu[10];

for(int i=0;i<10;i++)

InFromKeyB(stu[i]);

cout<<" 姓名"<<" 学号"<<" 性别"<<" 年龄"<

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

cout<

<<(stu[i].sex=='m'?"男":"女")<

}

5.13怎样声明内联函数?内联函数和非内联函数的区别是什么?

答:C++使用关键字inline来声明内联函数。内联函数和非内联函数的区别是:当发生函数调用时,系统的处理方式不同,处理内联函数时,编译器并不对函数进行实际的调用,而是把函数内部的指令嵌入到主调函数中发生函数调用的地方,以取代函数调用语句。对于那些体积非常小而又被经常调用的函数而言,这样做可以避免函数调用时所付出的时间和空间代价,且不会使程序的体积显著增大。

5.14编写一个递归函数,将一个任意位数的整数的各位按逆序输出。例如输入整数1234,

应输出字符串“4321”。

解:程序代码如下:

#include

using namespace std;

void outbackform(int n)

{

if(n!=0)

{

cout<

outbackform(n/10);

}

}

void main()

{

int num;

cout<<"请输入一个大于10的整数:";

cin>>num;

outbackform(num);

cout<

}

5.15 编写一个递归函数Gcd ,返回整数X 和Y 的最大公约数。Gcd 函数的递归定义如下:

解:程序代码如下:

#include

using namespace std;

int Gcd(int x,int y)

{

if(y==0)

return x;

else

return Gcd(y,x%y);

}

void main()

{

int i,j;

cout<<"请输入两个正整数:";

cin>>i>>j;

if(i>=j)

cout<<"整数"<

else

cout<<"整数"<

}

5.16 编写一个函数strcon 。函数的原型如下:

void strcon(char *sp1, char *sp2);

该函数将字符串sp2连接到字符串sp1之后,连接后的字符串存放在sp1中。要求在 (如果Y 等于0)

(如果Y 不等于0)

main函数中输入和输出字符串。

解:程序代码如下:

#include

#include

using namespace std;

void strcon(char *sp1, char *sp2)

{

int len=strlen(sp1);

char *spt=sp1+len;

while(*sp2)

{

*spt=*sp2;

spt++;

sp2++;

}

*spt='\0';

}

void main()

{

char str1[80],str2[30];

cout<<"请输入字符串:";

cin>>str1;

cout<<"请输入字符串:";

cin>>str2;

strcon(str1,str2);

cout<<"两个字符串连接后的结果为:"<

}

5.17编写一个函数strbac。函数原型如下:

void strbac(char *sp);

该函数将字符串sp逆序排列。要求在main函数中输入和输出字符串。解:程序代码如下:

#include

#include

using namespace std;

void strbac(char *sp)

{

char tech,*sp1;

int len;

len=strlen(sp);

sp1=sp+len-1;

while(sp

{

tech=*sp;

*sp=*sp1;

*sp1=tech;

sp++;

sp1--;

}

}

void main()

{

char str[50];

cout<<"请输入一个字符串:";

cin>>str;

cout<

strbac(str);

cout<

}

5.18以下声明的函数原型是否正确?为什么?

void fun(int v1=1,float v2,float v3=2.0);

答:不正确。因为必须按照从右向左的顺序为函数的参数声明默认值。

5.19找出下面函数中的错误,并进行修改。

int* fun()

{

int i=100;

return &i;

}

解:函数的返回值不能是auto型局部变量的地址,因为这种变量被保存在称为“栈”的存储空间中,随着函数运行结束,在“栈”中为函数分配的存储空间将被系统自动回收,在函数中定义的所有auto型局部变量也就随之被销毁,所以不能向主调函数返回它们的地址。但可以返回在函数中使用操作符new动态创建的变量的地址,这种变量只要不用操作符delete释放其存储空间,它就一直存在。所以上边的函数可以改为:

int* fun()

{

int * pi=new int(100);

return pi;

}

5.20编写程序,使用函数指针调用习题5.6中声明的add函数。

解:程序代码如下:

#include

using namespace std;

int add(int num1,int num2)

{

return num1+num2;

}

void main()

{

int (*ptrfun)(int,int);

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (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、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是( D )。 A. 软件是一种逻辑实体,具有抽象性 B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显着特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于( D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。

C经典习题答案

1.在类作用域中能够通过直接使用该类的()成员名进行访问。 A. 私有 B. 公用 C. 保护 D. 任何 答案:D 2.小数类型和浮点类型都可以表示小数,正确说法:( ) A. 两者没有任何区别 B. 小数类型比浮点类型取值范围大 C.小数类型比浮点类型精度高 D. 小数类型比浮点类型精度低 答案:C 3.能作为C#程序的基本单位是( )。 A. 字符 B. 语句 C. 函数 D. 源程序文件 答案:B 4. 可用作C#程序用户标识符的一组标识符是( )。 A. void define +WORD B. a3_b3 _123 YN C. for -abc Case D. 2a DO sizeof 答案:B 5.引用类型主要有4种:类类型、数组类型、接口类型和()。 A.对象类型 B.字符串类型 C.委托类型 D.整数类型 答案:C 6.使用Dirctory类的下列方法,可以获取指定文件夹中的文件的是(). A.Exists() B.GetFiles() C.GetDirectories() D.CreateDirectory() 答案:B 7.加载窗体时触发的事件是( )。 A. Click B.Load C.GotFoucs D.DoubleClick

答案:B 8.改变窗体的标题,需修改的窗体属性是( )。 A. Text B. Name C.Title D. Index 答案:A 9.在接口的成员中,不能包含( ). A.属性 B.方法 C.事件 D.常量 答案:D 10.在C#中定义接口时,使用的关键字是( )。 A.interface B.: C.class D.overrides 答案:A 1.当在程序中执行到语句时,将结束所在循环语句中循环体的一次执行。 答案:continue 2.元素类型为double的2行5列的二维数组共占用字节的存储空间。 答案:80 3.C#数组类型是一种引用类型,所有的数组都是从System命名空间的类继承而来的引用对象。 答案:object 4.枚举是从System. 类继承而来的类型。 答案:Enum 5.一般将类的构造方法声明为访问权限。如果声明为private,就不能创建该类的对象。 答案:public或公有 6.类中声明的属性往往具有get()和两个函数。 答案:set() 7.对于方法,参数传递分为值传递和两种。

c 试题及答案

一、单项选择题 1、下列哪个类型的对象是https://www.doczj.com/doc/d113315209.html,在非连接模式下处理数据内容的主要对象? (D ) A. Command B. Connection C. DataAdapter D. DataSet 2、枚举类型是一组命名的常量集合,所有整形都可以作为枚举类型的基本类 型, 如果类型省略,则定义为( A )。 A. int B. sbyte C. uint D. ulong 3、创建数据库连接使用的对象是( A )。 A. Connection B. Command C. DataReader D. DataSet 4、C#中导入某一命名空间的关键字是( A )。 A. using B. use C.import D. include 5、一般情况下,异常类存放在什么命名空间中?( B )。 A. 生成异常类所在的命名空间 B. System.Exception命名空 间 C. System.Diagnostics命名空间 D. System命名空间 6、若将数据库中的数据填充到数据集,应调用SqlDataAdapter的( C )方 法。 A. Open B. Close C. Fill D. Update 7、若将数据集中所作更改更新回数据库,应调用SqlAdapter的(A )方法。 A. Update B. Close C. Fill D. Open 8、在使用FileStream 打开一个文件时,通过使用FileMode 枚举类型的( A ) 成员,来指定操作系统打开一个现有文件并把文件读写指针定位在 文件尾部。 A. Append B. Create C. CreateNew D. Truncate 9、在菜单项File中,为将F设为助记符,应将该菜单项的Text属性设置为 (B )。 A. @File B.&File C. %File D._File 10、指定操作系统读取文件方式中的FileMode .Create的含义是( D)。 A. 打开现有文件 B. 指定操作系统应创建文件,如果文件存在,将出现异常 C. 打开现有文件,若文件不存在,出现异常 D. 指定操作系统应创建文件,如果文件存在,将被改写 11、枚举类型是一组命名的常量集合,所有整形都可以作为枚举类型的基本类 型,如果类型省略,则定义为( D )。 A. uint B. sbyte C. ulong D. int 12、当运行程序时,系统自动执行启动窗体的( C )事件。 A. Click B.DoubleClick C. Load D. Activated

C语言程序设计试卷含答案

说明:请将单项选择题(1~50空)的正确答案涂写考试答题卡,将填空(51~75空)等文字题按【】中的序号写入下面文字答题卡,否则不得分。 二、阅读程序题文字答题卡:(每空2分,共24分) 三、完善程序填空题文字答题卡:(每空2分,共26分) 一、单项选择题(每空1分,共50分) 请将正确答案按【】中的序号写入答题卡,否则不得分。 1.在C语言中,一条语句以【】字符作为结束符。

A),B);C).D)无符号2.以下4组标识符中,能作为变量名使用的是【】。 A)age,struct,s1 B)2A,b_3,main C)ELSE,a[2],m123 D)_abc,INT,abcd 3.判断char型变量ch是否为数字字符的正确表达式为【】。 A)0<=ch<=9 B)'0'<=ch<='9' C)(0<=ch)&&(ch<=9)D)('0'<=ch)&&(ch<='9') 4.已知小写字母a的ASCII码值是97,大写字母A的ASCII码值是65,下列语句中不能输出大写字母B的是【】。 A)putchar('A'+1);B)putchar('b'-32); C)putchar(98-32);D)putchar(B); 5.空字符串的长度是【】。 A)0B)1 C)2 D)3 6.整型变量a定义后赋初值的结果是【】。 int a=2.8*6; A)12 B)16C)17 D)18 7.若有以下说明语句,则该语句【】。 char a='\077'; A)使a的值包含1个字符B)使a 的值包含4个字符 C)使a的值包含3个字符D)说明不合法 8.下面的程序结果为:【】。 main() { int x=023; printf("%d\n",--x); } A)17 B)18C)23 D)24 9.源程序执行后,屏幕上显示【】。 main() { int a; float b; a=4; b=9.5; printf("a=%d,b=%4.2f\n",a,b); } A)a=%d,b=%f\n B)a=%d,b=%f C)a=4,b=9.50 D)a=4,b=9.5 10.设int x=10;x+=x%=(-6)+4;则x= 【】。 A)0B)16 C)18 D)10 11.C语言的下列运算符中,运算对象必须是整型数据的是【】。

大学C语言考试试题及答案

精选考试类文档,如果您需要使用本文档,请点击下载! 祝同学们考得一个好成绩,心想事成,万事如意! 大学C语言考试试题及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串

选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

C语言经典例题和答案

一、求一个任意边长的矩形面积。 #include void main() {int w,h,sum; scanf("%d%d",&w,&h); sum=w*h; printf("area=%d\n",sum); } 二、求一个任意半径的圆的面积及周长。 #define PI 3.14159 #include void main() {float r,area,c; scanf("%f",&r); area=PI*r*r; c=2*PI*r; printf("area=%f\ncircle=%f\n",area,c); } 三、已知:w=5, y=4, z=2, 求表达式:w*y/z的值,并输出。 ##include void main() { int w,y,z,r; w=5; y=4; z=2; r=w*y/z; printf("%5d",r); } 一、从键盘上输入三个数,求出其中的最大值,并输出。 #include void main() {int a,b,c,max; scanf("%d%d%d",&a,&b,&c); max=a; if(max

#include #define PI 3.14159 #include void main() {float a,b,sum; a=30*PI/180; b=60*PI/180; sum=sin(a)+sin(b)+cos(a)+cos(60); printf("total=%f\n",sum); } 三、比较两个数的大小。如果x大于y,则输出:x>y,否则输出:x void main() {int x,y; scanf("%d,%d",&x,&y); if(x>y) printf("x>y\n"); else printf("x void main() {int a,b,c,t; scanf("%d%d%d",&a,&b,&c); if(a>b) { t=b; b=a; a=t; } if(a>c) {t=a; a=c; c=t; } if(b>c) {t=b;b=c;c=t;} printf("%3d%3d%3d\n",a,b,c); }. 二、求自然数1~10之和。。 #include void main()

C期末考试题及答案

C期末考试题及答案 Revised at 2 pm on December 25, 2020.

一、填空题(每空0.5分,共30分) 1、世界坐标系简称__WCS_用户自定义坐标系简称__UCS_。 2、工作空间的切换:“工具”/“工作空间”或“工作空间”工具栏。 3、工具栏包括30种,系统默认的显示工具栏包括:“标准”、“属性”、“绘图”和“修改”等工具栏。 4、多线的对正方式有_上(T)_、_无(Z)_和_下(B)_。 5、文字标注包括标注单行文字和标注多行文字。 6、渲染环境是指在渲染对象时进行的雾化和深度设置。 7、漫游和飞行用户可以通过键盘和鼠标来控制视图显示,并创建导航动画。 8、编辑实体的边的种类:压印边、复制边、着色边。 9、动态块是通过自定义夹点或自定义特性定义的块。在图形中使用动态块,用户可以随时对组成块的对象进行修改。 10、三维实体是具有体积、质量、重心、回转半径、惯性距等特征的三维对象。 11、在AutoCAD 2007中,用户可以创建的光源有电光源、聚光灯光源和平行光光源。 12、相切、相切、半径法是指:通过指定圆的两个切点和半径来绘制圆。 13、绘制圆环的步骤中,先输入圆环的内径和外径,后确定圆环的中心点。 14、计算机辅助设计是:工程技术人员在CAD系统的辅助下,根据产品的设计程序进行设计的一项新技术。 15、菜单栏包括11种,每一种菜单中都含有四种显示情况:命令后跟右三角 、后跟省略号、后跟快捷键或功能键或命令呈灰色。 16、要对图形对象进行编辑就必须选中图形对象,在AutoCAD 2007中,选择对象的方法很多,常用的有_直接拾取_、矩形框选择_、_不规则区域选择_和快速选择。 17、在设置显示精度时,如果设置的精度越高,即分辨率就越高,计算机计算的时间 也越长,显示图形的速度也就越慢。 18、三维基本实体的种类包括:多段体、长方体、楔体、圆柱体、圆锥体、球体、圆环体、棱锥面。 19、布尔运算中只留重复的一部分的运算是交集运算。从一个图形中去掉与另一个图形重复部分的运算是差集运算。

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

C语言试卷及答案

一、选择题(每题 1 分,共 20 分) 1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。 A、循环 B、递归 C、转移 D、嵌套 2. 下列标识符中,合法的是_______ 。 A) unsigned B) 5ab C) INT# D)_num2 3. 若float x ;x = 10/4 ;x的值是。 A、2.5 B、2.0 C、3 D、 2 4. 表达式!x 等价于。 A、x==0 B、x==1 C、x != 0 D、x != 1 5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。 A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算 C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算 6. 能将高级语言编写的源程序转换为目标程序的是。 A、链接程序 B、解释程序 C、编译程序 D、编辑程序 7. 下列语句定义pf为指向float类型变量f的指针,是正确的。 A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f; 8. 一个C程序的执行是从。 A、本程序的main函数开始,到main函数结束 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 9. 能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。 A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B、(x>=1)||(x<=10)||(x>=200)||(x<=210) C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D、(x>=1)||(x<=10)&&(x>=200)||(x<=210) 10. 对两个数组a和b进行如下初始化 char a[]=“ABCDEF”;char b[]={ …A?,?B?,?C?,?D?,?E?,?F?}; 则以下叙述正确的是。 A、a和b数组完全相同 B、a和b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度长 11. 是不正确的字符常量。 A、'\n' B、'1' C、"a" D、'\101' 12. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 13. 设变量定义为“int x, *p=&x;”,则&*p相当于。 A、p B、*p C、x D、*&x 14. 有两个字符数组a、b,则以下正确的输入语句是。 A)gets(a,b); B) scanf(“%s%s”,a,b); C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”); 15. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。 A、地址传递 B、单向值传递

c和c++经典笔试题及答案

C++/C经典笔试题及答案 C++/C试题 本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。 笔试时间90分钟。请考生认真答题,切勿轻视。 一、请填写BOOL , float, 指针变量与“零值”比较的 if 语句。(10分)提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: if ( n == 0 ) if ( n != 0 ) 请写出BOOL flag 与“零值”比较的if 语句: 请写出float x 与“零值”比较的if 语句: 请写出char *p 与“零值”比较的if 语句: char str[] = “Hello” ; char *p = str ; int n = 10; 请计算 sizeof (str ) = sizeof ( p ) = sizeof ( n ) =void Func ( char str[100]) { 请计算 sizeof( str ) = } void *p = malloc( 100 );请计算 sizeof ( p ) = 1、头文件中的 ifndef/define/endif 干什么用? 2、#include 和#include “filename.h” 有什么区别? 3、const 有什么用途?(请至少说明两种) 4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加extern “C”声明? 5 // 第一个 for (i=0; i

C语言试题及答案

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。 第2章数据类型运算符和表达式习题 1. 单项选择题 (1) 以下选项中,正确的 C 语言整型常量是 D 。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中, D 是不正确的 C 语言字符型常量。

c语言试题及答案

《C语言》课程综合复习资料 一、单选题 1. 在C语言中,字符型数据在存中的存储形式是 A)原码 B)补码 C)反码 D)ASCII码 2. 在C语言中,十进制数47可等价地表示为 A) 2f B) 02f C) 57 D) 057 3. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为 A) 0 B) 1 C) 2 D) 3 4. 设有定义语句:char str[][20]={,"Beijing","中国石油大学"},*p=str; 则printf("%d\n",strlen(p+20)); 输出结果是 A)10 B) 6 C) 0 D) 20 5. 已定义以下函数: fun(int *p) { return *p; } 该函数的返回值是 A)不确定的值 B)形参p所指存储单元中的值 C)形参p中存放的值 D)形参p的地址值 6. C语言中,函数返回值的类型是由 A)return语句中的表达式类型决定 B)调用函数的主调函数类型决定 C)调用函数时的临时类型决定 D)定义函数时所指定的函数类型决定 7. 有以下函数定义: void fun( int n , double x ) { …… } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是 A) fun( int y , double m ); B) k=fun( 10 , 12.5 ); C) fun( 10 , 12.5 ); D) void fun( 10 , 12.5 ); 8. 以下选项中不能正确赋值的是 A) char b[]={′H′,′e′,′l′,′l′,′o′,′!′}; B) char b[10];b="Hello!";

C语言练习题(带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

C语言程序设计试卷及答案

C 语言程序设计 笔试试题 题号 一 二 三 四 五 六 笔试(70%) 综 合 (30%) 总分 分数 试卷说明: 1. 笔试卷面总分100分,取卷面成绩的70%计入总分; 2. 综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%; 3. 答题时禁止拆开试卷钉,试卷背面即为草稿纸; 4. 答题时间120分钟。 一、单项选择题。将正确答案填入下面框中。 (本题16分,每小题1分) 题号 1 2 3 4 5 6 7 8 答案 题号 9 10 11 12 13 14 15 16 答案 1. 有以下程序 main() {int a=1,b=0; if(!a) b++; else if(a==0) if(a) b+=2; else b+=3; printf(“%d\n ”,b); }则程序输出( A )。 A) 0 B) 1 C) 2 D) 3 2. 有以下定义:int a; long b; double x,y;则下列正确的是( A )。 A) a%(int)(x-y) B) a=x!=y C) (a*y)%b D) y=x+y=x 3. 若有定义 int (*p)[3];则下列说法正确的是( C )。 A) 定义了基类型为int 的三个指针变量 B) 定义了一个名为 *pt 、具有三个元素的整型数值 号 学 名 姓 注意行为规范 遵守考试纪律

C) 定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组D) 定义了基类型为int的具 有三个元素的整型数组 4. 有以下程序段 main() { int x=10; while(x--); printf("x=%d\n",x);} 则最后的输出结果是:( B)。 A) x=0 B) x= -1 C) x=1 D)while构成无限循环 5. 有以下程序: int fun() {static int x=1; x *= 2; return x;} main( ) { int i,s=1 ; for(i=1 ;i<=2 ;i++) s=fun() ; printf(“%d\n ”,s) ;} 执行后的输出结果为( D)。 A) 0 B) 1 C) 8 D) 4 6. void main( ){ int k=011; printf("%d\n",k++); } }程序输出结果是( D ) A)12 B) 11 C) 10 D) 9 7. 以下C语言标识符中,不合法的是( C)。 A) _2 B) a_b C) a--b D) AaBc 8. C语言允许函数类型默认定义,此时该函数值隐含的类型是( B)。 A) float B) int C) long D) double 9. 以下程序段运行结果是( B)。 enum weekday{aa,bb=2,cc,dd,ee}week=ee; printf(“%d\n“,week); A) 4 B) 5 C) ee D) 0 10. 以下对C语言函数的描述中,不正确的是( B )。 A) 不同函数中可以使用相同名字变量B) 函数可以嵌套定义 C) 函数可以没有返回值D) 程序由函数组成 11. 若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是( D )。 A) *p B) *x C) *(p+1) D) x[5]

最新版c语言经典习题100例(最全面)

C 语言习题100 例(最新整理版) 习题目录:(按住Ctrl 点击可以快速跳转到对应页面) 【程序1】 (5) 题目:有1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? (5) 【程序2】 (6) 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元 时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%; 40万到60万之间时高于40万元的部分,可提成3%; 60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? (6) 【程序3】 (7) 题目:一个整数,它加上100 后是一个完全平方数,再加上168 又是一个完全平方数,请问该数是多少? (7) 【程序4】 (7) 题目:输入某年某月某日,判断这一天是这一年的第几天? (7) 【程序5】 (8) 题目输入三个整数x,y,z请把这三个数由小到大输出。 (8) 【程序6】 (9) 题目用*号输出字母C的图案。 (9) 【程序7】 (9) 题目:输出特殊图案,请在C环境中运行,看一看,VeryBeautifuI! (9) 【程序8】 (9) 题目:输出9*9 口诀。 (9) 【程序9】 (10) 题目:要求输出国际象棋棋盘。 (10) 【程序10】 (10) 题目:打印楼梯,同时在楼梯上方打印两个笑脸。 (10) 【程序11】 (11) 题目:古典问题:有一对兔子,从出生后第3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? (11) 【程序12】 (11) 题目:判断101-200 之间有多少个素数,并输出所有素数。 (11) 【程序13】 (12) 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1 的三次方+5的三次方+3的三次方。 (12) 【程序14】 (12) 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5 。 (12) 【程序15】 (13) 题目利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用 C 表示。 (13) 【程序16】 (13) 题目:输入两个正整数m和n ,求其最大公约数和最小公倍数。 (13) 【程序17】 (14) 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。14【程序18】 (14)

C试题及答案一

C++程序设计模拟试卷(一) 一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中 只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无 分。 1. 编写C++程序一般需经过的几个步骤依次是() A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 答案:B 解析:经过编辑、编译、连接和运行四个步骤。编辑是将C++源程序输入计算机的过程,保 存文件名为cpp。编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为 obj,由于没有得到系统分配的绝对地址,还不能直接运行。连接是将目标文件obj转换为可执行 程序的过程,结果为exe。运行是执行exe,在屏幕上显示结果的过程。 2. 决定C++语言中函数的返回值类型的是() A. return语句中的表达式类型 B. 调用该函数时系统随机产生的类型 C. 调用该函数时的主调用函数类型 D. 在定义该函数时所指定的数据类型 答案:D 解析:函数的返回值类型由定义函数时的指定的数据类型决定的。A项的表达式的值要转换 成函数的定义时的返回类型。 3. 下面叙述不正确的是() A. 派生类一般都用公有派生 B. 对基类成员的访问必须是无二义性的 C. 赋值兼容规则也适用于多重继承的组合 D. 基类的公有成员在派生类中仍然是公有的 答案:D 解析:继承方式有三种:公有、私有和保护。多继承中,多个基类具有同名成员,在它们 的子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。赋值兼容规则是指 派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。基类中的 公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。 4. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体 也就是() A. 类 B. 对象 C. 函数体 D. 数据块 答案:A 解析:类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。 5. 在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中 的() A. 私有成员 B. 公有成员 C. 保护成员 D. 保护成员或私有成员 答案:A 解析:在派生类中基类的保护或者基类公有都可以直接访问,基类的私有成员只能是基类 的成员函数来访问。所以选择A项。 6. 对基类和派生类的关系描述中,错误的是() A. 派生类是基类的具体化 B. 基类继承了派生类的属性 C. 派生类是基类定义的延续 D. 派生类是基类的特殊化 答案:B 解析:派生类的成员一个是来自基类,一个来自本身,所以派生类是基类的扩展,也是基 类的具体化和特殊化,派生类是对基类扩展。B项基类不能继承派生类成员,所以错误。 7. 关于this指针使用说法正确的是() A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码

c语言试卷及答案1

c语言试卷及答案1

浙江理工大学 C程序设计试题(一) 试题二、语言基础题(本题共30分) (一)判断题(本题共10分,每小题1分) 说明:在以下提供的若干陈述中,逐一判断其正确与否,选A表示正确,选B表示错误。 (16) C语言程序的三种基本结构是顺 序、选择和嵌套。 (17) 在C语言程序中,在函数内部定 义的变量称为全局变量。 (18) 运算符“=”和“&=”的优先级相 同。 (19) ‘%f’是不正确的字符常量。 (20) 运算符“+”不能作为单目运算符。 (21) 如果运算符“*”和“/”都是右 结合的,则表达式10*6/5的值是10。 (22) s(s-a)(s-b)(s-c)是合法的C语 言表达式。 (23) 表达式!!6的值是6。 (24) 表达式~(~2<<1)的值是5。 (25) 对于变量定:int a[10],*p=a+8; 数组a的最后一个元素是p[1]。

(二)单选题(本题共20分,每小题2分) (26) 执行语句printf("(26) ", "A");将得到出错信息。 A、%u B、%s C、%e D、%d (27) 设c是一个字符变量,求解表达 (27) 后,c的值不是1就是0。 A、c=getchar()!=’\n’ B、(c=getchar()!)=’\n’ C、c=’1’ D、c=EOF (28) 下列定义中,(28) 定义的变 量可以存放-123.4。 A、long a; B、 unsigned b; C、int d; D、float c; (29) 对于变量定义;char *pp[100], pp是一个(29) 。 A、函数 B、数组元素 C、指针变 量D、数组 (30) 下列程序段的输出结果是 (30) 。 char *st[ ]={ "SUM","MOON","STAR","X"}; printf("(%s,%c) ",*(st+1)+1,*(*(st+2)+2)+2)

相关主题
文本预览
相关文档 最新文档