C++语言程序设计练习题
《C语言程序设计》练习题及答案

《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语言程序设计》综合练习题一、单选题1. C语言中基本数据类型有。
CA)整型、实型、逻辑型B)整型、字符型、逻辑型C)整型、实型、字符型D)整型、实型、字符型、逻辑型2. 在C语言中,数字O29是一个。
AA)八进制数 B)十进制数 C)十六进制数 D)非法数3. 在以下关于C语言的不严格的叙述中,错误的说法是。
AA)在标识符中,大写字母和小些字母的意义相同B)有些不同类型的变量可以在一个表达式中运算C)在赋值表达式中等号“=”左边的变量和右边的值可以是不同类型D)同一个运算符号在不同的场合可以有不同的含义4.下列关于C语言用户标识符的叙述中正确的是。
BA)用户标识符中可以出现下划线和中划线(减号)B)用户标识符中不可以出现中划线,但可以出现下划线C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头【解析】考查C语言中的用户标识符规则,在C语言程序设计中,用户标识符是由字母、数字和下划线组成的,并且第一个字符必须是字母或下划线。
5. 结构化程序设计方法中有三种基本控制结构,以下不正确的是。
DA) 顺序结构B) 选择结构C) 循环结构 D) 数组结构6. C语言提供的合法关键字是。
DA) swicth B) cha C) Case D) default7.以下非法的赋值语句是CA) n=(i=2,++i); B)j++; C) ++(i+1); D)x=j>0;【解析】对表达式不能进行自加自减运算。
8.在以下一组运算符中,优先级最高的运算符是。
A) <= B) = C) % D) &&【解析】C语言常用的积累运算符的优先级关系是:逻辑非“!”>算术运算符>关系运算符>逻辑与“&&”>逻辑或“||”>赋值运算符>逗号运算符。
由于C选项为求余运算符,所以本题正确答案为C选项。
(完整版)C语言程序设计练习题(含程序及参考答案)

(完整版)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语言程序设计练习题

C语言程序设计练习题一、选择题1.以下八进制数写法正确的是()A.0378 B.427 C.0417 D.04192.若变量已正确定义为int型,要通过语句scanf(“%d,%d,%d ”,&a,&b,&c);给a赋值1,给b赋值2, 给c赋值3, 以下输入形式中错误的是(✞代表一个空格符)()A.✞✞✞1,2,3<回车> B.1✞2✞3<回车>C.1,✞✞✞2, ✞✞✞3<回车> D.1,2,3<回车>3.x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()A、INPUT x、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);4.若w,x,z均为int型变量,则执行以下语句后的输出为。
w=3;z=7;x=10;printf("%d\n",x>10?x+100:x-10);printf("%d\n",w++||z++);printf("%d\n",!w>z);printf("%d\n",w&&z);A. 0B. 1C. 0D. 01 1 1 11 1 0 01 1 1 05.分析以下程序, 下列说法正确的是。
main(){int x=5,a=0,b=0;if(x=a+b)printf("* * * *\n");elseprintf("# # # #\n");}A. 有语法错,不能通过编译B. 通过编译,但不能连接C. 输出* * * *D. 输出# # # #6.程序段如下:则以下说法中正确的是:()。
C语言程序设计练习题(答案)

四、找出下面程序中的所有语法错误,然后在计算机上运行输出正确结果。
1.(1)Void应为void;(2)INT应为int;(3)“/* COMPUTE RESULT”后缺少“*/”;(4)“printf ("The answer is %i\n" sum);”应为“printf ("The answer is %d\n" ,sum);”
①在VC环境中选择“文件”菜单,然后单击“新建”菜单项。如图1-2所示
图1-2选择新建
②在弹出的新建对话框中设置好相应的内容,如图2-2所示。要事先准备好保存文件的目录,例d:\lx目录。在图1-3中“文件”一栏的源程序文件的扩展名一定要输入C语言程序的扩展名“.c”。设置好后,单击“OK”,就回到了VC++的编辑界面,即将进行输入和编辑的源程序文件example.c文件存放在D盘的LX目录下。
int main (void)
{
printf ("This is my first C program.\nAnd programming in C is even more fun.\n");
return 0;
}
实验4(1)计算33+56的和。
解题思路:将例1.2中变量值改为33与56代码如下:
#include <stdio.h>
int main( )
{int a,b,c;
a=2;b=3;
C=a+b;错误:C未定义
printf(“%d+%d=%d\n”,a,b,c);
return 0;
}
运行结果:2+3=5
c语言程序设计习题1-4章练习

int a=1,b=2,c=3,d=4,k;
k=a>b?a:c>d?c:d
4.已知:int a=5;则执行a+=a-=a*a;语句后,a的值为【6】。
5.下面程序的运行结果是x=【7】,y=【8】。
main( )
{ float x=4.9;int y;
y=(int)x;
char ch;
scanf("%c",&ch);
ch=(ch>=′A′&&ch<=′Z′)?(【1】):ch
printf("【2】\\n",ch);
2.下面程序段的执行结果是x=【3】,y=【4】。
inta=3,b=5,x,y;
x=a+1,b+6;
y=(a+1,b+6);
printf("x=%d,y=%d",x,y);
B)11.000000,12.000000,13
C)11.0000000,12,13
D)11,12.000000,13
15.执行以下程序后x的值为【】。
unsigned int x=65535;
printf("%d\\n",x);
A) 65535B)1C)有错误D)-1
二、填空题
1.下面程序段的功能是输出大写字母对应的小写字母的ASCII码,请填空。
12.执行下面程序段,给x、y赋值时,不能作为数据分隔符的是【】。
int x,y;
scanf("%d%d",&x,&y);
A)空格B)Tab键C)回车D)逗号
13.下面合法的语句是【】。
C语言程序设计阶段考试练习题(答案)

第 2页 共7 页(A )0 (B )1 (C )2(D )311. 以下正确的C语言标识符是( )。
(A )%x(B )a+b(C )a123(D )test !12. 下列字符序列中,不可用作C 语言标识符的是( )。
(A )abc123 (B )no.1 (C )_123_ (D )_ok13. 下列符号常量中非法的是( )。
(A )’\a’(B )’b’(C )’\’(D )’3’14. 在C 语言中,不同的类型数据混合运算时,要先转换成同一类型后进行运算。
设一表达式中包含有int 、long 、unsigned 和char 类型的变量和数据,则表达式最后的运算结果是( )类型数据。
(A )int(B )char(C )unsigned(D )long15. 如下程序的执行结果是( )。
{ int n=1; printf(“%d %d %d \n”,n, n++,n --);} (A )1 1 1 (B )1 0 1(C )1 1 0(D )1 2 116. 有如下程序:int a1,a2; c har c1,c2; scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);正确的输入是( )。
(A )10A 20B<CR> (B )10 A 20 B<CR> (C )10 A20B<CR> (D )10A20 B<CR> 17. 有如下程序: scanf(“a=%d,b=%d,c=%d”,&a,&b, &c);若要求a,b,c 的值分别为1,3,2,正确的输入是( )。
(A )132<CR> (B )1,3,2<CR>(C )a=1,b=3,c=2<CR> (D )a=1 b=3 c=2<CR>18.与数学式子129 x x n对应的C 语言表达式是( )。
C语言程序设计试题_练习题

C语言程序设计试题_练习题一、选择题:(20分,每题2分)1.以下不正确的C语言标识符是()。
A.ABCB.abcC.a_bcD.ab.c2.C程序是由构成的。
A.主程序与子程序B.主函数与若干子函数C.一个主函数与一个其它函数D.主函数与子函数3.以下说法中正确的是:A.在C语言中,实参与其对应的形参各占独立的存储单元;B.在C语言中,实参与其对应的形参共占同一个存储单元;C.在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元;D.在C语言中,形参是虚拟的,不占存储单元。
4.设n=3;则n++的结果是()。
A.2B.3C.4D.55.设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是()。
A.0B.1C.2D.36.凡是函数中未指定存储类别的局部变量其隐含的存储类别是()。
A.自动(auto)B.静态(tatic)C.外部(e某tern)D.寄存器(regiter)7.在while(某)语句中的某与下面条件表达式等价的是:A.某==0B.某==1C.某!=1D.某!=08.若有以下说明和语句:tructworker{intno;~char某name;}work,某p=&work;则以下引用方法不正确的是()。
A.work.noB.(某p).noC.p->noD.work->no9.以下对二维数组进行正确初始化的是()。
A.inta[2][3]={{1,2},{3,4},{5,6}};B.inta[][3]={1,2,3,4,5,6};C.int a[2][]={1,2,3,4,5,6};D.inta[2][]={{1,2},{3,4}};10.二维数组a有m列,则在a[i][j]之前的元素个数为:A)j某m+iB)i某m+jC)i某m+j-1二、给出下列程序的运行结果:(20分,前四题每题3分,后两题每题4分)1.#include<tdio.h>main(){inti=16,j,某=6;j=i+++1;某某=i=j;printf(“%d,%d\n”,j,某);}运行结果是:2.#include<tdio.h>#include<math.h>main(){inta=1,b=4,c=2;float某=10.5,y=4.0,z;z=(a+b)/c+qrt((double)y)某1.2/c+某;printf(“%f\n”,z);}运行结果是:3.#include<tdio.h>main(){inta,b,c,d;a=c=0;b=1;d=20;if(a)d=d-10;eleif(!b)if(!c)d=25;eled=15;printf(“d=%d\n”,d);}运行结果:4.main(){inti=10;witch(i){cae9:i+=1;cae10:i+=1;cae11:i+=1;}printf(“%d”,i);}运行结果:5.#include<tdio.h>main(){inta[]={1,2,3,4},i,j,=0;j=1;for(i=3;i>=0;i--){=+a[i]某j;j=j某10;}printf("=%d\n",);}运行结果:6.func(int某){某=20;}main(){int某=10;func(某);printf(“%d”,某);}运行结果:三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++面向对象程序设计练习题一、选择题1、C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是____。
A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念2、在C++中,数据封装要解决的问题是_____。
A、数据的规范化B、防止不同模块之间数据的非法访问C、避免数据丢失D、便于数据转换3、下面对析构函数的正确描述是_______。
A、析构函数没有参数B、析构函数必须由用户定义C、系统不能提供默认的析构函数D、析构函数可以设置默认参数4、关于成员函数特征的下列描述中,_________是错误的。
A、成员函数可以是静态的B、成员函数可以重载C、成员函数一定是内联函数D、成员函数可以设置缺省参数值5、关于继承的描述中,________是正确的。
A、析构函数不能被继承B、派生类是基类的子集C、子类型关系是可逆的D、派生类是基类的子类型6、下面函数原型声明中,_______声明了fun为虚函数A、void fun( )=0;B、virtual void fun( );C、virtual void fun( )=0;D、virtual void fun( ){};7、下列静态数据成员的特性中,_________是错误的。
A、静态数据成员不是所有对象所共用的B、说明静态数据成员时前边要加修饰符staticC、静态数据成员要在类体外进行初始化D、引用静态数据成员时,要在其名称前加<类名>和作用域运算符8、声明一个类的对象时,系统自动调用_________函数,撤消对象时,系统自动调用_________函数。
①普通函数;②纯虚函数;③析构函数;④成员函数;⑤构造函数⑥New函数A、③①B、④②C、⑥③D、⑤③9、关于delete运算符的下列描述中,_________是错误的。
A、它必须用于new返回的指针;B、对一个指针可以使用多次该运算符;C、使用它删除对象时要调用析构函数;D、指针名前只有一对方括号符号,不管所删除数组的维数。
10、已知类A中的一个成员函数的说明如下:void Set(A &a);则该函数的参数“A &a”的含义是________。
A、变量A与a按位与后作函数参数B、将变量a的地址赋给类AC、类A对象引用a用作函数的形参D、指向A的指针为a11、下面关于友元函数的描述中,正确的是________。
A、友元函数破坏了类的封装性和隐藏性B、友元函数是类的成员函数C、友元函数的实现必须在类的内部定义D、友元函数不能访问类的私有成员12、在创建派生类对象时,构造函数的执行顺序是_________。
A、对象成员构造函数、基类构造函数、派生类本身的构造函数B、基类构造函数、对象成员构造函数、派生类本身的构造函数C、基类构造函数、派生类本身的构造函数、对象成员构造函数D、派生类本身的构造函数、基类构造函数、对象成员构造函数13、下面描述中,正确的是_________。
①虚函数是没有实现的函数②纯虚函数的实现在派生类中③抽象类指针可以指向不同的派生类④抽象类是没有纯虚函数的类A、①和②B、③和④C、②和③D、①②③④14、一个函数功能不太复杂,但要求被频繁调用,选用_______。
A、重载函数B、嵌套函数C、递归函数D、内联函数15、假设有函数模板定义如下:Template <typename T>Max(T a, T b, T &c){ c=a+b; }下列选项正确的是________。
①float x,y; float z; ②int x,y,z; ③float x; int y, z; ④int x,y; float z;Max(x,y,z); Max(x,y,z); Max(x,y,z); Max(x,y,z);A、②④B、②③C、①③D、③④16、在C++中,要实现动态联编,必须使用________调用虚函数A、类名B、派生类指针C、对象名D、基类指针17、C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过_______派生了新的类。
A、继承B、复用C、封装D、引用18、拷贝(复制)构造函数的作用是________。
A、进行数据类型的转换B、用对象初始化对象C、用对象调用成员函数D、用一般类型的数据初始化对象19、C++语言建立类族是通过________。
A、类的嵌套B、虚函数C、抽象类D、类的继承20、关于纯虚函数和抽象类的描述中,错误的是________。
A、纯虚函数是一种特殊的虚函数,它没有具体的实现B、抽象类是指具有纯虚函数的类C、一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类D、抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出二、填空1、所有的面向对象程序设计语言,都支持三个共同的本质特征____对象____、类和___继承_____。
2、为了解决程序中函数调用的效率问题,引入了_____内联函数___,定义时需在函数前面加上_____inline___说明;为了提高程序的运行效率,引入了_____友元函数___,定义时需在函数前面加上friend说明。
3、利用成员函数对二元运算符进行重载时,其左操作数为_____对象本身_____,右操作数为_____重载函数的参数表中的形参_____。
4、设置虚基类的目的是___解决二义性__,可通过______virtual____标识虚基类。
5、对象是______数据____和_______函数___的封装体。
67、定义重载函数时,要从__________形参个数______和_________参数类型_______上进行区分。
8、对虚函数使用基类类型的指针或引用调用,系统使用____动态____联编;使用对象调用时,系统使用___静态_____联编。
9、C++提供的_____继承___机制允许一个派生类继承多个基类,即使这些基类是相互无关的。
三、简答题:(共20分)1、什么叫做虚基类?它有何作用? (4分)在多重继承中,如果多条继承路径上有一个公共的基类,则在这些路径的汇合点上的派生类会产生来自不同路径的公共基类的多个拷贝,如果用virtual把公共基类定义成虚基类,则只会保留公共基类的一个拷贝。
引进虚基类的目的是为了解决二义性问题,使得公共基类在它的派生类对象中只产生一个基类子对象。
2、简述虚函数与重载函数的区别? (6分)答:(1)重载函数要求函数有相同的返回值类型和函数名称,并有不同的参数序列;而虚函数则要求这三项(函数名、返回值类型和参数序列)完全相同;(2)重载函数可以是成员函数或友员函数,而虚函数只能是成员函数;(3)重载函数的调用是以所传递参数序列的差别作为调用不同函数的依据;虚函数是根据对象的不同去调用不同类的虚函数;(4)虚函数在运行时表现出多态功能,这是C++的精髓;而重载函数则在编译时表现出多态性。
3、派生类构造函数执行的次序是怎样的? (5分)答:派生类构造函数的执行顺序是先执行所有基类的构造函数(顺序按照定义派生类是指定的各基类顺序),再执行对象成员所在类的构造函数(顺序按照他们在类中的声明顺序),最后执行派生类构造函数体中的内容。
4、什么叫做抽象类?抽象类有何作用?抽象类的派生类是否一定要给出纯虚函数?(5分)答:带有纯虚函数的类是抽象类.抽象类的主要作用是通过它为一个类族建立一个公共的接口.使它们能够更有效地发挥多态特性。
抽象类声明了一组派生类共同操作接口的通用语义.面接口的完整实现,即纯虚函数的函数体,要由派生类自己给出.但抽象类的派生类并非一定要给出纯虚函数的实现.如果派生类没有给出纯虚函数的实现,这个派生类仍然是一个抽象类。
四、完成程序题:根据题目要求,完成程序填空。
(10分)1)对于下面定义的类MyClass,在函数f()中将对象成员m 的值修改为60的语句(划线处),请将其补充完整。
(4分)答: __① ptr - > SetValue(60)___________2)在下面程序横线处填上适当的语句,使其输出结果为0,56,56。
(6分)#include <iostream.h>class base{ public:____②____ int func( ){ return 0; }};class derived:public base{ public:int a,b,c;void setValue(int x,int y,int z){ a = x; b = y; c = z; }int func( ){return(a+b)*c;}};答:②__virtual________;③_base *pb=&d;__ 五、程序分析题:给出下面程序输出结果。
(共20分)1) #include <iostream> (10分)using namespace std;class BaseClassclass MyClass { public: MyClass(int x) { m=x; } void SetValue(int n1) {m=m1;}private:int m; };int f() { MyClass *ptr=new MyClass(40); _____①_____; } void main( ) { base b; derived d; cout<<b.func( )<<′,′; d.setValue(3,5,7); cout<<d.func( )<<′,′; _______③______ cout<<pb->func( )<<end1;}{public:BaseClass() { cout << "BaseClass Constructor!" << endl;}~BaseClass() { cout << "BaseClass Destructor!" << endl;}};class DerivedClass : public BaseClass{ public:DerivedClass() {cout << "DerivedClass Constructor!" << endl;}~DerivedClass() {cout << "DerivedClass Destructor!" << endl;}};int main(){ DerivedClass d;return 0;}程序运行的结果为:(1)__BaseClass Constructor!___; (2)_ DerivedClass Constructor!_(3)_ DerivedClass Destructor!_; (4)__ BaseClass Destructor!__ (10分)程序运行的结果为:(1)_______a=0 b=0 c=0 _____; (2)______ a=1 b=0 c=0 _(3)______ a=1 b=3 c=0 ______; (4)______ a=1 b=3 c=5 ___六、编程题 (10分)声明一个哺乳动物Mammal 类,再由此派生出狗Dog 类,二者都定义Speak( )class B :public A { public : B(){c=0;} B(int i):A(i){c=0;} B(int i,int j):A(i,j){c=0;} B(int i,int j,int k):A(i,j){c=k;} void display1() { display(); cout<<" c="<<c<<endl; } private: int c;};int main() {B b1; B b2(1); B b3(1,3); B b4(1,3,5); b1.display1(); b2.display1(); b3.display1(); b4.display1(); return 0;}2) #include <iostream>using namespace std;class A{ public:A(){a=0;b=0;}A(int i){a=i;b=0;}A(int i,int j){a=i;b=j;} void display() {cout<<"a="<<a<<" b="<<b; } private: int a,b; };成员函数,基类中定义为虚函数。