c++练习题(2)

合集下载

c语言程序设计练习2

c语言程序设计练习2

设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b 的值是__A____。

A、6.000000B、6C、5.500000D、6.500000对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是(D)。

A、将5个初值依次赋给a[1]至a[5]B、将5个初值依次赋给a[6]至a[10]C、因为数组长度与初值的个数不相同,所以此语句不正确D、将5个初值依次赋给a[0]至a[4]若调用fputc函数输出字符成功,则其返回值是(D)。

A、1B、EOFC、0D、输出的字符以下叙述中不正确的是(C)。

A、C语言中,随机读写方式不适用于文本文件B、C语言中对二进制文件的访问速度比文本文件快C、C语言中,顺序读写方式不适用于二进制文件D、C语言中的文本文件以ASCⅡ码形式存储数据以下程序的输出结果是 D 。

struct st{ int x;int *y;}*p;int dt[4] = {10, 20, 30, 40};struct st aa[4] = { 50, &dt[0] , 60, &dt[0] , 60, &dt[0] , 60, &dt[0]};main(){ p = aa;pritnf(“%d\n”, ++p -> x);pritnf(“%d\n”, (++p) -> x);pritnf(“%d\n”, ++(*p -> y) );}A、B、C、D、若有定义int a[10],*p=a;,则p+5表示AA、元素a[5]的地址B、元素a[6]的地址C、元素a[6]的值D、元素a[5]的值若执行fopen函数时发生错误,则函数的返回值是(D)。

A、地址值B、1C、EOFD、0若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是(C)。

A、(exp!=1)B、(exp==0)C、(exp!=0)D、(exp==1)判断两个字符串是否相等,正确的表达方式是 DA、while(s1=s2)B、while(s1= =s2)C、while(strcmp(s1,s2)=0)D、while(strcmp(s1,s2)= =0)判断char型变量cl是否为小写字母的正确表达式是(D)。

C程序设计复习题(二)

C程序设计复习题(二)

C程序设计复习题(二)C程序设计复习题(二)一、选择1、下面程序的运行结果是______#include#includemain(){ char a[80]=”AB”,b[80]=”LMNP”;int i=0;strcat(a,b);while(a[i++]!=’\0’) b[i]=a[i];puts(b);}A)LB B)ABLMNP C)AB D)LBLMNP2、下面程序的功能是将字符串s中所有的字符c删除。

请选择填空。

#includemain(){ char s[80];int I,j;gets(s);for(i=j=0; s[i]!=’\0’;I++)if(s[i]!=’c’)_________;s[j]=’\0’;puts(s);}A) s[j++]=s[i]; B)s[++j]=s[i]; Cs[j]=s[i];j++; D) s[j]=s[i];3、有下面的程序段:char a[3],b[]=”China”;a=b;printf(“%s”,a);则_______________。

A)运行后将输出China B)运行后将输出ChC)运行后将输出Chi D)编译出错4、下面程序段的运行结果是_______char a[7]=”abcdef”;char b[14]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);A)<空格> B)\0 C)e D)f5、以下正确的说法是______在C语言中:A) 实参和与其对应的形参各占用独立的存储单元;B) 实参和与其对应的形参共占用一个存储单元;C) 只有当实参和与其对应的形参同名时才共同占用存储单元;D) 形参是虚拟的,不占用存储单元。

6、以下程序的运行结果是______fun(int x){ if(x/2>0) fun(x/2-2);printf(“%d”,x);}main(){ fun(20);printf(“\n”);}A)20 8 2 -1 B)2 8 20 C)8 D)-1 2 8 207、以下正确的说法是________如果在一个函数的复合语句中定义了一个变量,则该变量______A) 只在该复合语句中有效B) 在本程序范围内均有效C)在该函数中有效D) 为非法变量8、若使用一维数组名作为函数实参,则以下正确的说法是______A)必须在主调函数中说明此数组的大小B)实参数组类型与形参数组类型可以不匹配C)在被调函数中,不需要考虑形参数组的大小D)实参数组与形参数组名必须一致9、若有定义:int a[4][6];则能正确表示a数组中任一元素a[i][j](此处0≤i<4, 0≤j<6)地址的表达式是________。

c语言练习2

c语言练习2

练习2一、选择题1.下面关于语句的说法中,正确的是( A B D)。

A、对程序中使用的变量、数组、函数等进行定义、声明的语句属于说明性语句B、表达式后面加;号构成表达式语句C、复合语句中不允许包含另一条复合语句D、对程序执行流程起控制作用的语句属于控制语句2.下面语句中,错误的是( B )。

A、m=x>y>z;B、float x=y=z;C、m=x,m>y;D、{k=m>n;k?:x,y;}3.下面不正确的if语句形式是( A )。

A、if (x=y;) m++;B、if (x<=y) m++;C、if (x-y) m++;D、if ( x ) m++;4.下面不正确的if语句形式是( C )。

A、if (x=y) ;B、if (x==y) m=0,n=1;C、if (x>=y) m=0 else n=1;D、if ( x!=y ) m=n;5.下面程序的运行结果是(A)。

void main(){int x=7,y=8,z=9;if(x>y)x=y,y=z; z=x;printf("x=%d y=%d z=%d\n",x,y,z);}A、x=7 y=8 z=7B、x=7 y=9 z=7 D、x=8 y=9 z=7 D、x=8 y=9 z=86.下面程序的运行结果是(B)。

void main(){int x=6,y=6;if(++x<y++)printf(“%d\n”,x++);elseprintf(“%d\n”,y++);}A、6B、7C、8D、97.下面程序的运行结果是(D)。

void main(){int x=1,y=2,z=3,m=1if(!x)m--;else if(!y)m=2;else if(!z);else m=3;printf(“m=%d\n”,m);}A、0B、1C、2D、38.在下面的if语句中,功能上具有等价关系的两条if语句是(B)。

C语言复习题 (2)

C语言复习题 (2)

C语言复习题一、选择题:1.以下不是C语言的特点的是( B )A.C语言简洁、紧凑 B.能够编制出功能复杂的程序C. C语言可以直接对硬件进行操作 D.C语言移植性好2. 以下不正确的C语言标识符是( D )。

A.ABC B.abc C.a_bc D.ab.c3.一个c程序的执行是从( A ).A.main( )函数开始,直到main( )函数结束B.第一个函数开始,直到最后一个函数结束C.第一个语句开始,直到最后一个语句结束D.main( )函数开始,直到最后一个函数结束4.以下不正确的语句(设有int p,q)是( D )。

A.P*=3; B.p/=q; C.p十=3; D.p&&=q5.下列四组选项中,均不是C语言关键字的选项是( A ).A.define B.getc C.include D.whileif char sanf gotype printf case pow6.下面四个选项中,均是合法整形常量的选项是( A ).A.160B.-0xcdfC.-01D.-0x48a-0xffff 01a 986,012 2e5011 0xe 0668 0x7. 下面四个选项中,均是不合法浮点数的选项是( B ).A.160.B.123C.-.18D.-e30.12 2e4.2 123e4 0.234e3 .e5 0.0 1e38. 若有代数式3ae/bc,则不正确的C语言表达式是( C )A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*39. 若以下变量均是整形,且num=sum=7;则计算表达式sUM=num++,sUM++,++num后sum 的值为(A ).A.7B.8C.9D.1010.若有定义:int a=7; float x=205 ,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是( A )。

A.2.500000B.2.750000C.3.500000D.0.00000011. s izeof(float)是( B )。

C语言程序设计复习题 (2)

C语言程序设计复习题 (2)

C\C++程序设计复习题一、选择题1、一个C语言程序总是从( C )开始执行A) 书写顺序的第一个函数B) 书写顺序的第一条执行语句C) 主函数main()D) 不确定2、以下能正确定义二维数组的是( C )A.int a[][3];B.int a[][3]=2{2*3};C.int a[][3]={};D.int a[2][3]={{1},{2},{3,4}};3、设int x=3,y=4,z=5,则下列表达式中的值为0的是( D )A) …x‟&&‟y‟B) x||y+z&&y-z C) x<=y D) !((x<y)&&!z||1)4、执行以下程序段后,i的值是( C )int i=10;switch(i+1){ case 10: i++; break;case 11: ++i;case 12: ++i; break;default : i=i+1;}A) 11 B) 13 C) 12 D) 145、语句while(!e);中的条件!e等价于( B )A) e==0 B)e!=1 C) e!=0 D) 运行时出错6、下列数据中,为字符串常量的是(B )。

(A)…A‟(B)“house”(C)How do you do.(D)‟$abc‟7、用int a[4]={1,2}; 对数组进行初始化后,数组元素a[3]的值是( B )A) 随机值B) 0 C) 1 D) F8、在执行char str[10]=“china\0”;strlen(str)的结果是( B )A)5 B) 6 D) 7 D 99、若有定义,char *p=”computer”; 则语句printf(“%c”,*(p+2))运行结果是( B )A) 随机值B) m C)o D) omputer10、有以下程序( D )main(){ int i=0,x=0;for (;;){if(i==3||i==5) continue;if (i==6) break;i++;s+=i;};printf("%d\n",s);}程序运行后的输出结果是A.10B.13C.21D.程序进入死循环11、以下定义语句中正确的是( C )A.char a='A'b='B';B.float a=b=10.0;C.int a=10,*b=&a;D.float *a,b=&a;12、设有int x=11;则表达式(x++*l/3)的值为( B )。

C语言复习题 (2)

C语言复习题 (2)

有以下程序#include <stdio.h>void main(){ int a=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);printf("%d,%d\n",k,m);}程序运行后的输出结果是__C___。

A、0,0B、0,1C、1,0D、1,1 若变量c为char类型,能正确判断出c为小写字母的表达式是__D_____。

A. 'a'<=c<='z'B. (c>='a')||(c<='z')C. ('a'<=c)and('z'>=c)D. (c>='a')&&(c<='z')以下符合C语言语法的实型常量是__C____。

A、1.2E0.5B、3.14159EC、5E-3D、E15 若变量已正确定义,有以下程序段i=0;doprintf("%d, ",i);while(i++);printf("%d\n",i);其输出结果是____B__。

A. 0,0B. 0,1C. 1,1D. 程序进入无限循环若有以下程序段,int c1=1 ,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是____A__。

A、0B、0.5C、1D、2 以下选项中合法的字符常量是__B____。

A、"B"B、'\010'C、68D、D 有以下程序main(){ char a,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若运行时从键盘上输入:6,5,65,66↙。

C语言基础练习题(含答案)(2)

C语言基础练习题(含答案)(2)
{
int k;
scanf(”%d”, &k);
switch(k)
{ case 1: printf(”%d\n”, k++);
case 2: printf(”%d\n”, k++);
case 3: printf(”%d\n”, k++);
case 4: printf(”%d\n”, k++);
D.switch (grade)
{ case ’C’ :printf(”<60\n”);
break;
case ’B’ :printf(”60——84\n”);
break;
default: printf(”grade is error!\n”);
C.!(x%2) D.x%2
12.已知 x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’ || !y)的值是()。
A.0 B.语法错
C.1 D.“假”
第二章 选择结构
2.1 选择题
1. 已有定义:int x=3, y=4, z=5; 则表达式!(x+y)+z-1 && y+z/2的值是()。
A.6 B.0 C.2 D.1
2. 设a=5,b=6,c=7,d=8,m=2,n=2, 则执行(m=a>b) && (n=c>d)后n的值为()。
#include ”stdio.h”
main()
{ int a=1;
if (a++>1) printf(”%d\n”, a);

《C语言程序设计》复习题(2)-填空题

《C语言程序设计》复习题(2)-填空题

{ unsigned short x=65536; int y;
printf(“%d\n”, y=x);
} 50. 若有 int x=11; 则表达式 1/3*x++的值为 0 。
51. 执行语句 printf(“%d” , (a=2)&&(b=-2) ); 后的 输出是 1 。
52. 执行下列程序段后, 变量 i 的值是 16 。 int i=10 ; switch (i) { case 9: i+=0; case 10: i+=1; case 11: i+=2; default: i+=3; }
值为 -2 。 27. C语言中 标号 标识符无值、无类型且不需要声
明便可直接使用。 28. 若已声明: int x=1 , z=1 , y=1 , k ;则执行表达式
k=x++||++y&&++z后,变量k,x,y,z的值是 1,2,1,1 。
最小数是: 1000000000000000
29. 若用八进制常量表示C中的int型常1量0 (0160bits0)0
float x=25.0;
fwrite(&x,sizeof(float),1,fp);
48. 若有定义: int b=17; float a=4.5, c=6.5;
则表达式 a+(int)(b/3*(int)(a+c)/2)%4的值为 49. 下列程序执行后的输出结果是 0 。
7.5 。
main( )
是 for 。
35. 若一个函数不需要形式参数 , 则在定义函数时, 应使形式参数表为空或放置一个 void 。

C_C++日常练习试卷(二)--含答案

C_C++日常练习试卷(二)--含答案

C/C++日常练习试卷(二)一、单选题1. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()A. 类B. 对象C. 函数体D. 数据块答案:A解析:类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。

2. 在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的()A. 私有成员B. 公有成员C. 保护成员D. 保护成员或私有成员答案:A解析:在派生类中基类的保护或者基类公有都可以直接访问,基类的私有成员只能是基类的成员函数来访问。

所以选择A项。

3. 对基类和派生类的关系描述中,错误的是()A. 派生类是基类的具体化B. 基类继承了派生类的属性C. 派生类是基类定义的延续D. 派生类是基类的特殊化答案:B解析:派生类的成员一个是来自基类,一个来自本身,所以派生类是基类的扩展,也是基类的具体化和特殊化,派生类是对基类扩展。

B项基类不能继承派生类成员,所以错误。

4. 关于this指针使用说法正确的是()A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码B. 保证基类私有成员在子类中可以被访问。

C. 保证基类保护成员在子类中可以被访问。

D. 保证基类公有成员在子类中可以被访问。

答案:A解析:this指针是隐藏的,可以使用该指针来访问调用对象中的数据。

基类的成员在派生类中能否访问,与继承方式有关,与this没有关系。

所以选择A项。

5. 所谓多态性是指()A. 不同的对象调用不同名称的函数B. 不同的对象调用相同名称的函数C. 一个对象调用不同名称的函数D. 一个对象调用不同名称的对象答案:B解析:多态性有两种静态多态性和动态多态性,静态多态性是指调用同名函数,由于参数的不同调用不同的同名函数;动态多态性是指不同对象调用同名函数时,由于对象不同调用不同的同名函数。

多态性肯定具有相同的函数名,所以选择B项。

6. 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为()A. 内联函数B. 重载函数C. 递归函数D. 嵌套函数答案:A解析:内联函数特征代码少,频繁调用,执行效率高。

c语言习题2

c语言习题2

一、填空共18题(共计60分)第1题(2.0分)以下程序的输出结果是【1】.main(){ int a=0a+=(a=8);printf("%d\n",a);}答案:=======(答案1)=======16第2题(2.0分)有以下程序:main(){ char c;while((c=getchar())!='?') putchar(--c);}程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为【1】答案:=======(答案1)=======X第3题(2.0分)有以下定义和语句struct date{ int day;int month;int year;union{ int share1;float share2;}share;}a;则sizeof(a)的值是【1】.答案:=======(答案1)=======10第4题(2.0分)有以下语句段int n1=10,n2=20;printf("【1】",n1.n2);要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空.n1=10n2=20答案:=======(答案1)=======n1=%d\nn2=%d第5题(2.0分)执行下面的程序段,写出运行后的输出结果为【1】. main(){int i;for (i=0;i<3;i++)switch(i){case 0:printf("%d",i);case 2:printf("%d",i);default:printf("%d",i);}}答案:=======(答案1)=======000122第6题(2.0分)以下程序运行后的输出结果是【1】.main( ){ char c; int n=100;float f=10; double x;x=f*=n/=(c=50);printf("%d %f\n",n,x);}答案:=======(答案1)=======2 20.0第7题(2.0分)以下程序运行后的输出结果是【1】.#include <string.h>void main(){ char ch[]="abc",x[3][4];int i;for(i=0;i<3;i++)strcpy(x[i],ch);for(i=0;i<3;i++)printf("%s",&x[i][i]); printf("\n");}答案:=======(答案1)=======abcbcc第8题(2.0分)以下循环体的执行次数是【1】.main(){int i,j;For(i=0,j=1;i<=j+1; i+=2,j--)Printf("%d\n",i);}答案:=======(答案1)=======1第9题(2.0分)有以下程序main( ){int t=1, i=10;for(; i>=0; i--) t*=i;printf("%d\n",t);}执行后输出结果是【1】答案:=======(答案1)=======第10题(4.0分)下面程序的功能是:使一个字符串按逆序存放,请填空. #include <string.h>main ( ){ char m,str[10];int i,j;gets(str);for(i=0,j=strlen(str);i【1】 ;i++,j--){ m=str[i];str[i]=【2】 ;str[j-1]=m;}printf("%s\n",str);}答案:=======(答案1)=======<j=======(答案2)=======str[j-1]第11题(4.0分)以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果.请填空.int fun( int n){ int m=0,f=1,i;for(i=1; i<=n; i++){ m+=i*f;f=【1】 ;}return m;}main(){ printf("m=%d\n", 【2】 ); }答案:=======(答案1)=======-f=======(答案2)=======fun(10) 第12题(4.0分)下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请填空.main(){ int a,max= 0;scanf ("%d",&a);while(【1】){ if (【2】) max= a;scanf("%d",&a);}printf("%d" ,max );}答案:=======(答案1)=======a=========或=========a!=0=======(答案2)=======max<a第13题(4.0分)下面程序的功能是从键盘输入的10个整数中,找出第一个能被7整除的数.若找到,打印此数后退出循环;若未找到,打印 " not exist " .请填空.main( ){int i, a;for (i=1; i<=10; i++){scanf("%d",&a);if(【1】) {printf("%d", a); break;}}if(【2】) printf(" not exist \n");}答案:=======(答案1)=======a%7 = = 0=======(答案2)=======i>10第14题(4.0分)下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环.请填空.main(){long int num;scanf("%ld",&num);do{ if(【1】) printf("%ld",num);scanf("%ld",&num);}while(【2】);}答案:=======(答案1)=======num/100%10==3=======(答案2)=======num第15题(4.0分)以下fun函数把ch中的大写字母转换成字母序列中的下一个大写字母,字母Z转换成字母A,其它字符不变,返回转换后的字母或其它字符.请填空. char fun(char ch){if(ch= ='Z') ch=【1】;else if(ch>='A'&&ch<='Y') ch=【2】;return ch;}答案:=======(答案1)======='A'=======(答案2)=======ch+1第16题(6.0分)设有以下程序main(){ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i+1;j<3;j++) a[j][i]=0;for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%2d ",a[i][j]); printf("\n");}}运行以上程序,输出3行结果.问:第1行的输出为【1】; 第2行的输出为【2】;第3行的输出为【3】.答案:=======(答案1)=======1 2 3=======(答案2)=======0 5 6=======(答案3)=======0 0 9第17题(6.0分)下面程序的功能是将从键盘输入的一对数,由小到大排序输出.当输入一对相等数时结束循环,请填空.#include <stdio.h>main(){ int a,b,t;scanf("%d%d",&a,&b);while(【1】){ if (【2】){ t=a;a=b;b=t;} printf("%d,%d",a,b);【3】;}}答案:=======(答案1)=======a!=b=========或=========b!=a=======(答案2)=======a>b=========或=========b<a=======(答案3)=======scanf("%d%d",&a,&b)第18题(6.0分)以下程序运行后的输出结果第1行是【1】第2行是【2】第3行是【3】main(){ int i,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i+1;j<3;j++) a[j][i]=0;for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%d ",a[i][j]);printf("\n");}}答案:=======(答案1)=======1 2 3=======(答案2)=======0 5 6=======(答案3)=======0 0 9二、单项选择共20题(共计40分)第1题(2.0分)以下能对二维数组a进行正确初始化的语句是________. A:int a[2][]={{1,0,1},{5,2,3}};B:int a[][3]={{1,2,3},{4,5,6}};C:int a[2][4]={{1,2,3},{4,5},{6}};D:int a[][3]={{1,0,1},{},{1,1}};答案:B第2题(2.0分)已知有预处理命令#include<stdio.h>和声明 char s[10]= "Thank you"; int i;,要求输出字符串"Thank you",以下选项中不能达到要求的语句是________.A:puts(s);B:printf("%s" , s[10]) ;C:for(i=0; s[i]!= '\0' ; i++) printf("%c" , s[i]);D:for(i=0; s[i]!= '\0' ; i++) putchar(s[i]); 答案:B第3题(2.0分)语句while(!E )中的表达式!E等价于( )A:E= =0B:E! =0C:E! =1D:E= =1答案:A第4题(2.0分)表达式"(a=4*5, b=a*2), b-a, a+=2"的值是( ). A:2B:20C:22D:42答案:C第5题(2.0分)下列程序执行后的输出结果是( ).main( ){int x='f';printf("%c \n",'A'+(x-'a'+1));}A:GB:HC:ID:J答案:A第6题(2.0分)以下程序输出的结果是( ).main(){ int i,sum=0;for(i=1; i<=10; i++) ;sum=sum+i;printf("%d",sum);}A:55B:10C:11D:以上皆非答案:C第7题(2.0分)以下程序段循环执行的次数是( ).int k=0;while(k = 1) k++;whileA:无限次B:有语法错,不能执行C:一次也不执行D:执行1次答案:A第8题(2.0分)有关下述语句输出的判断中,正确的是( ).Char x='\x66';Printf("%d",x);A:赋值非法B:输出值不确定C:输出值为66D:输出值为102答案:D第9题(2.0分)若函数f的定义如下:void f(void){ printf(("That's great!"); )则调用函数f的正确形式是( ).A:f;B:f( );C:f(void);D:f(1);答案:B第10题(2.0分)设有:int c1=1,c2=2,c3; 则执行c3=c1/c2后,c3的值是( ).A:0B:1/2C:0.5D:1答案:A第11题(2.0分)printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列.如果字符串长度大于5,则输出按方式( ).A:从左起输出该字串,右补空格B:按原字符长从左向右全部输出C:右对齐输出该宇串,左补空格D:输出错误信息答案:B第12题(2.0分)以下叙述正确的是( ).A:do-while语句构成的循环不能用其它语句构成的循环来代替.B:do-while语句构成的循环只能用break语句退出.C:用do-while语句构成的循环,在while后的表达式为非零时结束循环.D:用do-while语句构成的循环,在while后的表达式为零时结束循环.答案:D第13题(2.0分)下列叙述中不正确的是( ).A:每个C程序文件中都必须有一个main()函数B:在C程序中main()函数的位置是固定的C:C程序可以由一个或多个函数组成D:在C程序的函数中不能定义另一个函数答案:B第14题(2.0分)以下程序运行时输出的结果是( ).int x=1;main( ){ printf("%d",f(x)); }#define x 2;int f(int y){ return x+y; }A:1B:2C:3D:4答案:C第15题(2.0分)程序执行后的输出结果是( ).main( ){ int i,n=0;for(i=2;i<5;i++){ do{ if(i%3) continue;n++;} while(!i);n++;}printf("n=%d\n",n);}A:n=5B:n=2C:n=3D:n=4答案:D第16题(2.0分)以下选项均以fun函数定义的头部,其中错误的是________. A:int fun(int x, int y[ ])B:int fun(int x, int y[x])C:int fun(int x, int y[3])D:int fun(int x, int *y)答案:B第17题(2.0分)设有:int i=8;j=10; m=i++;n=++j;执行printf("%d, %d, %d, %d",i ,j,m,n);后,屏幕上显示( )A:8,11,9,10B:9,11,8,11C:9,11,8,10 D:8,10,9,11答案:B第18题(2.0分)以下程序的输出结果是( ).main(){ int i=0,a=0;while(i<20){ for(;;){ if((i%10)==0) break;else i--;}i+=11; a+=i;}printh("%d\n",a);}A:21B:32C:33D:11答案:B第19题(2.0分)若程序中已有相应的声明,下列语句中错误的是________. A:printf(i= =4 ? "%6d\n" : "%6d" , i);B:i= =4 ? printf("%6d\n" , i) : printf("%6d" , i); C:for(i=10; ; i--) if(i = =1) break;D:for(i=10; ; i--) if(i --); break;答案:D第20题(2.0分)以下程序的输出结果是( ).main(){int m=6;If(m++>6)printf("%d\n",m);elseprintf(%d\n",--m);}A:7B:6C:5D:4答案:B一、填空共18题(共计60分)第1题(2.0分)以下函数的功能是:求x的y次方,请填空.double fun( double x, int y){ int i;double z;for(i=1, z=x; i<y; i++) 【1】 ;return z;}答案:=======(答案1)=======z*=x第2题(2.0分)设a=2,b=3,x=3.5,y=2.5 求表达式(float)(a+b)/2+(int)x%(int)y的值【1】.答案:=======(答案1)=======3.5第3题(2.0分)执行语句:for(i=10 ; i++<4 ; );后,变量 i的值是:【1】. 答案:=======(答案1)=======11第4题(2.0分)若有声明"int a=5,b=2;",则表达式"b+=(float)(a+b)/2"运算后b的值为【1】.答案:=======(答案1)=======5.5第5题(2.0分)以下程序运行时,输出结果是【1】.#include <stdio.h>void fun(int x){ if(x/2>0) fun(x/2);printf("%d",x%2);}main ( ){ fun(20); putchar('\n'); }答案:=======(答案1)=======10100第6题(2.0分)以下程序运行后的输出结果是【1】#define N 2#define M N+1#define NUM 2*M+1int fib(int n){return ( n<3 ? 2 : fib(n-1)+fib(n-2) );}main( ){printf("%5d%5d\n",NUM,fib(5));}答案:=======(答案1)=======6 10 第7题(2.0分)以下程序运行后的输出结果是【1】.main( ){ int a=3,b=4,c=5,t=99;if(b<a&&a<c) t=a;a=c;c=t;if(a<c&&b<c) t=b;b=a;a=t;printf("%d%d%d ",a,b,c);}答案:=======(答案1)=======4 5 99第8题(2.0分)下列程序的输出结果是【1】.Main(){double d=3.2;Int x,y ;X=1.2;Y=(x+3.8)/5.0;Printf("%f\n",d*y);}答案:=======(答案1)=======第9题(2.0分)设y是int型变量,请写出判断y为奇数的关系表达【1】. 答案:=======(答案1)=======y%2==1第10题(4.0分)表达式-7/2的结果是【1】表达式7%-2的结果是【2】答案:=======(答案1)=======-3=======(答案2)=======1第11题(4.0分)下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请填空.#include "stdio.h"main(){ int m=0,n=0;char c;while((【1】)!='\n'){ if(c>='A' && c<='Z') m++ ;if(c>='a' && c<='z') n++;}printf("%d\n",【2】? n:m);}答案:=======(答案1)=======c=getchar( )=======(答案2)=======m<n=========或=========n>m第12题(4.0分)题号:948下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空.main(){ int a, b, c, i;a=c= 【1】 ;for(i=0;i<10;i+=2){ a+=i;【2】 ;c+=b;}printf("偶数之和=%d\n",a);printf("奇数之和=%d\n",c);}答案:=======(答案1)==============(答案2)=======b=i+1第13题(4.0分)设有以下程序int x1=30,x2=40;main(){ int x3=10,x4=20;sub(x3,x4);sub(x2,x1);printf("%d,%d\n%d,%d\n",x3,x4,x1,x2);}sub(int x,int y){x1=x;x=y;y=x1;}运行后,第一行的结果是【1】,第二行的结果是【2】.答案:=======(答案1)=======10,20=======(答案2)=======40,40第14题(4.0分)#include<stdio.h>main(){int j,k,s,m;for(k=1;k<10;k++){s=1;m=k+2;for(j=k;j<m;j++,k++)s+=j;} printf("s=%d,k=%d",s,k); }程序输出结果【1】,【2】.答案:=======(答案1)=======S=16=======(答案2)=======k=10第15题(4.0分)下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变,请填空.main(){ char a[]="clanguage",t;int i, j, k;k=strlen(a);for(i=0; i<k-2; i+=2)for(j=i+2; j<k; 【1】 )if( 【2】 ){ t=a[i]; a[i]=a[j]; a[j]=t; }puts(a);printf("\n");}答案:=======(答案1)=======j+=2=======(答案2)=======a[i]>a[j]第16题(6.0分)设有以下程序ff(int k){ static int i=1;int j=0;return ++i+k+j++;}main(){ int i,n=0;for(i=0;i<3;i++){ n+= ff(i); printf("%d\n",n); }}运行以上程序,输出3行结果.问:第1行的输出为【1】; 第2行的输出为【2】;第3行的输出为【3】.答案:=======(答案1)=======2=======(答案2)=======6=======(答案3)=======12第17题(6.0分)设有以下程序main( ){ int a[3][3],i,j;for(i=0; i<3; i++)for(j=0; j<3; j++)scanf("%d",&a[i][j]);for(i=0; i<3; i++)for(j=0; j<3; j++)a[i][j]=a[(a[i][j]+1)%2+1][(a[j][i]+2)%2+1];}若输入的数据为:1 3 5 7 9 2 4 6 8 执行程序后,a[0][0]=【1】, a[1][1]=【2】, a[2][2]=【3】.答案:=======(答案1)=======2=======(答案2)=======2=======(答案3)=======6第18题(6.0分)阅读以下程序main(){ char *str[3]={"Fortrain ","Prolog","Pascal "};char **p;int i;p=str;for(i=0;i<3;i++,p++)printf("%c\n ",(*(*p+3)+1));}该程序第1行、第2行及最后一行的输出分别为【1】、【2】和【3】.答案:=======(答案1)=======u=======(答案2)=======m=======(答案3)=======d二、单项选择共20题(共计40分)第1题(2.0分)一个C语言程序是由________.A:一个主程序和若干子程序组成B:函数组成C:若干过程组成D:若干子程序组成答案:B第2题(2.0分)若有声明"float f=123.45678;",则执行语句"printf("%.3f",f);"后,输出结果是________.A:1.23e+02 B:123.457C:123.45678D:1.234e+02答案:B第3题(2.0分)已知函数fun的定义如下:void fun(int x[ ], int y ){ int k;for(k=0; k<y; k++)x[k]+=y;}若main函数中有声明int a[10]={10};及调用fun函数的语句,则正确的fun函数调用形式是________.A:fun(a[ ], a[0]);B:fun(a[0 ], a[0]);C:fun(&a[0], a[0]);D:fun(a[0], &a[0]);答案:C第4题(2.0分)为了判断两个字符串s1和s2是否相等,应当使用( ). A:if (s1= =s2)B:if (s1=s2)C:if ( strcpy (s1,s2) )D:if ( strcmp( s1,s2)= =0 )答案:D第5题(2.0分)关于函数返回值,以下叙述中正确的是( ).A:函数返回值的类型由函数体函数体内return语句包含的表达式的类型决定B:函数返回值的类型由函数头部定义的函数类型决定C:若函数中有多个return语句,则函数的返回值是排列在最后面的return语句中表达式的值D:若函数中没有return语句,则函数没有返回值答案:B第6题(2.0分)以下程序的输出结果是( ).main( ){int a=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);}A:1B:0C:非0的数D:-1答案:A第7题(2.0分)以下叙述正确的是( ).A:一个用C语言编写的程序在运行时总是从main函数开始逐条执行B:main函数是系统库函数C:main函数中每行只能出现一条语句D:main函数必须出现在所用其它函数之前答案:A第8题(2.0分)设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是 ( )A:a&&bB:a<=bC:a||b+c&&b-cD:!((a<b)&&!c‖1)答案:D第9题(2.0分)若有声明"int x=2, y=1, z=0;",则下列关系表达式中有语法错误的是________.A:x>y=2B:z>y>xC:x>y==1D:x==(x=0, y=1, z=2)答案:A第10题(2.0分)运行下面程序,输出的结果是( ).main (){ int u=24,v=16,w;while(v){ w=u%v; u=v; v=w; }printf("%d\n",u);}A:6B:7C:8D:9答案:C第11题(2.0分)在以下各组标识符中,均可以用作变量名的一组是( ). A:a01,Int tB:table_1,a*.1C:0_a,W12D:for,point答案:A一、单选题1、有如下程序main(){int a=5,b=-3,c=4;Printf("%d%d\n",(++a,b++),c-2);}运行该程序的输出结果是( ).A) -42 B) -22C) -4 2D) -2 2答案:B2、设 int x=1, y=1; 表达式(!x||y--)的值是( ).A) 0B) 1C) 2D) -1答案:D3、以下程序段fun(int x, int y, int *z){ *z=x*x+y*y; }main(){ int a=20;fun(3,4,&a);printf("%d",a);}其输出结果是( ).A) 0B) 20C) 25D) 无定值答案:C4、如果a=1,b=2,c=3,d=4, 则条件表达式a>b?a:c>d?c:d 的值为( ).A) 1B) 2C) 3D) 4答案:D。

C++_II_练习题(2)

C++_II_练习题(2)

C++ II 练习题(2)一.单项选择题(每题2分,共20分)1.在C++中,有关类和对象正确说法是( A )。

A.对象是类的一个实例 B.对象是类的存储空间C.一个类只能有一个对象 D.类是程序包,对象是存储空间2.在类定义中,称为接口的成员是( C )。

A. 所有类成员B. private或protected的类成员C. public的类成员D. public或private的类成员3. 一个类的友员函数能够通过( D )访问该类的所有成员。

A.静态数据 B.析构造函数 C.this指针 D.类对象参数4. 下面描述错误的是( B )。

A.自定义构造函数应该是公有成员函数 B.构造函数可以是虚函数C.构造函数在建立对象时自动调用执行 D.构造函数可以重载5. 在类的继承关系中,基类的(B)成员在派生类中可见。

A. 所有B. public和protectedC. 只有publicD. 只有protected6.设B类是A类的派生类,有说明语句A a, *ap;B b, *bp;则以下正确语句是(C)。

A. a=b;B. b=a;C. ap=&b;D. bp=&a;7.C++中,以下( D )语法形式不属于运行时的多态。

A. 根据if语句的求值决定程序流程B. 根据基类指针指向对象调用成员函数C. 根据switch语句的求值决定程序流程D. 根据参数个数、类型调用重载函数8. 假设对A类定义一个重载“+”号运算符的成员函数,以便实现两个A类对象的加法,并返回相加结果,则该成员函数的函数原型为( B )。

A.A operator +( const A &A1, const A &A2 ); B.A A:: operator +( const A &A2 );C.A::operator +( A &A2 ); D.A A::operator +( );9. 一个类模板定义了静态数据成员,则( A )。

C 习题与答案

C  习题与答案

第一章习题一、选择填空1.下列各种高级语言中,()是面向对象的程序设计语言。

A.BASIC;B.PASCAL;C.C++D.Ada2.下列各种高级语言中,()是最早提出了对象的概念。

A.Algol60;B.Simula67;C.Smalltalk;D.C++3.下述面向对象抽象的原理中,()是不对的。

A.数据抽象;B.行为共享;C.进化;D.兼容;4.()不是面向对象系统所包含的要数。

A.重载;B.对象;C.类;D.继承;5.关于C++与C语言的关系的描述中,()是错误的。

A.C语言是C++的一个子集;B.C语言与C++是兼容的;C.C++对C语言进行了一些改进;D.C++和C语言都是面向对象的;6.下面关于对象概念的描述中,()是错误的。

A.对象就是C语言中的结构变量;B.对象代表着正在创建的系统中的一个实体;C.对象是一个状态和操作(或方法)的封装体;D.对象之间的信息传递是通过消息进行的;7.下面关于类概念的描述中,()是错误的。

A.类是抽象数据类型的实现;B.类是具有共同行为的若干对象的统一描述体;C.类是创建对象的样板;D.类就是C语言中的结构类型;8.C++对C语言作了很多改进,下列描述中()使得C语言发生了质变,即从面向过程变成为面向对象。

A.增加了一些新的运算符;B.允许函数重载,并允许设置缺省参数;C.规定函数说明必须用原型;D.引进了类和对象的概念;9.按照标识符的要求,()符号不能组成标识符。

A.连接符;B.下划线;C.大小写字母;D.数字字符;10.下列符号中,()不可作为分隔符。

A.,;B.:;C.?;D.;二、判断下列描述的正确性,对者划√,错者划×。

1.C++引进了引用的概念,对编程带来了很多方便。

Y2.C++允许使用友元,但是友元会破坏封装性。

Y3.C++中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++中使用。

X4.C++中为了减轻使用者的负担,与C语言相比较C++中减少了一些运算符。

C语言习题选2

C语言习题选2

第一章、 数组一.选择题 1.若有语句int a[8];则下述对 a 的描述正确的是( A )。

(A )定义了一个名称为a 的一维整型数组,共有8个元素 (B )定义了一个数组a ,数组a 共有9个元素 (C )说明数组a 的第8个元素为整型变量 (D )以上可选答案都不对 2.在C 语言中,引用数组元素时,其数组下标的数据类型允许是( C )。

(A )整型常量 (B )整型表达式 (C )整型常量或整型表达式 (D )任何类型的表达式 3.下述对C 语言字符数组的描述正确的是( A )。

(A )任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占用存储空间 (B )一维数组的元素在引用时其下标大小没有限制 (C )任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间 (D )一维数组的第一个元素是其下标为1的元素 4.下述对C 语言字符数组的描述中正确的是(B )。

(A )任何一个一维数组的元素在引用时,其下标可以是整型、实型或字符型常量 (B )一维数组的元素实质上就是一个变量,代表内存中的一个存储单元 (C )如果要引用数组中的每一个元素,则直接使用该数组名称即可? (D )以上都不对 5.以下对一维整型数组a 的正确说明是(D )。

(A )int a(10); (B)int n=10,a[n]; (C) int n; scanf(“%d ”,&n);int a[n]; (D) #define SIZE 10 int a[SIZE]; 6.以下能对一维数组a 进行正确初始化的语句是( C )B? (A )int a[10]=(0,0,0,0,0);(B )int a[10]={};(C )int a[]={0};(D )int a[10]=(10*1); 7.若有说明:int a[3][4];则对a 数组元素的正确引用是( C ) (A )a[2][4] (B )a[1,3] (C )a[1+1][0] (D )a(2)(1) 8.以下能对二维数组a 进行正确初始化的语句是(B ) (A )int a[2][]={{1,0,1},{5,2,3}};(B )int a[][3]={{1,2,3},{4,5,6}}; (C )int a[2][4]={{1,2,3},{4,5},{6}};(D )int a[][3]={{1,0,1}{},{1,1}}; 9.若有说明:int a[3][4]={0};则下面正确的叙述是( D ) (A )只有元素a[0][0]可得到初值0(B )此说明语句不正确 (C )数组a 中各元素都可得到初值,但其值不一定为0 (D )数组a 中每个元素均可得到初值0 10.以下各组选项中,均能正确定义二维实型数组a 的选项是( C ) (A )float a[3][4]; float a[][4]; float a[3][]={{1},{0}}; (B )float a(3,4); float a[3][4]; float a[][]={{0};{0}}; (C )float a[3][4]; static float a[][4]={{0},{0}}; (D )float a[3][4]; float a[3][]; 11.若二维数组a 有m 列,则计算任一元素a[i][j]在数组中位置的公式为( D ) (假设a[0][0]位于数组的第一个位置上。

C语言练习题 之2

C语言练习题 之2
9,1
C 语言练习题之二
1.在一个 C 语言源程序中,必不可少的是___________ 。 2.下列叙述中正确的是__________ 。 A.main 函数必须出现在其他函数之前 B.main 函数中至少必须有一条语句 C.C 程序总是从 main 函数的第一条语句开始执行 D.C 程序总是在执行完 main 函数的最后一条语句后结束 3.以下标识符中不能用做变量名或自定义函数名的是_______。 A.main B._123 C._float D.sizeof B.1UL C. '0x41' D.0xfe 4.下列表示中,不可作为常数的是_______ 。A.020 A. value=value-'0'; #define d 2
18.若有声明“float f=123.45678;”,则执行语句“printf("%.3f",f);”后,输出结果是_____ 。 B.123.457 19. 已 知 程 序 中 有 声 明 “int a; long b;” , 若 需 要 接 收 从 键 盘 输 入 的 电 话 号 码 字 符 串
5.设有声明“int value='5';”,则执行下列选项的赋值语句后,value 的值不等于 5 的是___。 B. value=value-0x30;C. value=value-49; D. value=value-'\060'; 6.设有定义和声明如下: int x=5;float y=3.83;char c='d'; 以下表达式中有语法错误的是____。 A.x++ B.y++ C.c++ D.d++ 7.若有声明和初始化“int x=32767;”,则 x+1 的值为___________。 8.若有声明和初始化“long x=32767;”,则 x+1 的值为___________。 9.已有声明“int a=3,b=3,c=2;”,以下选项中值为 0 的表达式是________ 。 A. !a && !b && c A.2 ___ 。 12. 若有声明 “int i=7;float x=3.1416;double y=3;” ,表达式 i+'a'*x+i/y 值的类型是 _________ 型。 13.设有声明“float a=l.23456;int i;”,欲将 a 中的数值保留小数点后两位, 第三位进行四舍五 入运算,能实现该功能的表达式是_________。 A. i=a*100+0.5,a=i/100.0 B.a=(a*100+0.5)/l00.0C. a=((int)a*i00+0.5)/100.0 D.a=(a/100+0.5)/100.0 14.若有声明“int a=15,b=20,c=25,e;”,则执行语句“e=a>b?--c:++c;”后变量 e 的值是_____。 15.以下 C 语言的运算符中,其中优先级最高的运算符是________ 。 B.!a ||!b ||c B.3 C.a==b &&b>=c C.4 D.a>=b&& b>c D.5 10.若有声明“int x=4,y=3;”,则表达式“x<y?x++:y++”的值是________。 11. 设有声明 “int a=3,b=4;float x=4.5,y=3.5;” ,则表达式 “(float)(a+b)/2+(int)x%(int)y” 的值是

C语言习题级答案2

C语言习题级答案2

选折题1. int a=1,b=2,c=3; if(a>b)a=b; if(a>c)a=c; 则a的值为(A)。

A、1B、不一定C、3D、22.以下选项中不合法的用户标识符是 BA、DimB、printfC、_123D、A$3. int i,j,a[2][3];按照数组a的元素在内存的排列次序,不能将数1,2,3,4,5,6存入a数组的是(C)。

A、for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1;B、for(i=0;i<6;i++)a[i/3][i%3]=i+1;C、for(i=1;i<=6;i++)a[i][i]=i;D、for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1;4.以下所列的C语言常量中,错误的是___A___。

A、1.2e0.5B、0xFFC、2LD、'\72'5.若有说明: int a[3][4]={0};则下面正确的叙述是(A)。

A、数组a中每个元素均可得到初值0B、只有元素a[0][0]可得到初值0C、此说明语句不正确D、数组a中各元素都可得到初值,但其值不一定为06.以下正确的字符串常量是 DA、'abc'B、'A'C、OlympicGamesD、"\\\"7. C语言中,char类型数据占(C)。

A、8个字节B、4个字节C、1个字节D、2个字节8.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是____D__。

A、非法的常量B、字符aC、字符eD、字符A9.以下函数的类型是(D)fff(float x){return 5;}A、与参数x的类型相同B、void 类型C、无法确定D、int类型10.以下叙述中正确的是(A)。

C语言指针习题及答案 (2)

C语言指针习题及答案 (2)
2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是B。
A)k=*ptr1+*ptr2 B)ptr2=k C)ptr1=ptr2 D)k=*ptr1*(*ptr2)
3.若有说明:int *p,m=5,n;以下程序段正确的是D。
return (*s-*t) ;
}
D)strcmp4(char *s,char *t)
{ for ( ; *s==*t; s++, t++ )
if (!*s) return 0 ;
return (*t-*s) ;
}
17.以下说明不正确的是D。
A)char a[10]=”china”; B)char a[10],*p=a; p=”china”;
C)char *s=”china”;等价于char *s; s=”china”;
D)char c[4]=”abc”,d[4]=”abc”;等价于char c[4]=d[4]=”abc”;
8.下面程序段中,for循环的执行次数是C。
char *s=”\ta\018bc”;
for ( ; *s!=’\0’; s++) printf(“*”) ;
27.若有定义:int (*p)[4];则标识符pC。
A)是一个指向整型变量的指针
B)是一个指针数组名
C)是一个指针,它指向一个含有四个整型元素的一维数组
D)定义不合法
28.以下与int *q[5];等价的定义语句是C。
A)int q[5] B)int *q C)int *(q[5]) D)int (*q)[5]
A)p=&n ; B)p = &n ;

C语言各章节复习题(带答案) 2

C语言各章节复习题(带答案) 2

一、C语言概述练习题选择1.一个C程序的执行是从。

A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束2.以下叙述不正确的是。

A) 一个C源程序必须包含一个main函数 B)一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数 D) 在C程序中,注释说明只能位于一条语句的后面3.以下叙述正确的是。

A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面C) C语言本身没有输入输出语句 D) C程序的每行中只能写一条语句4.一个C语言程序是由。

A)一个主程序和若干个子程序组成B) 函数组成 C) 若干过程组成 D) 若干子程序组成5.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是。

A) C语言程序仅可以编译执行B) C语言程序仅可以解释执行C) C语言程序既可以编译执行又可以解释执行D) 以上说法都不对6.以下叙述中错误的是。

A) C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件7.以下叙述正确的是。

A) C语言程序是由过程和函数组成的B) C语言函数可以嵌套调用,例如:fun(fun(x))C) C语言函数不可以单独编译 D) C语言中除了main函数,其他函数不可作为单独文件形式存在二、数据类型、运算符与表达式选择.1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为x=(i=4,j=16,k=32) A) 4 B) 16 C) 32D) 522.下列四组选项中,均不是C语言关键字的选项是。

C语言习题2

C语言习题2

1.C源程序的基本单位是()。

A.子程序B.函数C.过程D.复合语句2()可求得0到0.99的随机数。

P58A.srand()*100%100B.rand()%100/100.0C.rand()%100/100D.srand()%100/100.0 3整型常量没有()形式。

P22A.十进制B.二进制C.十六进制D.八进制4若已定义:int i,j,k; double x; 则下列表达式中语法正确的是()。

A.x%5B.j+2=kC.j+=(k=4)*jD.i=k+2j5若已定义:int n=10,i=4; 则赋值运算n%=i+1执行后,n的值是()。

A.0B.2C.3D.16若已定义:float f; char s[20]; 下列正确的输入语句是()。

A.scanf("%s%f", &s, f);B.scanf("%c%f", s, &f);C.scanf("%s%f", s, f);D.scanf("%s%f", s, &f); 字符数组用字符串。

7能正确表示a和b同时为正或同时为负的逻辑表达式是()。

A. (a>0 && b>0)&&(a<0 && b<0)B.a*b>0C. (a>0 || b>0)&&(a<0 || b<0)D. (a+b>0) && (a+b<=0)8若已定义int k=5;float d=3.5; 则表达式d+k%3/2 的值为()。

A.3.5B.5.5C.4D.4.59若已定义:int a=-1,b=-3,c=0,d=2; 则表达式a<b?c:(a>d?b:d)的值是()。

A.-1B.-3C.0D.210以下程序段运行后m的值为()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题二1.可用作C++语言用户标识符的一组标识符是( B )。

A) void define +WORD B) a3_b3 _123 YNC) for -abc Case D) 2a DO sizeof2.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。

A) 0 B) 4 C) 8 D) 63.下列情况中,哪一种情况不会调用拷贝构造函数( B )A)用派生类的对象去初始化基类对象时B)将类的一个对象赋值给该类的另一个对象时C)函数的形参是类的对象,调用函数进行形参和实参结合时D)函数的返回值是类的对象,函数执行返回调用者时4.以下哪一关键字可用于重载函数的区分(C)A)extern B)static C)const D)virtual5.下列有关数组的叙述中,正确的是( B )A)C++中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n结束D)数组指针的语法形式为:类型名 *数组名[下标表达式];6.实现运行时多态的机制是( A )A)虚函数B)重载函数C)静态函数D)模版函数7.若有下面的函数调用:fun(a+b, 3, max(n-1, b));其中实参的个数是( A)A)3 B)4 C)5 D)68.下列关于this指针的说法正确的是( B)A)this指针存在于每个函数之中B)在类的非静态函数中this指针指向调用该函数的对象C)this指针是指向虚函数表的指针D)this指针是指向类的函数成员的指针9.在下列关于C++函数的叙述中,正确的是(C)A)每个函数至少要有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己10.下列运算符中,不能重载的是(C)A)&& B)!= C). D)->11.下面的程序段的运行结果为(D)char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果 C)字符’b’的地址 D)字符’b’12.下面程序的输出结果是( C )#include <iostream>using namespace std;class A{public:A (int i) { x = i; }void dispa () { cout << x << “,”; }private :int x ;};class B : public A{public:B(int i) : A(i+10) { x = i; }void dispb() { dispa(); cout << x << endl; }private :int x ;};void main(){B b(2);b.dispb();}A)10,2 B)12,10 C)12,2 D)2,213.下面程序的输出结果是( C)#include <iostream>using namespace std;class Base{public:Base(int i) { cout << i; }~Base () { }};class Base1: virtual public Base{public:Base1(int i, int j=0) : Base(j) { cout << i; }~Base1() {}};class Base2: virtual public Base{public:Base2(int i, int j=0) : Base(j) { cout << i; }~Base2() {}};class Derived : public Base2, public Base1{public:Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1(c), Base2(d), Base(a){ cout << b; }private:Base2 mem2;Base1 mem1;};void main() { Derived objD (1, 2, 3, 4); }A)134122 B)123412 C)14302012 D)14321214.下面程序的输出结果是(C)#include <iostream>using namespace std;class Base{public:virtual void f() { cout << “f0+”; }void g() { cout << “g0+”; }};class Derived : public Base{public:void f() { cout << “f+”; }void g() { cout << “g+”; }};void main() { Derived d; Base *p = &d; p->f(); p->g(); }A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+ 15.以下程序的输出结果是:(D)#include <iostream>using namespace std;int fun(char *s){ char *p=s;while (*p!='\0') p++;return (p-s);}void main(){cout<<fun("abc")<<endl;}A.0 B. 1 C. 2 D. 316.有如下程序段:int i=1;while(1){i++;if (i==10) break;if(i%2==0) cout<<’*’;}执行这个程序段输出字符*的个数是(C)A. 10B. 3C. 4D.517.下列关于虚基类的描述中,错误的是(C)A. 使用虚基类可以消除由多继承产生的二义性B. 构造派生类对象时,虚基类的构造函数只被调用一次C. 声明 class B:virtual public A 说明类B为虚基类D. 建立派生类对象时,首先调用虚基类的构造函数18.有下类定义Class A {Char *a;Public:A():a(0){}A(char *aa) {//把aa所指字符串拷贝到a所指向的存储空间A=___________________;Strcpy(a,aa);~A() {delete [] a;}};正确的选择是(A)A. new char[strlen(aa)+1]B. char[strlen(aa)+1]C. char[strlen(aa)]D. new char[sizeof(aa)-1]19.假定AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(X)。

A) x.a B) x.a() C) x->GetValue() D) x.GetValue( ) 20.假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。

A) int AA::a( ) B) int AA:a()C) AA::a() D) AA::int a()21.有如下程序:#include<iostream>using namespace std;class MyClass{public:MyClass(int i=0){cout<<1;}MyClass(const MyClass&x){cout<<2;}MyClass& operator=(const MyClass&x){cout<<3; return *this;}~MyClass(){cout<<4;}};int main(){MyClass obj1(1),obj2(2),obj3(obj1);obj1=obj2;return 0;}运行时的输出结果是(A)。

A)1123444 B)11114444 C)121444 D)11314444二、程序填空1.用递归法求从1到n的立方和:f(1)=1 (n=1)f(n)=f(n-1)+n3(n>1)#include <iostream>using namespace std;int f(int);int main(){int n,s;cout<<"input the number n:";cin>>n;s= f(n);cout<<"The result is "<<s<<endl;return 0;}int f(int n){ //递归法求立方和函数if ( n==1 ) return 1;else return ( f(n-1)+n*n*n );}3.请将下列程序补充完整,使得输出结果为“Destructor Derived Destructor Base”。

#include <iostream>using namespace std;class Base{public:virtual ~Base () { cout << “Destructor Base”<< endl; } };class Derived : public Base{public:~Derived(){ cout << “Destructor Derived” << endl; }};void main (){Base *pBase = new Derived;delete pBase ;}三、阅读程序,写出运行结果1.#include<iostream>#include<cstring>using namespace std;class CD{char name[20];int number;public:void Init(char* aa, int bb){strcpy(name,aa);number=bb;}char* Getname () {return name;}int Getnumber () {return number;}void Output() {cout<< name <<' '<< number <<endl;} };CD dx;void main(){CD dy;dx.Init("歌唱祖国",30);dy.Init("义勇军进行曲",3*dx.Getnumber ()+5);dx.Output();dy.Output();}歌唱祖国30义勇军进行曲952.#include <iostream>using namespace std;int f(int a){return ++a;}int g(int& a){return ++a;}void main(){int m=0,n=0;m+=f(g(m));n+=f(f(n));cout<<"m="<<m<<endl;cout<<"n="<<n<<endl;}3. #include <iostream>using namespace std;class Demo{public:Demo(){cout<<"default constructor\n";}Demo(const Demo &x){cout<<"copy constructor\n";} };Demo userCode(Demo b){Demo c(b);return c;}void main(){Demo a,d;cout<<"calling userCode()\n";d = userCode(a);}执行上面的程序的过程中,构造函数Demo()和Demo(const Demo &x)被调用的次数分别是多少次?五、编写程序1、编写函数计算y=1!+2!+3!...n! ,n作为参数传递,在主函数调用该函数并输出结果。

相关文档
最新文档