《C++语言程序设计》复习题及参考答案
- 格式:doc
- 大小:132.00 KB
- 文档页数:23
C语言程序设计试题及参考答案精心整理c语言程序设计一、选择题(共40分,每小题2分)1、以下叙述不正确的是(d)a、一个c源程序可以由一个或多个函数共同组成b、一个c源程序必须涵盖一个main函数c、c程序的基本共同组成单位就是函数d、在c程序中,注释说明只能位于一条语句的后面2、以下四个选项中,就是不合法的用户标识符的选项就是(b)a、abcb、12acc、sund、a3、建有语句inta=4;则继续执行了语句a+=a-=a*a后,变量a的值就是(a)a、-24b、0c、4d、164、以下运算符中优先级最低的就是(b)a、a、inputx、y、z;b、scanf(“%d%d%d”,&x,&y,&z);c、scanf(“%d%d%d”,x,y,z);d、read(“%d%d%d”,&x,&y,&z);9、假定从键盘输入23456,下面程序的输出结果是:(c)voidmain(){intm,n;scanf(“-=”,&m,&n);printf(“m=%dn=%d\\n”,m,n);}a、m=23n=45b、m=234n=56c、m=23n=456d、语句有错误10、若运转时,给变量x输出12,则以下程序的运转结果就是(a)main(){intx,y;scanf(“%d”,&x);y=x>12?x+10:x-12;printf(“%d\\n”,y);}精心整理a、0b、22c、12d、1011、c语言中while和do-while循环的主要区别(a)a、do-while的循环体至少继续执行一次b、while的循环控制条件比do-while的循环控制条件严格c、do-while允许从外部转到循环体内d、do-while的循环体不能是复合语句12、以下对二维数组的恰当表明的语句就是(c)a、inta[3][]b、floata(3,4)c、doublea[3][4]d、floata(3)(4)13、以下程序的输出结果是(c)main(){inti,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,9b、1,4,7c、3,5,7d、3,6,914、以下能对一维数组a进行正确初始化的语句是(c)a、inta[10]=(0,0,0,0,0);b、inta[10]={};c、inta[10]={0};d、inta[10]={10*1};15、以下程序执行后的输出结果是:(a)intfun(inta,intb,intc){a=456;b=567;c=678;}voidmain(){intx=10,y=20,z=30;z=fun(x,y,z);printf(“%d,%d,%d\\n”,z,y,x);}a、30,20,10b、10,20,30c、10,30,50d、10,30,4016、以下说法正确的是(a)如果在一个函数中的复合语句中定义了一个变量,则该变量a、只在该复合语句中有效b、在该函数中有效c、在本程序范围内有效d、为非法变量17、以下函数调用语句中含有的实参个数为(b)func((exp1,exp2,exp3),(exp4,exp5));a、1b、2c、4d、518、在c语言程序中,以下观点恰当的就是(b)。
《C语言程序设计》练习题及答案1. 单选题1. 设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是A. p=1;B. *q=2;C. q=p;D. *p=5;正确答案:D2. 设有int x=11;则表达式(x++*1/3)的值是A. 3B. 4C. 11D. 12正确答案:A3. 下面程序的输出结果是main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf("%d\n",*(p+2));}A. 3B. 4C. 1D. 2正确答案:A4. sizeof(float)是A. 一个双精度型表达式B. 一个整型表达式C. 一种函数调用D. 一个不合法的表达式正确答案:B5. 在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是A. a=20000+20000;B. a=4000*10;C. a=30000+10000;D. a=4000L*10L正确答案:D6. 请选出以下语句的输出结果printf("%d\n",strlen("\t\"\065\xff\n"));A. 5B. 14C. 8D. 输出项不合法,无正常输出正确答案:A7. 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为A. 4B. 16C. 32D. 52正确答案:C8. 下面能正确进行字符串赋值操作的是A. char s[5]={"ABCDE"};B. char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′};C. char *s;s="ABCDE";D. char *s;char a; scanf("%s",&s);正确答案:C9.以下程序的输出结果是#include "stdio.h"void reverse(int a[],int n){int i,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0;reverse(b,8);for(i=6;i<10;i++) s+=b[i];printf("%d\n",s);}A. 22B. 10C. 34D. 30正确答案:A10. 以下不正确的叙述是A. 在C程序中,逗号运算符的优先级最低B. 在C程序中,APH和aph是两个不同的变量C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值正确答案:D2. 多选题11. 以下______是正确的转义字符。
(完整版)C语⾔程序设计练习题(含程序及参考答案)C语⾔练习题(所提供的源程序均采⽤⾃定义函数⽅式解决,如不采⽤函数⽅式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能⼀⼀验证,仅供参考使⽤)1、定义⼀个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三⾓形函数返回3,若能构成等腰三⾓形函数返回2,若能构成⼀般三⾓形函数返回1,若不能构成三⾓形函数返回0。
#includeint fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c )return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写⼀个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运⾏后 a 中的值为8,b中的值为3。
#includevoid fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输⼊3个数,将最⼤值放在变量a中,最⼩值放在变量c中。
C语言程序设计期末考试试题及其答案一、单项选择题(本大题共20题,每题2 分,共40分)1、以下不是C语言的特点的是( )A、C语言简洁、紧凑B、能够编制出功能复杂的程序C、C语言可以直接对硬件进行操作D、C语言移植性好2、以下不正确的C语言标识符是( )A、ABCB、abcC、a_bcD、ab.c3、一个C语言程序是由( )A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( )A、有零个或多个输入B、有零个或多个输出C、有穷性D、可行性5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( )A、intB、floatC、doubleD、不确定6、在C语言中,char型数据在内存中的存储形式是( )A、补码B、反码C、源码D、ASCII码7、有如下程序,输入数据:12345M678<cR>后(<CR>表示回车),x的值是( ) 。
#include<stdio.h>main(){int x;float y;scanf("%3d%f",&x,&y);}A、12345B、123C、45D、3458、若有以下定义int a,b; float x,则正确的赋值语句是( )A、a=1,b=2B、b++;C、a=b=5D、b=int(x);9、以下程序的执行结果是( )#include<stdio.h>{int i=10,j=10;printf("%d,%d\n",++i,j--);}A、11,10B、9,10C、11,9D、10,910、巳知字母A的ASCII码是65,以下程序的执行结果是( )#include<stdio.h>main(){char c1='A',c2='Y';printf("%d,%d\n",c1,c2);A、A,YB、65,65C、65,90D、65,8911、下列运算符中优先级最高的是( )A、<B、十C、%D、!=12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。
精品文档C语言程序设计一、选择题(共40分,每小题2分)1、以下叙述不正确的是(D)A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个main函数C、C程序的基本组成单位是函数D在C程序中,注释说明只能位于一条语句的后面2、下列四个选项中,是不合法的用户标识符的选项是(B)A、abcB、12ACC sunD A3、设有语句inta=4 ;则执行了语句a+=a-=a*a后,变量a的值是(A)A -24B、OC 4D 164、下列运算符中优先级最高的是(B)A、<B +C &&D ==5、在C语言中,运算对象必须是整型数的运算符是(A)A、%B、/C、%和/ D +&以下关于运算符的优先顺序的描述正确的是(C)A、关系运算符<算术运算符<赋值运算符<逻辑与运算符B逻辑与运算符<关系运算符<算术运算符<赋值运算符C、赋值运算符V逻辑与运算符<关系运算符<算术运算符D算术运算符<关系运算符<赋值运算符<逻辑与运算符7、在C语言中,如果下面的变量都是int类型,则输出的结果是(C)sum=pad=5 pAd=sum++ pAd++, ++pAc;printf(“%d\n ”,pad);A 7B 6C、5D 48、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)A INPUTx、y、z; B、scanf(“ %d%d%d &x,&y,&z);C scanf(“%d%d%d, x,y,z);D read(“ %d%d%d, &x,&y,&z);9、假定从键盘输入23456<回车>,下面程序的输出结果是:(C)voidmai n(){intm ,n;scanf(“ %2d%3”,&m &n);printf(“ m=%dn=%d\n,m, n);}A m=23n=45B m=234n=56C m=23n=456D 语句有错误10、若运行时,给变量x输入12,则以下程序的运行结果是(A)mai n(){intx ,y;scanf(“ %d ,&x);y=x>12? x+10: x-12 ;1欢迎下载printf(“ %d\n”,y);}精心整理A OB 22C 12D 1011、C语言中while和do-while循环的主要区别(A)A do-while的循环体至少执行一次B while的循环控制条件比do-while的循环控制条件严格C、do-while允许从外部转到循环体内D do-while的循环体不能是复合语句12、以下对二维数组的正确说明的语句是(C)A、inta[3][]B 、floata(3,4)C 、doublea[3][4]D 、floata(3)(4)13、以下程序的输出结果是(C)mai n(){inti ,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, 9B 1, 4, 7C 3, 5, 7D 3, 6, 914、以下能对一维数组a进行正确初始化的语句是(C)A inta[10]=(0 , 0, 0, 0, 0) ;B inta[10]={};C inta[10]={0} ;D inta[10]={10*1};15、以下程序执行后的输出结果是:(A)intfun (i nta , intb , intc){a=456 ;b=567; c=678;}voidmai n(){intx=10 , y=20, z=30;z=fun(x , y, z);printf( “ %d %d %d\n”,z , y , x);}A 30, 20 , 10B 10 , 20 , 30C 10 , 30 , 50D 10 , 30 , 4016、以下说法正确的是(A)如果在一个函数中的复合语句中定义了一个变量,则该变量A只在该复合语句中有效B在该函数中有效C在本程序范围内有效D为非法变量17、以下函数调用语句中含有的实参个数为(B)func((exp1 , exp2 , exp3), (exp4 , exp5));A 1B 2C 4D 518、在C语言程序中,以下说法正确的是(B)。
《C语言程序设计》期末复习题一、选择题1.能将高级语言编写的源程序转换成目标程序的是()A.程序 B. 解释程序 C. 编译程序 D.编辑程序2.设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是()。
A. 10<a<15B. a==11||a==12||a==13||a==14C. a>10&&a<15D.!(a<=10)&&!(a>=15)3.当调用函数时,实参是一个数组名,则向函数传送的是( )。
A. 数组的长度B. 数组的首地址C. 数组每一个元素的地址D. 数组每个元素中的值4.执行下面的程序段后,k的值是()int k=1,n=325;do { k*=n%10;n/=10;}while(n);A. 3B. 30C. 523D. 3255.若有以下数组说明,则i=6;a[a[i]]元素数值是()。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};A.3B.8C.6D.56.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()A. for(i=1,p=1;i<=5;i++) p*=i;B. for(i=1;i<=5;i++){ p=1; p*=i;}C. i=1;p=1;while(i<=5){p*=i; i++;}D. i=1;p=1;do{p*=i; i++; }while(i<=5);7.若有:int a[][3]={{1,2,3},{4,5},{6,7},{8}}; 则数组a的第一维的大小为: ( ) A. 12 B. 3 C. 4 D.无确定值8.设有如下程序段,则执行p=s;语句后,以下叙述正确的是( )。
char s[20]= “Bejing”,*p;p=s;A.可以用*p表示s[0]B.s数组中元素的个数和p所指字符串长度相等C.s和p都是指针变量D.数组s中的容和指针变量p中的容相等9.以下正确的函数定义是( )。
《c语言程序设计》试题库及答案一、选择题1. 下列哪个选项是C语言的标准库函数?A. printfB. scanfC. mainD. All of the above答案:D2. C语言中,用于定义字符串的字符数组的语法是什么?A. char str[] = "Hello";B. char str[] = {"Hello"};C. char str = "Hello";D. char str[] = 'Hello';答案:A3. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. functionC. defD. void答案:A二、填空题1. 在C语言中,定义一个整型变量的正确方式是:________。
答案:int variable_name;2. C语言中,用于计算两个数的和的运算符是:______。
答案:+3. 如果要在C语言中声明一个指向整型的指针,应该使用:________。
答案:int *pointer_name;三、简答题1. 请简述C语言中数组和指针的区别。
答案:数组是一组相同类型的元素的集合,可以通过索引访问每个元素。
指针是一个变量,它存储了另一个变量的内存地址。
数组名可以被用作指向数组首元素的指针,但数组本身是一个固定大小的实体,而指针可以被重新赋值为其他地址。
2. 解释C语言中的结构体(struct)是什么?答案:结构体是一种用户定义的数据类型,它允许将不同的数据类型组合成一个单一的数据结构。
它使得可以创建包含多种数据类型的复杂数据结构。
四、编程题1. 编写一个C语言程序,实现计算两个整数的和,并输出结果。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("Enter two integers: ");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("The sum is: %d\n", sum);return 0;}```2. 编写一个C语言程序,实现将一个字符串反转,并输出结果。
福师1203考试批次《C++语言程序设计》复习题及参考答案本课程复习题所提供的答案仅供学员在复习过程中参考之用,有问题请到课程论坛提问。
福师1203考试批次《C++语言程序设计》复习题及参考答案一本复习题页码标注所用教材为:教材名称单价作者版本出版社C++程序设计教程39.5 钱能2005年9月第2版清华大学出版社(第二版)如学员使用其他版本教材,请参考相关知识点一、选择填空(每小题2分,计16小题,共32分)1、类MyClass的定义如下:class MyClass{public:MyClass() { value = 0;}SetVariable(int i) { value = i; }private:int value;}则对下列语句序列正确的描述是_______。
MyClass *p,my; p=&my;A)语句p=&my;是把对象my赋值给指针变量pB)语句MyClass *p,my;会调用两次类MyClass的构造函数C)对语句 *p.SetVariable(5)的调用是正确的D)语句p->SetVariable(5)与语句my.SetVariable(5)等价【参考答案】:D2、对类的构造函数和析构函数描述正确的是_______。
A) 构造函数不能重载,析构函数可以重载B)构造函数可以重载,析构函数不能重载C)构造函数可以重载,析构函数也可以重载D)构造函数不能重载,析构函数也不能重载【参考答案】:B3、在C++中,数据封装要解决的问题是______。
A)数据的规范化 B)便于数据转换C)避免数据丢失 D)防止不同模块之间数据的非法访问【参考答案】:D4、对于拷贝构造函数,正确的描述是________。
A)在C++语言中,如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造函数B)必须为每个类定义拷贝构造函数C)如果要使用拷贝构造函数,则必须在类中先定义D)当定义了类的构造函数时,如果要使用拷贝构造函数,则必须定义拷贝构造函数【参考答案】:A5、继承具有_____,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。
A)规律性 B)传递性 C) 重复性 D)多样性【参考答案】:B6、一个类的友元函数或友元类能够通过成员操作符访问该类的________。
A)私有成员 B) 所有成员 C)公用成员 D) 保护成员【参考答案】:B7、关于纯虚函数和抽象类的描述中,错误的是________。
A)纯虚函数是一种特殊的虚函数,它没有具体的实现B)抽象类是指具有纯虚函数的类C)一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类D)抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出【参考答案】:C8、__①___提供了类对外部的接口, __②____是类的内部实现,而__③___不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。
A)公有成员 B)私有成员 C)私有成员函数 D)保护成员【参考答案】:A、C、D9、关于C++语言和C语言的关系的下列描述中,错误的是________。
A)C语言是C++语言的一个子集B)C语言和C++语言都是面向对象的语言C)C++语言与C语言兼容D)C++语言对C语言做了些改进【参考答案】:B10、组成C++语言程序的是________。
A)子程序 B)过程 C)函数 D)主程序和子程序【参考答案】:C11、C++语言规定:一个源程序中,main函数的位置________。
A)必须在最开始 B)必须在系统调用的库函数的后面C)可以任意 D)必须在最后【参考答案】:C12、C++中cin是________。
A)一个标准的语句 B)预定义的类C)预定义的函数 D)预定义对象【参考答案】:D13、将C++源程序进行________可得到目标文件。
A)编辑 B)编译C)连接 D)拼接【参考答案】:B14、将目标文件进行________可得到可执行文件。
A)编辑 B)编译C)连接 D)拼接【参考答案】:C15、下列符号中能用作C++自定义标识符的是________。
A)5abc B)ifC)-abc D) abc【参考答案】:D16、若要在if后一对圆括号中表示条件“a不等于0成立”,则能正确表示这一关系的表达式为________。
A)a<>0 B)!aC)a=0 D)a【参考答案】:D二、写出下列程序的运行结果1、(4分)#include <iostream.h>#include <string.h>class StudentID{public:StudentID(int id=0 ){value=id;cout <<"Assigning student id " <<value <<endl; }~StudentID(){cout <<"Destructing id " <<value <<endl;}protected:int value;};class Student{public:Student(char* pName="no name",int ssID=0):id(ssID) {cout <<"Constructing student " <<pName <<endl; strncpy(name,pName,sizeof(name));name[sizeof(name)-1]='\n';}protected:char name[20];StudentID id;};void main(){Student s("Mary",2001);Student t("John");}程序运行的结果为:【知识点】:对象生灭,见P293,主要理解成员的初始化(P305)2、(5分)#include <iostream.h>class Point{int x,y;public:Point(int x1,int y1){x=x1;y=y1;}virtual int area() const{return 0;}};class Rect:public Point{int l,w;public:Rect(int x1,int y1,int l1,int w1):Point(x1,y1){l=l1;w=w1;}virtual int area() const{return l*w;}};void fun(Point &p){cout << p.area() << endl;}void main(){Rect rec1(3,4,10,7),rec2(5,10,8,16);Point *base=&rec2;fun (rec1);fun(*base);}程序运行的结果为:【知识点】:继承,见P327,主要理解派生类的构造和继承方式。
3、(2分)void main(){ int i=8;switch (i){ case 9:i=i+1;Default:i=i+1;Case 10:i=i+1;Case 11:i=i+1;}cout<<i;}程序运行的结果为:【知识点】:switch语句,见P314、(3分)void main(){ int k=4,n=0;for (;n<k;){ n++;if(n%3!=0) continue;k--;}cout<<k<<”,”<<n;}程序运行的结果为:【知识点】:for循环,见P36;continue语句,见P51三、填空题1、下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。
(8分)class MyClass{public:MyClass(int a);~MyClass();private:int* X;};MyClass::MyClass(int a){____①_____;}MyClass::~MyClassO{____②______;}【知识点】:构造函数的成员初始化(参见P305)和析构函数(参见P316)2、以下是统计一个英文句子中字母出现个数的程序。
请将此程序补充完整。
(8分)#include <iostream.h>int count(char str[]);void main() {char sl[80];cout<<”Enteryaline:”;cin>>sl;cout<<”count=”<<count(sl)<<endl;}int count(char str[]) {int num=0;for(int i=0;str[i];i++)if(_____(1)_________) num++;return______(2)________;}【知识点】:函数机制,见P1343、写出下面函数的功能。
(9分)Float FI(int n) //n为大于等于1的整数{float x,y=0;do{cin>>x;n--;y+=x*x;}while(n>0);return y;}答:该函数的功能为:______________________【知识点】:do-while循环,参见P39四、编程题1、定义一个Shape抽象类,由它派生出Rectanglr和Circle类,二者都有GetArea( )函数计算对象的面积,GetPerim( ) 函数计算对象的周长。
(9分)#include <iostream.h>class Shape{[①定义GetArea 和GetPerim函数 ______]};class Circle:public Shape{public:Circle(float radius):itsRadius(radius){}float GetArea(){return 3.14*itsRadius*itsRadius;}float GetPerim(){return 6.28*itsRadius;}private:float itsRadius;};class Rectangle : public Shape{public:[②定义Rectangle构造函数_____________][③定义 GetArea()和 GetPerim()函数_______]private:float GetLength(){return itsLength;}float GetWidth(){return itsWidth;}private:float itsWidth;float itsLength;};【知识点】:继承,见P327,主要理解派生类的构造以及继承方式。