C++程序设计基础课后答案 第五章

C++程序设计基础课后答案  第五章
C++程序设计基础课后答案  第五章

5.1 阅读下列程序,写出执行结果

1.#include < iostream.h >

struct data

{ int n ;

float score ;

} ;

void main()

{ data a[3] = { 1001,87,1002,72,1003,90 } , *p = a ; cout << (p++)->n << endl ;

cout << (p++)->n << endl ;

cout << p->n++ << endl ;

cout << (*p).n++ << endl ;

}

2.#include < iostream.h >

struct employee

{ char name[ 20 ] ;

char sex ;

} ;

void fun( employee *p )

{ if( (*p).sex == 'm' )

cout << (*p).name << endl ;

}

void main()

{ employee emp[5] = { "Liming", 'm', "Wangxiaoping", 'f', "Luwei", 'm' } ; int i ;

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

fun( emp+i ) ;

}

3. #include < iostream.h >

struct node

{ char * s ;

node * q ;

} ;

void main()

{ node a[ ] = { { "Mary", a+1 }, { "Jack", a+2 }, { "Jim", a } } ;

node *p = a ;

cout << p->s << endl ;

cout << p->q->s << endl ;

cout << p->q->q->s << endl ;

cout << p->q->q->q->s << endl ;

}

4.#include < iostream.h >

class A

{ public :

int f1();

int f2();

void setx( int m ) { x = m ; cout << x << endl; } void sety( int n ) { y = n ; cout << y << endl; } int getx() { return x ; }

int gety() { return y ; }

private :

int x, y ;

};

int A::f1() { return x + y ; }

int A::f2() { return x - y ; }

void main()

{ A a ;

a.setx( 10 ) ; a.sety( 5 ) ;

cout << a.getx() << '\t' << a.gety() << endl ;

cout << a.f1() << '\t' << a.f2() << endl ;

}

5. #include < iostream.h >

class T

{ public :

T( int x, int y )

{ a = x ; b = y ;

cout << "调用构造函数1." << endl ;

cout << a << '\t' << b << endl ;

}

T( T &d )

{ cout << "调用构造函数2." << endl ;

cout << d.a << '\t' << d.b << endl ;

}

~T() { cout << "调用析构函数."<

int add( int x, int y = 10 ) { return x + y ; } private :

int a, b ;

};

void main()

{ T d1( 4, 8 ) ;

T d2( d1 ) ;

cout << d2.add( 10 ) << endl ;

}

6. #include < iostream.h >

class T

{ public:

T(int x){ a=x; b+=x;};

static void display(T c)

{ cout<<"a="<

private:

int a;

static int b;

} ;

int T::b=5;

void main()

{ T A(3),B(5);

T::display(A);

T::display(B);

}

7. #include < iostream.h >

#include < math.h >

class point

{ public :

point( float x, float y )

{ a = x; b = y;? cout << "点( " << a << ", " << b << " )" ; }

friend double d( point &A , point &B )

{ return sqrt((A.a-B.a) * (A.a-B.a) + (A.b-B.b) * (A.b-B.b)) ; } private:

double a, b ;

};

void main()

{ point p1( 2, 3 ) ;

cout << " 到 " ;

point p2( 4, 5 ) ;

cout << "的距离是:" << d( p1,p2 ) << endl ;

}

8. #include < iostream.h >

class A

{ public :

A() { a = 5 ; }

void printa() { cout << "A:a = " << a << endl ; }

private :

int a ;

friend class B ;

} ;

class B

{ public:

void display1( A t )

{ t.a ++ ; cout << "display1:a = " << t.a << endl ; } ; void display2( A t )

{ t.a -- ; cout << "display2:a = " << t.a << endl ; } ; };

void main()

{ A obj1 ;

B obj2 ;

obj1.printa() ;

obj2.display1( obj1 ) ;

obj2.display2( obj1 ) ;

obj1.printa() ;

}

5.2 思考题

1.结构和类有什么区别?如果把程序中定义结构的关键字struct直接改成class,会有什么问题?用教材上的一个例程试一试,想一想做什么修改能使程序正确运行?

2.分析以下说明结构的语句

struct node

{ int data;

node error; //错误

node * ok; //正确

};

error和ok分别属于什么数据类型?有什么存储要求?error出错的原因是什么?

3.有说明

class A

{ int a;

double x;

public:

funMember();

};

A a1, a2, a3 ;

编译器为对象a1,a2,a3开辟了什么内存空间?它们有各自的funMember函数的副本吗?C++通过什么机制调用类的成员函数?

4.C++提供了默认版本的构造函数,为什么还需要用户自定义构造函数?编写一个验证程序,说明自定义构造函数的必要性。

5.试从定义方式、访问方式、存储性质和作用域分析类的一般数据成员和静态数据成员的区别,并编写一个简单程序验证之。

6.试从定义方式、调用方式分析静态成员函数和友员函数的区别。考察教材的例5-22,若class Goods 的指针域

Goods * next;

被声明为私有(private)成员,程序会出现什么错误?做什么最小修改能使程序正确运行?请你试一试。

1.分析以下说明结构的语句

struct Node

{ int data;

Node error; //错误

Node * ok; //正确

};

error和ok分别属于什么数据类型?有什么存储要求?error出错的原因是什么?

【答案】

error是Node结构类型数据成员,错误。原因是结构定义的数据成员若为本身的结构类型,是一种无穷递归。ok是指向Node类型的指针,定义正确,占4字节。

2.本章例5-5中用辅助数组对结构数组做关键字排序,有定义

person *index[100];

index数组存放结构数组元素的地址。如果把index定义改为

int index[100];

用于存放结构数组元素的下标。可以实现对结构数组的索引排序吗?如何修改程序?请你试一试。【答案】

可以。关键是通过整型索引数组元素作为下标访问结构数组。表示为:

all[pi[i]].name all[pi[i]].id all[pi[i]].salary

有关程序如下:

#include

using namespace std;

struct person //说明结构类型

{ char name[10];

unsigned int id;

double salary;

} ;

void Input( person[], const int );

void Sort( person[], int[],const int );

void Output( const person[], int[],const int );

int main()

{ person allone[100] ; //说明结构数组

int index[100]; //说明索引数组

int total ;

for(int i=0; i<100; i++) //索引数组元素值初始化为结构数组元素下标

index[i]=i ;

cout<<"输入职工人数:";

cin>>total;

cout<<"输入职工信息:\n";

Input(allone,total);

cout<<"以工资做关键字排序\n";

Sort(allone,index, total);

cout<<"输出排序后信息:\n";

Output(allone,index,total);

}

void Input( person all[], const int n )

{ int i ;

for( i=0; i

{ cout<

cin>>all[i].name;

cout<<"编号: ";

cin >> all[i].id;

cout<<"工资: ";

cin >> all[i].salary ;

}

}

void Sort(person all[], int pi[], const int n)

{ int i,j;

int t; //交换用中间变量

for(i=1; i

if(all[pi[j]].salary>all[pi[j+1]].salary) //通过索引数组访问结构数组元素{ t=pi[j]; //交换索引数组元素值

pi[j]=pi[j+1];

pi[j+1]= t;

}

}

}

void Output(const person all[], int pi[], const int n)

{ for( int i=0; i

cout<

}

3.有以下结构说明和遍历单向链表的函数。函数内有错误吗?是什么性质的错误?请上机验证你的分析。

struct Node

{ int data; Node * next; };

void ShowList( Node *head )

{ while( head )

{ cout << head->date << '\n' ;

head ++ ;

}

}

【答案】

head++错误,原因是动态链表的结点存放不是连续顺序的内存空间,它们是逐个结点通过new建立的,所以不能用++做地址偏移运算。应该用:

head=head->next

4.结构和类有什么区别?如果把程序中定义结构的关键字struct直接改成class,会有什么问题?用教材上的一个例程试一试,想一想做什么修改能使程序正确运行?

【答案】

结构是数据的封装,类是数据和操作的封装。可以把结构看成是类的特例。结构和类都可以用关键字struct或class定义。区别是,struct定义的结构或类的全部成员都是公有的,用class定义的结构或类不做声明的成员是私有的。

若把struct改成class,只需要把全部成员定义为public就可以了。

5.有说明

class A

{ int a;

double x;

public:

funMember();

};

A a1, a2, a3 ;

编译器为对象a1、a2和a3开辟了什么内存空间?它们有各自的funMember函数的副本吗?C++通过什么机制调用类的成员函数?

【答案】

开辟的存储空间有a1.a, a1.x, a2.a, a2.x, a3.a, a3.x。各对象没有funMember函数的副本,C++通过this指针调用成员函数。

6.C++提供了默认版本的构造函数,为什么还需要用户自定义构造函数?编写一个验证程序,说明自定义构造函数的必要性。

【答案】

类的默认构造函数可以建立基本类型数据成员的存储空间。基于以下两个原因,需要用户定义构造函数:(1)对数据成员的值做指定初始化;

(2)类的数据是由指针管理的堆。

程序略。

7.试从定义方式、访问方式、存储性质和作用域分析类的一般数据成员和静态数据成员的区别,并编写一个简单程序验证它。

程序略。

8.试从定义方式、调用方式分析常成员函数、静态成员函数和友员函数的区别。考察教材的例5-22,若class Goods的指针域

Goods * next;

被声明为私有(private)成员,程序会出现什么错误?做什么最小修改能使程序正确运行?请你试一试。【答案】

在例5-22中,若把next 声明为私有数据成员,只须把有关指针操作的函数定义为友员函数就可以了: friend void purchase( Goods * &f, Goods *& r, int w );

friend void sale( Goods * & f , Goods * & r );

9.设有

class M { int a ;};

class N { M m; int b; void fun(){ /*……*/ } };

int main() { N n; N *p=&n; /*……*/ }

描述在N::fun 中如何访问M 类的数据成员a ;在main 函数中又如何访问对象n 的全部数据成员?

【答案】

在N::fun 中访问M 类的数据成员a 的形式是: m.a

在main 函数中访问M 类的数据成员的形式是: n.b n.m.a

5.3 编程题

1.使用结构类型表示复数。设计程序输入两个复数,可以选择进行复数的+、-、×或÷运算,并输出结果。

答案 5.3-1

#include

#include

struct complex

{

float re,im;

};

void main()

{ complex a,b,c; char oper;

cout << "输入复数a的实部和虚部: ";

cin >> a.re >> a.im;

cout << "输入复数b的实部和虚部:";

cin >> b.re >> b.im;

cout << "输入运算符: ";

cin >> oper;

switch ( oper )

{ case '+': c.re=a.re+b.re; c.im=a.im+b.im; break;

case '-': c.re=a.re-b.re; c.im=a.im-b.im; break;

case '*': c.re=a.re*b.re-a.im*b.im;

c.im=a.im*b.re+a.re*b.im; break;

case '/': c.re=(a.re*b.re+a.im*b.im)/(b.re*b.re+b.im*b.im);

c.im=(a.im*b.re-a.re*b.im)/(b.re*b.re+b.im*b.im); break;

default: cout << "input error!" << endl;

return;

}

cout << "c=" << c.re;

cout << setiosflags( ios::showpos );

cout << c.im << "i" << endl;

return;

}

2.把一个班的学生姓名和成绩存放到一个结构数组中,寻找和输出最高分者。

答案 5.3-2

#include

void main()

{ struct data

{ char name[12];

float score;

}a[ ] = {"李小平",90,"何文章",66,"刘大安",87,"汪立新",90,"罗建国",

78,"陆丰收",81,"杨勇",85,"吴一兵",55,"伍晓笑",68,"张虹虹",90};

float max = a[0].score;

int i,n = sizeof(a) / sizeof(data);

for( i=1; i

if( a[i].score > max ) max = a[i].score;

for( i=0; i

if( a[i].score == max ) cout << a[i].name << endl;

}

3.使用结构表示X—Y平面直角坐标系上的点,编写程序顺序读入一个四边形的四个顶点坐标,判别由这四个顶点的连线构成的图形是否正方形、矩形或其它四边形。要求定义求两个点距离的函数使用结构参数。

答案 5.3-3

struct coordinates

{ double x,y; };

#include

#include

double distance( coordinates p1,coordinates p2 )

{ return sqrt( pow( p1.x-p2.x,2 )+pow( p1.y-p2.y,2 ) ); }

void main()

{ int i;

coordinates p[5];

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

{ cout << "输入第" << i << "个顶点的横坐标和纵坐标: ";

cin >> p[i].x >> p[i].y;

}

if(fabs( distance( p[1],p[2] ) - distance( p[3],p[4] ))<=1e-8

&& fabs( distance( p[1],p[4] ) - distance( p[2],p[3] ))<=1e-8

&& fabs( distance( p[1],p[3] ) - distance( p[2],p[4] ))<=1e-8)

if( fabs( distance( p[1],p[2] ) - distance( p[2],p[3] ))<1e-8 )

cout << "四个顶点构成的图形为正方形!" << endl;

else cout << "四个顶点构成的图形为矩形!" << endl;

else cout << "四个顶点构成的图形为其它四边形!" << endl;

}

4.建立一个结点包括职工的编号、年龄和性别的单向链表,分别定义函数完成以下功能:( 1)遍历该链表输出全部职工信息;

( 2)分别统计出男女性职工的人数;

( 3)在链表尾部插入新职工结点;

( 4)删除指定编号的职工结点;

( 5)删除年龄在60岁以上的男性职工或55岁以上的女性职工结点,保存在另一个链表中。主函数建立简单菜单选择,测试你的程序。

答案 5.3-4

#include

struct employee

{int num;

int age;

char sex;

employee *next;

};

employee *head, *head1;

//建立单向链表

employee *create()

{employee *head, *p, *pend;

char ch;

head = NULL;

cout << "\t输入数据?(y/n)"; cin >> ch;

if( ch == 'y' )

{ p = new employee;

cout << "\t编号:"; cin >> p->num;

cout << "\t年龄:"; cin >> p->age;

cout << "\t性别:"; cin >> p->sex;

}

else goto L0;

while( ch == 'y' )

{ if( head == NULL ) head = p;

else pend->next = p;

pend = p;

cout << "\t输入数据?(y/n)"; cin>>ch;

if( ch == 'y' )

{ p = new employee;

cout << "\t编号:"; cin >> p->num;

cout << "\t年龄:"; cin >> p->age;

cout << "\t性别:"; cin >> p->sex;

}

}

pend->next = NULL;

L0: ;

return head;

}

//显示单向链表中全部职工信息

void show( employee *head )

{ employee *p = head;

if( !head ) { cout << "\t空链表!" << endl; goto L1; } cout << "\t链表中的数据是: \n";

while( p )

{ cout << '\t' << p->num << "," << p->age << "," << p->sex << endl; p = p->next;

}

L1: ;

}

//统计男女职工人数

void count( employee *head )

{ employee *p = head;

int m, f;

m = 0; f = 0;

while( p )

{ if( p->sex == 'm' ) m++;

else f++;

p = p->next;

}

cout << "\t男职工人数:" << m << endl;

cout << "\t女职工人数:" << f << endl;

}

//在链表尾部插入新结点

employee *insert()

{ employee *pend = head, *p;

//在空链表尾部插入新结点

if( !head )

{ p = new employee;

cout << "\t编号:"; cin >> p->num;

C语言程序设计第三版习题库答案

C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y);

}elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x);

C++程序设计基础课后答案 第八章

8.1 阅读下列程序,写出执行结果 1.#include class Bclass { public: Bclass( int i, int j ) { x = i; y = j; } virtual int fun() { return 0 ; } protected: int x, y ; }; class Iclass:public Bclass { public : Iclass(int i, int j, int k):Bclass(i, j) { z = k; } int fun() { return ( x + y + z ) / 3; } private : int z ; }; void main() { Iclass obj( 2, 4, 10 ); Bclass p1 = obj; cout << p1.fun() << endl; Bclass & p2 = obj ; cout << p2.fun() << endl; cout << p2.Bclass :: fun() << endl; Bclass *p3 = &obj;

cout << p3 -> fun() << endl; } 2.#include class Base { public: virtual void getxy( int i,int j = 0 ) { x = i; y = j; } virtual void fun() = 0 ; protected: int x , y; }; class A: public Base { public: void fun() { cout<<"x = "<。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); }

Java程序设计基础习题答案

Java程序设计基础课后习题参考答案 第2章 1、关于Java Application得入口方法main()得检验: main()方法得参数名就是否可以改变? main()方法得参数个数就是否可以改变? 该方法名就是否可以改变? 参考答案:(1)main()方法得参数名可以改变.(2)main()方法得参数个数不可以改变。(3)该方法名不可以改变。 2、当一个程序没有main()方法时,能编译吗?如果能编译,能运行吗? 参考答案:当一个程序没有main()方法就是,就是可以编译通过得,但就是不能给运行,因为找不到一个主函数入口。 3、下列语句能否编译通过? bytei =127; bytej = 128; longl1 = 999999; long l2= 9999999999; 参考答案:byte i 与long l1可以编译通过。而byte j 与longl2 超出自身数据类型范围,所以编译失败。 4、下列语句能否编译通过? float f1 =3、5; float f2 = 3.5f; 参考答案:java中浮点型得数据在不声明得情况下都就是double型得,如果要表示一个数据就是float型得,必须在数据后面加上“F”或“f”;因此,floatf1 无法编译通过。 5、验证int 与char,int与double等类型就是否可以相互转换。 参考答案:(1)char类型可以转换为int 类型得,但就是int类型无法转换为char类型得;(2)int 可以转换为double类型得,但就是double类型无法转换为int 类型得。 6、计算下列表达式,注意观察运算符优先级规则。若有表达式就是非法表达式,则指出不合法之处且进行解释。 (1)4+5 == 6*2 ?(2) (4=5)/6?? (3)9%2*7/3>17(4)(4+5)<=6/3 ? (5) 4+5%3!=7-2????(6)4+5/6〉=10%2 参考答案:表达式(2)为不合法表达式,只能将值赋值给一个变量,因此其中(4=5)将5赋值给4就是不合法得. 7、下列()就是合法得Java标识符。 (1)Counter1 ??(2)$index, (3) name-7 ??(4)_byte

计算机程序设计基础习题册含答案

《计算机程序设计基础》 计算机程序设 计基础_基础知识(一) 班级 学号 姓名 成 绩 一、 单选题 习题册

1.C++源程序文件的默认扩展名为A。 2.A) cpp B) exe C) obj D) lik 3.由C++源程序文件编译而成的目标文件的默认扩展名为C。 4.A) cpp B) exe C) obj D) lik 5.由C++目标文件连接而成的可执行文件的默认扩展名为B。 6.A) cpp B) exe C) obj D) lik 7.编写C++程序一般需经过的几个步骤依次是B。 8.A)编译、编辑、连接、调试 B)编辑、编译、连接、调试 C)编译、调试、编辑、连接 D)编辑、调试、编辑、连接9.程序中主函数的名字为 A 。 10.A) main B) MAIN C) Main D) 任意标识 符 11.下面四个选项中,均是不合法的 用户标识符的选项的是 C。 12.A) A p_o do B)float lao _A C)b-a goto int D)_123 temp INT 13.下列变量名中合法的是 C。 14.A) B)C)Tom B) 3a66 C) _6a7b D) $ABC 15.存储以下数据,占用存储字节最 多的是 D 。 16.A) 0 B) ‘0’

C) “0” D) 17.在C++语言中,字符型数据在内存中的存储形式是D。 18.A) 补码 B) 反码 C) 原码 D) ASCII码 19.若有说明语句:char c =’\072’;则变量c A。 20.A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法,变量的值不确定 二、填空题 1.C++头文件和源程序文件的扩展名分别为.h和.cpp 。 2.C++语言规定,标识符只能由字母、数字、下划线三种字符组成,而且第一个字符必须是字母或下划线。 3.一条表达式语句必须以__分号_;___作为结束符。 4.用于从键盘上为变量输入值的标准输入流对象是___cin____;用于输出表达式值的标准输出流对象是__cout____。 5.在一个C++程序文件中,若要包含另外一个头文件或程序文件,则应使用以_#include___标识符开始的预处理命令 计算机程序设计基础_基础知识(二) 班级学号姓名成绩 一、单选题 1.下列哪一个是C++语言中合法的变量 C A) 8ZSe B) ±A0 C) X0_2 D) ’x0’2.已知ch是字符型变量,下面不正确的赋值语句是A 3.A) ch='a+b' B) ch='\0'

程序设计基础试题_03_答案.doc

学院领导 审批并签名 A / B卷 广州大学 学年第学期考试卷 课程高级语言程序设计考试形式(开/闭卷,考试/查)学院系专业班级学号姓名 分数 评分 一:选择题(每题3分,共60分) (1)若有以下定义: char a; int b; float c; double d; 则表达式a*b+d-c值的类型为(A)

A) double B) float C) int D) char (2)设a=1,b=2,c=3,d=4,则表达式:a=10 or a<=0 B)a>=10│a<=0 C)a>=10││a<=0 D)a>=10 ││ a<=0 (7)下列可 作为C语言赋值语句的是(C) A) x=3,y=5 B) a=b=6 C) i--; D) y=int(x); (8)设i是int型变量,f是float型变量,用下面的语句给这两个变量输 入值: scanf(i=%d,f=%f,&i,&f); 为了把100和765.12分别赋给i和f,则正确的输入为(A) A) 100765.12 B) i=100,f=765.12 C) 100765.12 D) x=100y=765.12 (9)给出以下定义: char x[ ]=abcdefg;

(完整版)C语言程序设计练习及答案

《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型

《计算机程序设计基础》课后练习题参考答案

《计算机程序设计基础》课后练习题1 一.判断题 (1)(错)事件过程由某个用户事件或系统事件触发执行,但不能被其他过程调用。 (2)(错)若X=2, Y=5,则表达式 Y-2>X AND X+2>Y 的结果为:True。 (3)(错)常量是指在程序运行过程中其值可以改变的那些量。 (4)(错,timer没有)VB工具箱中的所有控件都具有宽度(Width)和高度(Height)属 性。 (5)(错)定义变量:Dim max,min as Single , 则max 和 min 的数据类型均为Single。 (6)(对)如果创建的菜单项的标题是一个减号“-”,则该菜单项显示为一条分隔线。 (7)(错)标准模块文件的扩展名是“*.VBP”。 (8)(错,都不能)定时器控件可以响应Click事件,但不能响应DbClick事件。 (9)(错)在默认情况下,数组下标下界的缺省值为1。 (10)(对)在使用字体对话框时,需要对其Flags属性先进行相应设置。 二.单选题 (11)在Visual Basic中,表示鼠标单击事件的是 C 。 A)Activate B)DoubleClick C)Click D)MouseDown (12)用于设置计时器时间间隔的属性是 A 。 A)Interval B)Name C)Left D)Top (13)函数Int(10*Rnd)是在 D 范围内的整数。 A)[1,10] B)[1,10] C) [0,9) D)[0,9] (14)Select case语句结构的结尾应使用 D 。 A)End B) End Case C) End Sub D) End Select (15)改变了容器的坐标系后,该容器的 A 属性值不会改变。 A)left B)scaleleft C)scaletop D)scalewidth (16)执行下列语句后,列表框中各表项顺序为 D List1.Clear For i=1 to 4 : List1.AddItem i-1,0 :Next i A)B)C)D) (17)输入对话框InputBox的返回值的类型是 A 。

程序设计基础试题(附答案)

程序设计基础复习题 一、单选 1、一个完整的计算机系统应该包括() A、系统软件和应用软件 B、计算机及其外部设备 C、硬件系统和软件系统 D、系统硬件和系统软件 2、“裸机”的概念是指() A、正在进行设计还没有组装好的计算机 B、已经组装好但还没有安装任何软件的计算机 C、仅安装了操作系统的计算机系统 D、安装了文字处理软件但没有安装专用数据处理系统的计算机 3、世界上第一台电子数字计算机研制成功的时间是() A、1936年 B、1946年 C、1956年 D、1970年 4、CASE的含义是() A、计算机辅助设计 B、计算机辅助制造 C、计算机辅助教学 D、计算机辅助软件工程5、当前广泛使用的微型计算机是() A、第一代 B、第二代 C、第三代 D、第四代 6、当代计算机的体系结构称为是() A、冯·诺依曼机 B、非冯·诺依曼机 C、图灵机 D、比尔盖茨机 7、硬盘是() A、输入设备 B、输出设备 C、存储设备 D、计算设备 8、下面4句话中,最准确的表述是() A、程序=算法+数据结构 B、程序是使用编程语言实现算法 C、程序的开发方法决定算法设计 D、算法是程序设计中最关键的因素

9、计算机能直接执行的语言是() A、机器语言 B、汇编语言 C、高级语言 D、目标语言 10、解释程序的功能是() A、将高级语言程序转换为目标程序 B、将汇编语言程序转换为目标程序 C、解释执行高级语言程序 D、解释执行汇编语言程序 11、下面4种程序设计语言中,不是面向对象式语言的是() A、JAVA B、Object Pascal C、Delphi D、C 12、不是C语言的基本数据类型是() A、int B、double C、char D、bool 13、在C语言中,为了求两个整数相除之后得到的余数,可以使用运算符() A、/ B、% C、* D、++ 14、数据的逻辑结构分为() A、纯属结构和非线性结构 B、顺序结构和非顺序结构 C、树型结构和图型结构 D、链式结构和顺序结构 15、用链表表示纯属表的优点是() A、便于随机存取 B、便于插入和删除操作 C、花费的存储空间较顺序存储少 D、元素的物理顺序与逻辑顺序相同 16、栈的最主要特点是() A、先进先出 B、先进后出 C、两端进出 D、一端进一端出 17、下面4句结论只有一句是错误的,它是()

C语言程序设计第二版习题参考答案

C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT-

C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。

(完整版)程序设计基础试题_10_答案

广州大学学年第学期考试卷 课程高级语言程序设计考试形式(开/闭卷,考试/查) 学院系专业班级学号姓名 一、填空题(每空1分,共10分) 1.C源程序的基本单位是(函数)。 2.一个C源程序中至少应包含一个(main()函数)。 3.若a和b均是int型变量,且a和b的初值均为5,则计算表达式a+=b++ 后,a的值为(10 ),b的值为( 6 )。 4.若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,b值为( 4 ),c 值为( 2 )。 5.表达式8.2-2/3 的计算结果是(8 )。 6.在C语言中,整数可用三种数制表示,它们分别是(十进制)、(八进制)和(十六进制)。 二、程序计算题(每小题5分,共15分) 1. # define f(a) printf(“%d”,a) main() { int i,b[]={1,2,3,5,7,9,11,13,15},*p=5+b; for(i=3;i;i--) switch(i) { case 1: case 2: f(*p++); break;

case 3: f(*(--p)); } } 2. main() { int arr_sum(int arr[],int n); int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p,total; int (*pt)( int arr[],int n); pt=arr_sum; p=a[0]; total=(*pt)(p,12); printf(“total=%d\n”,total); } arr_sum(int arr[],int n) { int i,sum=0; for(i=0;i

西交大《程序设计基础》试题及答案

西交大《程序设计基础》试题及答案 一、单项选择题(本大题共20小题,每小题2分,共40分) 1.int a[10];合法的数组元素的最小下标值为()。A:10 B:9 C:1 D:0 答案:D 2.以下运算符中优先级最低的是()。A:&& B:& C:|| D:| 答案:C 3.若使用一维数组名作函数实参,则以下正确的说法是()。A:必须在主调函数中说明此数组的大小B:实参数组类型与形参数组类型可以不匹配C:在被调用函数中,不需要考虑形参数组的大小D:实参数组名与形参数组名必须一致答案:A 4.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer 代表的是()。 A:一个整数,代表要读入的数据项总数B:一个文件指针,指向要读的文件C:一个指针,指向要读入数据的存放地址D:一个存储区,存放要读的数据项答案:C 5.对以下说明语句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:因为数组长度与初值的个数不相同,所以此语句不正确答案:B 6.下列程序的输出结果是()。main() { int x=1,y=0,a=0,b=0; switch(x) { case 1:switch(y) { case case } case 2:a++;b++;break; case 3:a++;b++;break; } printf(\} A:a=1,b=0 B:a=2,b=1 C:a=1,b=1 D:a=2,b=2 答案:B 7.下列程序的输出结果为()。main() {int m=7,n=4; float a=38.4,b=6.4,x; x=m/2+n*a/b+1/2; printf(\ 0:a++;break; 1:b++;break; } A:27.000000 B:27.500000 C:28.000000 D:28.500000 答案:A 8.若k为int型变量,则以下程序段的执行结果是()。k=-8567; printf(\A:格式描述符不合

相关文档
最新文档