华中科技大学c++程序设计考试题

合集下载

华中科技大学计算机学院2015年C语言程序设计试卷

华中科技大学计算机学院2015年C语言程序设计试卷

计算机学院2014-2015学年第2学期C语言程序设计考试试卷A卷(或B卷): A卷闭卷(或开卷):闭卷考试时间:2015年 6 月 25 日专业: 班级: 学号: 姓名:题号一二三四五六七总分核对人题分10 10 10 10 20 20 20 100得分注意:试卷后面附有运算符的优先级和结合性表。

一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项得分评卷人是正确的,请选择正确的选项并填写到括号内,选择正确得分。

本大题共10小题,每小题1分,共10分。

)1、已知8位补码位是11111110,其原值是。

【】A、-2B、254C、-1D、-1262、下列是标识符。

【】A、B、_IPHONE_6_0C、sum[i]D、sin(x)3、下列逻辑表达式中与其它3个不等价。

其中a为int型变量。

【】A、!aB、a==0C、a==1D、!(a>0||a<0)4、下列是非法常量。

【】A、0xff00B、.1415C、'\a'D、051885、设a和b为整型变量且a值为5,表达式的值不为2。

【】A、b=a/2B、b=6-(--a)C、b=(a-3)%2D、b=a?a-3:16、适用于浮点类型数的运算是。

【】A、 |B、%C、 &D、 <7、执行语句putchar('R'+'6'-'4');的输出结果是。

【】A、RB、SC、TD、 U8、在工程中引用其它文件定义的全局变量,需要使用存储类型。

【】A、autoB、externC、staticD、register9、下列是变量a的定义,sizeof(a)为9的是。

【】A、char a[]=”c:\\file\\”B、char a[]=”123456789”C、int a[9]D、float a[9]10、下列给出的程序片段,其中while循环体执行的次数是。

【】i=1,j=0; while(i+j<=10) if(i>j)j++;else i++;A、5B、9C、 10D、11二、 多项选择题(下面每小题的A 、B 、C 、D 备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内。

华中科技大学80X86汇编语言程序的设计试卷

华中科技大学80X86汇编语言程序的设计试卷

1. SHR BH, 82. ADD [BX], -53. LEA POINT, BUF4. IN DX, 2005. PUSH DH6. MUL 257. XLAT BX, TAB8. REPNZ MOVSW9. MOV AX, 2[SI][DI] 10. MOV [BX], [SI]班级 ________________ 姓名 ______________ 号 _______________ 成绩 _______、改错题(10分,每题1分,在错误处划线,线下写上正确答案)二、单选题(20分,每题1分) 1 . MOV 指令的特点是 。

A .影响DFB .影响SFC .影响CFD .不影响标志位2 .使用寄存器间接寻址万式访问堆栈中呆变量时 ,要选用寄存器。

A . BXB . BPC . SID . SP3 . 8086标志寄存器中的三个控制标志是 __________ A . IF 、PF 、SF B . DF 、OF 、CF C .DF 、IF 、TF D . TF 、AF 、IF 4 .若有符号数运算的结果溢出,则置 ________ 为1。

A .OFB . CFC . SFD . IF5 .若某存贮器操作数的偏移地址在 SI 中,访问该操作数应采用 _________ 址方式。

A .立即B .寄存器C .寄存器冋址D . 直接6 .串操作指令中, 目的串的逻辑地址应为 OA . DS : [SI]B . DS : [DI]C . ES: [DI]D . ES: [SI]7 . 不在本模块定义而在本模块中引用的符号称 符号。

A .公共B .局部C .自定义D . 外部8 . 若(CL ) = 4 , (AX ) =0FF0FH ,执行语句 ROR AX , CL”后,(AX ) =A . 0FFFFHB . 0FFF0HC . 0F0FFHD . 0FFFH 9 .已知AL 中存放着一个压缩 BCD 码,为实现 AL 减1操作,应选用指令序列A . DEC ALB . SBB AL , 0C . SUB AL , 1D . SUB AL , 1AASDAS AASDAS10 .要将BL 中的8位数据送到 1234H 端口号的外部设备中去 ,应选用 指令序列。

华科 C++期末考试试卷答案

华科 C++期末考试试卷答案

2008-2009学年度第二学期华中科技大学《C++语言程序设计》试卷(A)(考试时间:150分钟考试方式:闭卷)所有答案必须写在答题纸上一、单项选择题 (30小题,每小题1分,共30分)1、C++程序中的语句必须以( B )结束A 冒号B 分号C 空格D 花括号2、下列选项中,( A )不是分隔符A 标识符B ;C :D ( )3、执行语句int a = 10, b ;int & pa = a , & pb =b ;后,下列正确的语句是( B)A &pb = a;B pb = pa;C &pb = &pa;D *pb = *pa;4、设I=1,J=2,则表达式 I++ +J的值为( C )A1B2C3D45、执行下列语句后,int x , y ;x = y = 1 ; ++x || ++y ;y的值是( C)A不确定B0C1D26、逗号表达式(x = 4 * 5 , x * 5 ), x + 25的值为( D )A 25B 20C 100D 457、已知int i, x, y;在下列选项中错误的是(C)A if ( x && y ) i ++;B if ( x == y) i ――;C if ( xy ) i ――;D if ( x + y ) i++;8、i=2,执行下列语句后的值为( B )switch ( i ){ case 1: i++;case 2: i――;case 3: ++i; break;case 4: ――i;default : i++;}A 1B 2C 3D 49、已知int i = 3;下面do _ while语句执行时循环次数为(B)do { i-- ; cout <<i << endl; } while ( i != 1);A1B2C3D无限10、以下为死循环的程序段是( B )A for ( int x = 0 ; x < 3 ; ) { x++ ; } ;B int k = 0;do { ++k ; } while ( k>=0 ) ;C int a=5; while ( a ) { a―― ; } ;D int i=3 ; for ( ; i ;i――) ;11、以下正确的函数原型为( D )A f (int x ; int y);B void (x , y);C void (int x , y);D void f (int , int);12、有函数原型 void fun2 (int * ), 下面选项中,正确的调用是( C )A double x = 2.17; fun2 (&x);B int a = 15; fun2 (a*3.14);C int b = 100; fun2 (& b);D fun2 (256);13、有声明int fun4 (int); int (* pf) (int) = fun4;下面选项正确的是( B )A int a = 15; int n = fun4 (&a);B int a = 15; cout<<pf (a*3.14);C cout<<(* pf) (256);D cout<<*pf (256);14、函数参数的默认值不允许为(C,D)A 全局常量B 全局变量C 局部变量D 函数调用15、下列的描述中( B )是错误的。

华中科技大学标准c语言程序设计及应用习题答案

华中科技大学标准c语言程序设计及应用习题答案

第二章一.选择题1.C2.B D3.A4.A5. D C6.C7.D8.B9.A 10.D 11.B 12.D 13.C 14.D 15.A16.B 17.A 18.B二.判断题1.错2.错3.错4.错三.填空题1. B 662. n1=%d\nn2=%d\n3. 0四.计算1(1)x|y = 0x002f(2)x^y = 0x0026(3)x&y = 0x0009;(4)~x+~y = 0xffc6(5)x<<=3 0x0068(6)y>>=4 0x00022(1) 6(2)50(3) 1(4)–16(5) 1(6)203(1)0(2) 1(3) 1(4) 4(5)8(6) 14(1)12(2)0(3) 1(4)27(6) 6(7)24(8)27(9)–295(1)0(2) 1(3) 1(4)–3(5) 2五.程序分析题程序1b=20 a=3600程序2第三章一.填空题1.s=62.963.(1) scanf("%c",&c);(2) c-32 更好的答案:c-('a'-'A')2.1main(){int a,b;printf("please input a & b:");scanf("%d%d",&a,&b);printf("\nmax is %d\n",(a>b)?a:b);}2.2int max(int x,int y);main(){int a,b,c,max;printf("please input a & b & c:");scanf("%d%d%d",&a,&b,&c);max=a>b?a:b;max=c>max?c:max;printf("\nmax is %d\n",max);}2.3{int i=0,sum=0;while(i<=100){sum+=i;i++;}printf("1+2+3+......+100=%d\n",sum);}2.4main(){int i;int a=10,b=-3;int c;printf("%6d%6d",a,b);for(i=2;i<10;i++){c=3*b+a;printf("%6d",c);a=b;b=c;}printf("\n");}2.5main(){int i;while(1){printf("please input a data(0:exit):");scanf("%d",&i);if(i==0)break;if(i%2==0)printf("the data %d is a even number.\n",i);elseprintf("the data %d is a odd number.\n",i); }}2.6#include <stdio.h>main(){int i;int a=8,b=1;int sum=0;for(i=0;i<10;i++){b+=3;sum += a;a+=b;printf("a%8d b:%8d\n",a,b);}printf("The Sum Of Is:%d\n",sum);}2.7#include <stdio.h>main(){float x,y;printf("please input x:");scanf("%f",&x);if(x<1.0)y=x;else if(x<10)y=2*x-1;elsey=3*x-11;printf("y=%f\n",y);}2.8#include <stdio.h>main(){long a,i,b,a1;while(1){printf("please input data(1-99999):");scanf("%ld",&a);printf("a:%ld\n",a);if(a<=0||a>=100000)break;i=0;a1=0;while(a!=0){b=a%10;printf("%8d",b);a/=10;i++;a1=a1*10+b;}printf("\n i:%ld a1:%ld\n",i,a1);}}2.9#include <stdio.h>#include <time.h>#include <stdlib.h>main(){int a,b,i,k=0;randomize();a=random(1001);/*create a random data(0-1000)*/ for(i=0;i<20;i++){printf("please guess a number:");scanf("%d",&b);if(a>b){k++;printf("\n%d:Smaller,guess again!\n",k);}else if(a<b){k++;printf("\n%d:Bigger,guess again!\n",k);}else{printf("\nYou guess right,congraturation!") ;printf("\nYou have guessed %d times",k);break;}}if(k==20)printf("\nsorry,you failed!");}2.10#include <stdio.h>main(){int a,b,c;int num;for(a=0;a<10;a++){for(b=0;b<10;b++){for(c=1;c<10;c++){num=a*100+b*10+c;if((num%3==0)&&(a==5||b==5||c==5))printf("%8d",num);}}}printf("\n\n\n");}2.11#include <stdio.h>main(){int i;int a,b;printf("please input a,b:");scanf("%d%d",&a,&b);for(i=a<b?a:b;i>0;i--){if(a%i==0&&b%i==0){printf("The max=%d",i);break;}}for(i=a>b?a:b;i>0;i++){if(i%a==0&&i%b==0){printf("\nThe min=%d",i);break;}}2.12#include <stdio.h>main(){int a,k=0;printf("please input data:");scanf("%d",&a);while(a%2==0){a=a/2;k++;}printf("\nthe number of factor(2) is %d",k); }2.13main(){long i,t=1;long sum=0;for(i=1;i<=10;i++){t*=i;sum+=t;printf("%ld!=%ld\n",i,t);}printf("sum:%ld\n",sum);}2.14#include <stdio.h>void main(){int i,x=0;for(i=9;i>=1;i--){x=2*(x+1);}printf("The first day:%d",x);}2.15#include <stdio.h>#define PI 3.141593main(){float r,h;float v;printf("please input r,h:");scanf("%f%f",&r,&h);v=1.0/3*PI*r*r*h;printf("V=%.2f",v);}2.16#include<stdio.h>#include<math.h>main(){long int sn=0;long int m=0,t=0;int a,n,i;printf("please input a n:");scanf("%d%d",&a,&n);for(i=0;i<n;i++){m=m*10+a;sn+=m;}printf("a+aa+aaa+...+aa...a=%ld\n\n",sn); }2.17#include <stdio.h>main(){int k;printf("please input k:");do{scanf("%d",&k);if(k>=0&&k<=6)break;}while(1);switch(k){case 0:printf("Sunday.\n");break;case 1:printf("Monday.\n");break;case 2:printf("Tuesday.\n");break;case 3:printf("Wednesday.\n");break;case 4:printf("Thursday.\n");break;case 5:printf("Friday.\n");break;case 6:printf("Saturday.\n");break;}}2.18#include <stdio.h>main(){int i;double x,a,b=1,sum=1;printf("please input x:");scanf("%lf",&x);a=x;for(i=1;a/b>=1e-6;i++){sum=sum+a/b;a=a*x;b=(i+1)*b;}printf("\nsum=%lf",sum);}2.19#include <stdio.h>#include <math.h>main(){float a,x1,x2;printf("input a:");scanf("%f",&a);x1=1.0;while(1){x2=1.0/2*(x1+a/x1);if(fabs(x2-x1)<1e-5)break;x1=x2;}printf("sqrt(a)=%f",x2);}第四章写出下列程序输出结果1.no 1 a=1no 1 a=0no 1 a=1no 1 a=02.a=0 b=0 c=0a=1 b=0 c=0a=2 b=0 c=03.main:x=5,y=1,n=1func:x=6,y=21,n=11main:x=5,y=1,n=11func:x=8,y=31,n=21第五章1.D2.D3.C4.65.CDABC6.(1)j+=2(2)a[i]<a[j]7.(1)s[i++]!='\0'(2)s[i-1]8.D9.B10.6(同题4)11.s[i]>='0'&&s[i]<='9'12. (1)'\0' (2)str1[i]-str2[i]5.1#include<stdio.h>int fun();int fun(){int a[3][3],sum;int i,j;sum=0;/*error*/for(i=0;i<3;i++){for(j=0;j<3;j++)scanf("%d",&a[i][j]);/*error*/}for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%d\n",sum);}void main(){fun();}5.2#include <stdio.h>void main( void ){float Num[10];float Input,GetNum[11];int i,j;float a=6;for(i=0; i<10; i++){Num[i]=a;a=a+7.5;}Loop1: printf("Please input a Number(0-80) Input=");scanf("%f",&Input);if((Input<0)||(Input>70)==1)goto Loop1;for(i=0; i<10; i++ ){if(Input<Num[i])goto Loop2;}Loop2: for(j=0; j<i; j++ )GetNum[j]=Num[j];GetNum[j]=Input;for(j=i; j<=10; j++,i++)GetNum[j+1]=Num[i];for(j=0; j<11; j++ )printf("%3.3f ",GetNum[j]);}5.3#include "stdio.h"#include "stdlib.h"main(){int a1,a2,a3,a4,a5,a6,a7,a8,a9;int a[3];int i;for(;;){for (i=0;i<3;i++){a[i]=rand()%3;}while((a[0]!=a[1]) && (a[0]!=a[2]) && (a[1]!=a[2]))/*get three different numbers 0,1,2*/{a1=a[0]+1;/*divide 1~9 into three groups,a1~a3,a4~a6,a7~a9*/a2=a[1]+1;a3=a[2]+1;a4=a1+3;a5=a2+3;a6=a3+3;a7=a1+6;a8=a2+6;a9=a3+6;/* make sure that each line and each row is made up with three members in different group.*//* such as: a9 a1 a5a2 a6 a7a4 a8 a3 */if(((a1+a5+a9) == (a2+a6+a7)) && ((a1+a5+a9) == (a3+a4+a8))&& ((a1+a6+a8) == (a5+a7+a3)) && ((a1+a5+a9) == (a2+a4+a9))) {printf("%d %d %d\n%d %d %d\n%d %d %d\n",a9,a1,a5,a2,a6,a7,a4,a8,a3);return;}}}}5.4#include <stdio.h>void main(void){char input1[100],input2[100],input3[100];int i,Eng=0,eng=0,num=0,blank=0,other=0;printf("Input 3 rows of character,each row don't exceed 80 characters:\n");gets(input1);printf("The second row:\n");gets(input2);printf("The third row:\n");gets(input3);/*test the first row*/for(i=0; i<100; i++){if(input1[i]=='\0')goto Loop1;else if(('A'<=input1[i])&&(input1[i]<='Z')==1)Eng++;else if(('a'<=input1[i])&&(input1[i]<='z')==1)eng++;else if(('0'<=input1[i])&&(input1[i]<='9')==1)num++;else if(input1[i]==32)blank++;else other++;}/*test the second row*/Loop1: for(i=0; i<100; i++){if(input2[i]=='\0')goto Loop2;else if(('A'<=input2[i])&&(input2[i]<='Z')==1)Eng++;else if(('a'<=input2[i])&&(input2[i]<='z')==1)eng++;else if(('0'<=input2[i])&&(input2[i]<='9')==1)num++;else if(input2[i]==32)blank++;else other++;}/*test the third row*/Loop2: for(i=0; i<100; i++){if(input3[i]=='\0')goto Loop3;else if(('A'<=input3[i])&&(input3[i]<='Z')==1)Eng++;else if(('a'<=input3[i])&&(input3[i]<='z')==1)eng++;else if(('0'<=input3[i])&&(input3[i]<='9')==1)num++;else if(input3[i]==32)blank++;else other++;}Loop3: printf("Upper english character:%d\nLower english character:%d\nNumber:%d\nBlank:%d\nOther characters:%d\n",Eng,eng,num,blank,other);}5.5#include <stdio.h>void main(void)char str1[80],str2[40];int i,j,k;/*Input two string*/printf("Please input the first string\n str1=");gets(str1);printf("Please input the second string\n str2=");gets(str2);/*Get the end of str1*/for(i=0; i<80; i++){if(str1[i]=='\0')break;}/*Copy str2 to str1*/for(j=i,k=0; str2[k]!='\0';k++,j++)str1[j]=str2[k];str1[i+k]='\0';puts(str1);}5.6#include <stdio.h>struct student{char name[20];int score;}stu[5],stu1;void main(void){ int i,j;printf("Input student's score and name(5),seperate using the character of ',' :\n");for(i=0; i<5; i++)scanf("%d,%s",&stu[i].score,&stu[i].name);/*sorting*/for(i=0; i<5; i++)for(j=0; j<4-i; j++)if(stu[j].score>stu[j+1].score){stu1=stu[j];stu[j]=stu[j+1];stu[j+1]=stu1;}printf("After sotred,score and name:\n");for(i=0; i<5; i++)printf("%d,%s\n",stu[i].score,stu[i].name); }5.7#include<stdio.h>main(){ int a[3][3],i,j,m,n,o,p;printf("Please input a 3*3 shuzu:\n");for (i=0;i<=2;i++)for (j=0;j<=2;j++)scanf("%d",&a[i][j]);for (i=0;i<=2;i++){ m=(a[i][0]>a[i][1])? a[i][0]:a[i][1];n=(m>a[i][2])? m: a[i][2];}for (j=0;j<=2;j++){ o=(a[0][j]<a[1][j])? a[0][j]:a[1][j];p=(o<a[2][j])? o: a[2][j];}if (n==p)printf("Andian is %d\\n",p);elseprintf("There is no andian.\\n"); }5.8#include <stdio.h>void main(void){ int a[4][3],b[3][4],i,j;for(i=0; i<4; i++){ for(j=0; j<3; j++)scanf("%d",&a[i][j]);}for(i=0; i<4; i++){printf("\n");for(j=0; j<3; j++)printf("%5d ",a[i][j]);}for(i=0; i<4; i++){for(j=0; j<3; j++)b[j][i]=a[i][j];}printf("\n");for(i=0; i<3; i++){printf("\n");for(j=0; j<4; j++)printf("%5d ",b[i][j]);}5.9#include <stdio.h>#include<math.h>void main(void){ char str[6];int i,j=0,m=0,n=0;gets(str);while(str[j]!='\0') j++;for(i=j-1;i>=0;i--){m=(str[i]-'0')*(pow(8,j-i-1));n+=m;}printf("shijinzhi %d",n);}5.10#include <stdio.h>void main(void){char input1[100];int i,num=0,blank=0;printf("Please input a row character:\n");gets(input1);/*test the first row*/for(i=0; i<100; i++){if(input1[i]=='\0')goto Loop;else if(('A'<=input1[i])&&(input1[i]<='Z')==1)num++;else if(('a'<=input1[i])&&(input1[i]<='z')==1)num++;else if (input1[i]==32)blank++;}Loop: printf("Character:%d\nBlank:%d\n",num,blank);}第六章一、选择题1.D :p中记录的是a的地址,*p访问地址a的值2.D :指针数组3.D:指针可以进行是否相等判断,空指针可以进行指针变量初始化,指针可以偏移;4.C:5.C、D:a[5]不存在,若*&a[4]则正确;C,D正确;6.D:7.B:8.B:二、填空题1.*(p+3) 2 222.cdefgbcdefgabcdefg73.6385三、程序分析题1.p = s[0] ;错误,应改为:p = s;或p = &s[0];2.int x , *p;错误,应改为:double x, *p;3.*p = x ;错误,应改为:p = &x ;4.声明顺序错误;应该改为:void main(void){int a;int *p = &a;a = 10;printf(“%d\n”,*p);}2.3 #include <stdio.h>#include <string.h>main(){char ch[2][5] = {"6937","8254"},*p[2]; int i,j,s=0;for(i=0;i<2;i++)p[i] = ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s = 10*s + p[i][j] - '0';printf("%d\n",s);}4.1#include <stdio.h>#include <string.h>main(){int count = 0;char str1[100],str2[100];char *p1,*p2;printf("please enter string 1:");gets(str1);printf("please enter string 2:");gets(str2);printf("str1:%s\n",str1);printf("str2:%s\n",str2);p1 = str1;p2 = str2;while(*p1!='\0'&&*p2!='\0'){if(*p1++==*p2++)count++;}printf("count:%d\n",count);}4.2#include <stdio.h>#include <string.h>main()int i,j,k;int a[3];int temp;printf("please enter array a[3]:"); scanf("%d%d%d",&a[0],&a[1],&a[2]);for(i=0;i<2;i++){k = i;for(j= i+1;j<3;j++){if(a[j]<a[i])k = j;}if(k!=i){temp = a[i];a[i] = a[k];a[k] = temp;}}for(i=0;i<3;i++)printf("%d\t",a[i]);printf("\n");}4.3#include <stdio.h>#include <string.h>#define N 100main(){char s1[N], s2[N],*p;int m;printf("please enter string1:");gets(s1);p = s1;printf("enter m:");scanf("%d",&m);strcpy(s2,p+m);printf("string2:%s\n",s2);}4.4#include <stdio.h>#include <string.h>main(){char s[100]="iuiui012asdd90k890y098kkkk1234",*p; char data[100][100]={{0}};int count=0;int i;p = s;/*printf("please enter a string:");gets(p);*/printf("sssss:%s\n",s);while(*p!='\0'){i=0;while(*p>='0'&&*p<='9'){data[count][i] = *p;i++;p++;}if(i!=0)count++;p++;}printf("count:%d\n",count);for(i=0;i<count;i++)printf("%s\n",data[i]);}4.5#include <stdio.h>#define SIZE 4main()int data[SIZE][SIZE],i,j,d;int max,m=0,n=0;for(i=0;i<SIZE;i++){for(j=0;j<SIZE;j++){scanf("%d",&data[i][j]);}}for(i=0;i<SIZE;i++){for(j=i+1;j<SIZE;j++){d = data[i][j];data[i][j] = data[j][i];data[j][i] = d;}}max = data[0][0];for(i=0;i<SIZE;i++){printf("\n");for(j=0;j<SIZE;j++){printf("%4d",data[i][j]);if(data[i][j]>=max){max = data[i][j];m = i;n = j;}}}printf("\nmax:%4d m:%d n:%d\n",max,m,n);}4.6#include <stdio.h>#include <string.h>main(){char *p[] = {"test","capital","index","large","small"}; char **pstr = p;int a,b,n = 5;char *temp;for(a=0;a<n-1;a++){for(b=a+1;b<n;b++){if(strcmp(pstr[a],pstr[b])>0){temp = pstr[a];pstr[a] = pstr[b];pstr[b] = temp;}}}for(a=0;a<n;a++)printf("%s\n",pstr[a]);}4.7#include <stdio.h>#include <string.h>main(){char s[100],temp;char *p = s;int i,length;printf("please enter a string: ");gets(s);while(*p++!='\0');length = p - s -1;printf("string length:%d\n",length);for(i=0;i<length/2;i++){temp = s[i];s[i] = s[length-i-1];s[length-i-1] = temp;}printf("%s\n",s);}第七章一,选择题1.A2.D3.B4.D5.C6.A7.B二.程序填空题1.(1) a[k](2) a[k](3) a[k]2.(1) a[i](2) j(3) i+1或6三.改错题1.#include<stdio.h>#include<string.h>void swap(char *,char *); /*此处有错误,函数声明时要加分号*/main(){char a[80],b[80],c[80];scanf("%s%s%s",a,b,c); /*此处有错误,a,b,c分别为数组a[80],b[8],c[80]的首地址*/ if(strcmp(a,b)>0) swap(a,b); /*此处有错误,字符串比较应该使用strcmp函数*/if(strcmp(b,c)>0) swap(b,c); /*此处有错误,原因同上*/if(strcmp(a,b)>0) swap(a,b); /*原算法不能实现排序,需要添加此语句*/printf("%s\n%s\n%s\n",a,b,c);}7.3.1#include <stdio.h>#include <string.h>void swap(char *pstr1,char *pstr2){char p[80];strcpy(p,pstr1);strcpy(pstr1,pstr2);strcpy(pstr2,p);}main(){char a[80]="ccc",b[80]="bbb",c[80]="aaa";/* scanf("%s%s%s",a,b,c); */if(strcmp(a,b)>0)swap(a,b);if(strcmp(b,c)>0)swap(b,c);if(strcmp(a,b)>0)swap(a,b);printf("%s\n%s\n%s\n\n\n",a,b,c);}7.4.1#include <stdio.h>int SquSum(int,int);main(){int a,b;int c;printf("enter 2 integer:");scanf("%d%d",&a,&b);c = SquSum(a,b);printf("a=%d b:%d a2+b2=%d\n",a,b,c); }int SquSum(int x,int y){int z;z = x*x+y*y;return z;}7.4.2#include <stdio.h>int GongYueShu(int,int);int GongBeiShu(int,int);{int a,b;int gbs,gys;printf("enter 2 integer:");scanf("%d%d",&a,&b);gys = GongYueShu(a,b);gbs = GongBeiShu(a,b);if(gys<0)printf("There has not gong yue shu!!!!!!\n"); elseprintf("max gong yue shu:%d\n",gys); printf("min gong bei shu:%d\n",gbs);}int GongYueShu(int x,int y){int i,gys=-1,min;min = x;if(x>y)min = y;for(i=2;i<=min;i++){if((x%i==0)&&(y%i==0))gys = i;}return gys;}int GongBeiShu(int x,int y){int i,gbs,max;max = x;if(y>x)max = y;for(i=max;i<=x*y;i++){if((i%x==0)&&(i%y==0)){gbs = i;break;}return gbs;}7.4.4#include <stdio.h>#include <string.h>void Delete_Ch(char *,char);main(){char str[80],ch;printf("please a string:");gets(str);printf("please a char:");scanf("%c",&ch);Delete_Ch(str,ch);printf("%s\n\n",str);}void Delete_Ch(char *p,char ch){while(*p){if(*p==ch){strcpy(p,p+1);}elsep++;}}7.4.5#include <stdio.h>int Is_ShuShu(int); /* return 0:shushureturn -1:no shushu*/main(){int a,ret;scanf("%d",&a);ret = Is_ShuShu(a);if(ret==0)printf("%d is a shushu!!!\n",a);elseprintf("%d is not a shushu\n",a);}int Is_ShuShu(int x){int i;for(i=2;i<x/2;i++){if(x%i==0)return -1;}if(i>=x/2)return 0;}7.4.6#include <stdio.h>#include <string.h>void StrCat(char *s1,char *s2){while(*s1!='\0')s1++;while(*s2!='\0'){*s1 = *s2;s1++;s2++;}*s1='\0';}main(){char a[200]="123456789",b[100]="ABCDEFG"; printf("pls enter string 1:");gets(a);gets(b);StrCat(a,b);printf("%s\n\n",a);}7.4.7#include <stdio.h>#include <string.h>void Stat(char *s,int *ch,int *dig,int *spa,int *oth){while(*s!='\0'){if(((*s>='a')&&(*s<='z'))||((*s>='A')&&(*s<='Z')))(*ch)++;else if((*s>='0')&&(*s<='9'))(*dig)++;else if(*s == ' ')(*spa)++;else(*oth)++;s++;}}main(){char a[200];int ch=0,dig=0,spa=0,oth=0;printf("pls enter a string :");gets(a);Stat(a,&ch,&dig,&spa,&oth);printf("ch:%d dig:%d spa:%d oth:%d",ch,dig,spa,oth); }7.4.8#include <stdio.h>#include <string.h>void reverse(char *s)if(*s){}main(){char s[] = "abcde"; reverse(s);puts(s);}7.4.9#include <stdio.h>#include <string.h>paixu(int *p,int n,int flag) {int i,j,m;int temp;for(i=0;i<n-1;i++) {m = i;for(j=i+1;j<n;j++){if(flag == 1){if(p[j]>p[m])m = j;}else{if(p[j]<p[m])m = j;}}if(m!=i){temp = p[i];p[i] = p[m];p[m] = temp;}}}main(){int a[20];int n,i;int flag;printf("please enter n(<20):"); scanf("%d",&n);getchar();printf("please enter array a:");for(i=0;i<n;i++)scanf("%d",&a[i]);getchar();printf("please enter paixu flag:\n"); printf("\t1:degression\n");printf("\t0:increasion\t:");scanf("%d",&flag);paixu(a,n,flag);printf("array a is:");for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n\n");}。

华中科技大学级C语言程序设计考试经典试卷复习资料

华中科技大学级C语言程序设计考试经典试卷复习资料

华中科技大学10级《C语言程序设计》考试试卷课程性质:必修使用范围:本科考试时间:年月日考试方式:闭卷学号______________专业_______班级____姓名___________成绩____一、选择题(每小题2分,共20分)( A )(1)若x、y、j和k都是int型变量,则计算表达式x=( k=32,j=6, i=4)后,x的值为。

A)4 B)16 C)32 D)52( B )(2)C语言中标识符只能由字母、数字和下划线组成,且第一个字符。

A)必须为字母 B)必须为字母或下划线C)必须为下划线 D)可以是字母、数字和下划线中任一种字符( D )(3)下面四个选项中,均是正确的数值常量或字符常量的选项是。

A)0.0 0f 8.9e '&' B)"a" 3.9e-2.5 1e1 '\"'C)'3' 011 0xFF00 0a D)+001 0xabcd 2e2 50( B )(4)已知各变量的类型说明如下:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是。

A)a=a*3=2 B)a+=a-=(b=4)*(a=3)C)x+y=-3*a D)y=float(i)( A )(5)若以下变量均是整型,且num=sum=5;则计算表达式num++,sum++,++num后num的值为。

A)7 B)8 C)9 D)10( B )(6)在C语言中,引用数组元素时,其数组下标的数据类型允许是。

A)整型常量 B)整型常量或整型表达式C)整型表达式 D)任何类型的表达式( C )(7)以下能对一维数组a进行正确初始化的语句是。

A)int a[10]={0,0,0,0,0} B)int a[10]={ };C)int a[ ]={0}; D)int a[10]={10*1};/*各元素值为1*/( B )(8)下面程序(注:每行程序前面的数字表示行号)。

华中科技大学C++程序题集合1

华中科技大学C++程序题集合1

HUST C++程序设计题答案集1 致华科的小学弟小学妹,这篇文档是学长我辛辛苦苦刷到一百分的程序题(各种单枪匹马深夜作战),留着吧,将来写到不会的时候拿出来查查(具体方法:Ctrl + H,输入关键字查询,会有你想要的答案。

)当然,这里面的程序仅作参考,如果你有更好的想法,呃,就用你自己的吧。

祝学业有成。

你们的苦逼的学长XX/*------------------------------------------------------- 【程序设计】--------------------------------------------------------- 题目:定义一个日期类Date,包括年、月、日三个数据成员,以及一个判断闰年的成员函数输出结果见图:样张.JPG-------------------------------------------------------*/ #include <iostream>using namespace std;class Data {public:Data(){};Data(int,int,int);boolLeapYear();void Print();private:int year;int month;int day;};/**********Program**********/bool Data::LeapYear(){if((year%4==0&&year%100!=0)||(year%400==0))return 1;else return 0;}Data::Data(inty,intm,int d){year=y;month=m;day=d;}/********** End **********/void Data::Print(){cout<<year<<"/"<<month<<"/"<<day;if(LeapYear())cout<<" is a leap year"<<endl;elsecout<<" is not a leap year"<<endl;}void main(){Data d1(2012,8,9),d2(2009,12,8);d1.Print();d2.Print();}/*------------------------------------------------------- 【程序设计】---------------------------------------------------------题目:设计一个点类Point,再设计一个矩形类,矩形类使用Point类的两个坐标点作为矩形的对角顶点,并可以输出4个坐标值和面积。

华中科技大学标准C语言程序设计上机试题、答案及报告格式

华中科技大学标准C语言程序设计上机试题、答案及报告格式

《标准C语言程序设计》上机报告实验七指针及函数结构体初步程序设计专业:班级:学号:姓名:完成日期:1一、实验目的1.进一步理解指针的概念,掌握指针变量间接地址访问的本质;2.掌握利用指向数组的指针变量表示一维数组元素及元素地址的方法;3.掌握利用指向二维数组的行指针变量表示二维数组元素及其地址的方法;4.掌握字符串的指针和指向字符串的指针变量;5.掌握指针数组和二级指针;6.熟悉通过动态内存分配实现动态数组,并体会指针在其中的作用。

7.理解函数定义、原型和调用,掌握函数参数的传递(传值、传指针和传引用)二、实验内容及要求(鼓励一题多解)1.深入理解《上机实践训练教程》2.6实验六案例示范和有关概念文字描述中的知识点,给出你的理解。

定义指针时一定要给指针分配好应有的类型和内存空间,防止出现野指针,造成程序不能运行甚至系统崩溃。

数组名不能作为左值,它实际上是一个常量指针,不能通过str=“comrade”给字符数组str赋值。

2.输入每个学生的姓名和线性代数、通信原理和C语言课程成绩,统计每人的平均值,并按平均值降序排列,输出排列后的名次、姓名、课程名(成绩)和平均值。

(注:平均值相同者按姓名的字母表顺序排列)(要求用结构体数据类型实现)#include <stdio.h>#include <math.h>#include <stdlib.h>#define N 3struct student{int rank;char name[20];double score[3];double aver;};void input(struct student *p,int n);void sort(struct student *p,int n);double average (struct student *p,int n);void output(struct student *p,int n,double aver);void main(){struct student stu[N];double aver;input(stu,N);sort(stu,N);aver=average(stu,N);output(stu,N,aver);}void input(struct student *p,int n){int i,j;double a;char str[20];for(i=0;i<n;i++,p++){printf("请输入考生姓名:\n");gets(p->name);printf("请依次输入学生线性代数、通信原理、c语言分数:\n");for(a=0,j=0;j<3;j++){gets(str);p->score[j]=atof(str);a+=p->score[j];}p->aver=a/3;}return;}void sort(struct student *p,int n){struct student temp;int i,j;for(i=0;i<n-1;i++){for(j=0;j<n-1-i;j++){if(p[j].aver<p[j+1].aver){temp=p[j];p[j]=p[j+1];p[j+1]=temp;}}}}double average(struct student *p,int n){int i;double temp;for(i=0,temp=0;i<n;i++)temp=temp+p[i].aver;return temp/n;}void output(struct student *p,int n,double aver){int i;printf("姓名线性代数通信原理c语言平均分\n");printf("-----------------------------------------\n");for(i=0;i<n;i++){printf("%-10s%8.2lf%8.2lf%8.2lf%8.2lf\n",p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].aver);}}运行结果:3.利用指向指针的指针方法对N个整数排序并输出。

C++模拟题华中科技大学

C++模拟题华中科技大学

C++模拟试卷一、单选题(每题2分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。

1. 下面选项中不属于面向对象程序设计特征的是(C) 。

A)继承性B)多态性C)相似性D)封装性2. 有如下程序段:int i=1;while(1){i++;if (i==10) break;if(i%2==0) cout<<’*’;}执行这个程序段输出字符*的个数是(C)A. 10B. 3C. 4D.53. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。

A)0 B) 4 C)8 D)64. 下列有关数组的叙述中,正确的是( B )A)C++中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n结束D)数组指针的语法形式为:类型名*数组名[下标表达式];5. 若有下面的函数调用:fun(a+b, 3, max(n-1, b));其中实参的个数是(A)A)3 B)4 C)5 D)66. 以下哪一关键字可用于重载函数的区分( C )A)extern B)static C)const D)virtual7. 下面程序的输出结果是( B )#include <iostream>using namespace std;int i = 0;int fun(int n){static int a = 2;a++;return a+n;}void main(){int k = 5;{int i = 2;k += fun(i);}k += fun(i);cout << k;}A)13 B)14 C)15 D)168. 下面的程序段的运行结果为( D )char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果C)字符’b’的地址D)字符’b’9. 下面的程序段的运行结果为( D )char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果C)字符’b’的地址D)字符’b’10. 以下程序的输出结果是:(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. 311. 实现运行时多态的机制是(A)A)虚函数B)重载函数C)静态函数D)模版函数12. 假定AA为一个类,a为该类私有的数据成员,GetV alue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(X )。

华中科技大学 2010级信息学院C语言程序设计考试试题A

华中科技大学 2010级信息学院C语言程序设计考试试题A

级信息学院《C 语言程序设计》考试试题(A ) 一、判断下列语句或程序段的对错。

(“×”表示错,“√”表示对)(10分) (1) int x=0,y=x; ( ) (2) #define SIZE 10 ( ) int a[SIZE /2][SIZE]; (3) char *str ; str ="c\test"; ( ) (4) register int n; scanf(“%d ”,&n); ( ) (5) int x ,*px=&x ; float *p=px; ( ) (6) int (*pa)[8],a[6][8]; pa=*a++; ( ) (7) int x ,*px ; *px=&x; ( ) (8) int **pp,a[6][8]; pp=a; ( ) (9) float xyz.1=3; ( ) (10) int x =‘\x78’; ( ) 二、计算下列表达式的值(10分) 设unsigned int a=7, b=17, c=5, d=3; float f; (11) f =c/d; ( ) (12) (!(a+b)+c-1) | | (b+c/3) ( ) (13) (a&b)^( ~c | ~d) ( ) (14) f= (a-b>0 ? c/d : c%d ) ; ( ) (15) b=a++ , a%3 ( ) 三、程序改错(10分) 要求:不得改变程序框架,不得重写程序,无需文字说明,直接在代码上添加、删除和修改。

(16) 用指针的方法实现对输入的3个整数按从小到大的顺序输出显示 #include <stdio.h> void main(void) { int a,b,c;int *pa=&a,*pb=&b,*pc=&c;scanf("%d%d%d",&pa,&pb,&pc);院系________________班级________________姓名________________学号________________成绩________________if(*pa>*pb) swap( pa , pb);if(*pb>*pc) swap( pb , pc);printf("%d\t%d\t%d\n",*pa,*pb,*pc);}void swap(int *px,int *py){int *temp;temp =px;px =py;py =temp;}(17)统计N个字符串中大写字母和数字字符的个数#include <stdio.h>#define N 5void main(void){char string[N][80];char i;int CapitalCount , NumCount;for(i=1;i<=N;i++)scanf("%s",&string[i]);for(i=0;i<=N;i++)CapitalCount +=count(string[i],&NumCount);printf("CapitalCount=%d,NumCount=%d\n",CapitalCount,NumCount); }count(char *pstr , int *result){int temp,i;*result = temp=0;for(i=0 ; i<80 ; i++){if(pstr[i]>='A'&&pstr[i]<='Z')temp ++;if(pstr[i]>=0&&pstr[i]<=9)*result ++;}return temp;}四、程序填空(10分)(18)找N个字符串中最大字符串和最小字符串#include <stdio.h>#include <string.h>#define N 5char *GetMaxMinString( );char *GetMaxMinString( ){int a;char *max;;for(a=1;a<num;a++){if( )max =string[a];if( )*min =string[a];}return max;}void main(void){char string[N][80],*pmax,*pmin;int i;for(i=0;i<N;i++)gets(string[i]);pmax =GetMaxMinString( );printf("Max string is %s,Min string is %s\n",pmax,pmin);}(19)以下程序用二维数组保存多个字符串,用二级指针处理多个字符串的排序。

华中科技大学C语言试卷

华中科技大学C语言试卷

计算机学院2008-2009学年第2学期C语言程序设计考试试卷一、单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项是正确的,请选择正确的选项并填写到括号内,选择正确得分。

本大题共10小题,每小题1分,共10分。

)1、ENUM是【 b 】A、合法标识符B、C语言的关键字C、合法的字符串D、既不是C语言的关键字,也不是合法的字符串或标识符2、下列数据中属于合法字符常量的是【 d 】A、'\'B、'\xag'C、'45'D、'\''3、下列数据中合法的浮点型常量是【 c 】A、E+10B、2E+1.5C、2E-10D、0x2.5E104、下列数据中与256等值的数为【】A、0256B、0400C、0x400D、0x2565、以下叙述中正确的是【】A、局部变量说明为static存储类型,其生存期将得到延长B、全局变量说明为static存储类型,其作用域将被扩大C、任何存储类型的变量在未赋初值时,其值都是不确定的D、形参可以使用的存储类型说明符与局部变量完全相同6、 -127的16位补码的十六进制表示是【】A、0xff81B、0x807fC、0xff80D、0x80807、对于下面的数组声明,正确的是【】A、int x[][5];B、char t[ ]={…a‟,‟b‟,‟c‟,‟\0‟};C、int n=5,a[n];D、char s[5]=“abcde”;8、若有以下说明和语句,则在执行for语句后,*(*pt+2)表示的数组元素【】int t[3][3],(*pt)[3],k;for (k=0;k<3;k++) pt = t+k;A、t[1][2]B、t[2][0]C、t[2][1]D、t[2][2]9、已知枚举类型定义: enum a {ONE=5,TWO=3,THREE}; 则THREE的值的是【】A、1B、2C、4D、010、设有以下说明和语句,则表达式z.y.a2的值的是【】struct packed {unsigned short a1 : 2;unsigned short a2 : 2;unsigned short a3 : 4;unsigned short a4 : 8;};union {short x;struct packed y;} z;z.x=0xabab;A、11B、3C、2D、10二、多项选择题(下面每小题的A、B、C、D备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内,多选、少选、错选均不得分。

华中科技大学C++上机实验答案(全)

华中科技大学C++上机实验答案(全)

实验一/*要求从键盘输入三个不等的整数后按ENTER键,在屏幕上由大到小的输出。

*/ #include<iostream>using namespace std;int main(){int a,b,c,max,min;cout<<"请输入三个不同的整数:"<<endl;cin>>a>>b>>c;if(a>b){max=a;min=b;}else{max=b;min=a;}if(c>max)cout<<c<<'\t'<<max<<'\t'<<min<<endl;else if(c<min)cout<<max<<'\t'<<min<<'\t'<<c<<endl;else cout<<max<<'\t'<<c<<'\t'<<min<<endl;return 0;}实验二//输入两个数,将它们交换后输出。

#include<iostream>using namespace std;int main(){int a,b,temp;cout<<"输入a,b:";cin>>a>>b;cout<<"a="<<a<<'\t'<<"b="<<b<<endl;temp=a;a=b;b=temp;cout<<"a="<<a<<'\t'<<"b="<<b<<endl;return 0;}//求一个三角形的面积(例题程序)#include<iostream>#include<cmath>using namespace std;int main(){float a,b,c,s,area;cout<<"a,b,c=";cin>>a>>b>>c;s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));cout<<"area="<<area<<endl;return 0;}//求一个三角形的面积(修改后的程序)#include<iostream>#include<cmath>using namespace std;int main(){int a,b,c,s,area;cout<<"a,b,c=";cin>>a>>b>>c;if(a<b+c&&b<a+c&&c<a+b){s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));cout<<"area="<<area<<endl;}else cout<<"不能够成三角形"<<endl;return 0;}/*用sizeof运算符计算C++中char,short,int,long,float,double等基本数据类型所占的字节数,并按以下格式输出:sizeof(char)=1 bytesizeof(short)=2 bytessizeof(int)=4 bytes……..*/#include<iostream>using namespace std;int main(){cout<<"sizeof(char)="<<sizeof(char)<<"byte"<<endl;cout<<"sizeof(short)="<<sizeof(short)<<"byte"<<endl;cout<<"sizeof(int)="<<sizeof(int)<<"byte"<<endl;cout<<"sizeof(long)="<<sizeof(long)<<"byte"<<endl;cout<<"sizeof(float)="<<sizeof(float)<<"byte"<<endl;cout<<"sizeof(double)="<<sizeof(double)<<"byte"<<endl;return 0;}//修改后的程序#include<iostream>using namespace std;int main(){cout<<"char"<<'\t'<<sizeof(char)<<"byte"<<endl;cout<<"short"<<'\t'<<sizeof(short)<<"byte"<<endl;cout<<"int"<<'\t'<<sizeof(int)<<"byte"<<endl;cout<<"long"<<'\t'<<sizeof(long)<<"byte"<<endl;cout<<"float"<<'\t'<<sizeof(float)<<"byte"<<endl;cout<<"double"<<'\t'<<sizeof(double)<<"byte"<<endl;return 0;}//用数组列表输出#include<iostream>using namespace std;int main(){char datatype[]="char\tshort\tint\tlong\tfloat\tdouble";cout<<datatype<<endl;cout<<sizeof(char)<<'\t'<<sizeof(short)<<'\t'<<sizeof(int)<<'\t'<<sizeof(long)<<'\t'<<siz eof(float)<<'\t'<<sizeof(double)<<endl;return 0;}/*编写满足下列要求的程序:根据输入的球半径,分别计算球的表面积、体积和质量(假设球的密度为7.8kg/dm3),并输出计算结果。

华中科技大学c程序设计考试题

华中科技大学c程序设计考试题

1.c++系统预定了4个用于标准数据流的对象,下;正确答案:【D】分值:【1】;2.设有说明:charw;intx;floaty;正确答案:【D】分值:【1】;3.下列对析构函数的描述中,正确的是(____);C.析构函数的定义只能在类体内D.析构函数可以有;正确答案:【A】分值:【1】;4.下列定义数组的语句中正确CPP程序设计模拟考试 1--第2套试卷1.c++系统预定了4个用于标准数据流的对象,下列选项中不属于此类对象的是(____) A.cout B.cin C.cerr D.cset正确答案:【D】2.设有说明:char w;int x;float y;double z;则表达式w*x+z-y 值的数据类型为(____) A.float B.char C.int D.double正确答案:【D】分值:【1】3.下列对析构函数的描述中,正确的是(____) A.一个类中只能定义一个析构函数 B.析构函数名与类名不同C.析构函数的定义只能在类体内D.析构函数可以有一个或多个参数正确答案:【A】分值:【1】4.下列定义数组的语句中正确的是(____)A.#define size 10 char str1[size],str2[size+2];B.char str[];C.i nt num['10'];D.int n=5; int a[n][n+2];正确答案:【A】分值:【1】5.关于this指针使用说法正确的是(____)A.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码B.保证基类私有成员在子类中可以被访问。

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

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

正确答案:【A】分值:【1】6.所谓多态性是指(____)A.不同的对象调用不同名称的函数B.不同的对象调用相同名称的函数C.一个对象调用不同名称的函数D.一个对象调用不同名称的对象正确答案:【B】分值:【1】7.派生类构造函数的执行顺序是先执行________ 的构造函数,然后执行成员对象的构造函数,最后执行________ 的构造函数。

华中科技大学C语言期末考试题库试题及答案汇总

华中科技大学C语言期末考试题库试题及答案汇总

华中科技大学 C 语言期末考试题库试题及答案汇总1 .设int a=12 ,则执行完语句a+=a-=a*a 后,a 的值是__D____ 。

A、552 B 、264 C 、144 D 、-264知识点:算术表达式2 .以下变量x、y、z 均为double 类型且已正确赋值,不能正确表示数字式子x/(y*z) 的C 语言表达式是___A___ 。

A、x/y*z B 、x*(1/(y*z))C 、x/y*1/z D 、x/y/z知识点:算术表达式3 .若有定义:int a=8,b=5,c;, 执行语句c=a/b+0.4; 后,c 的值是__B____ 。

A、1.4 B 、1 C 、2.0 D 、2知识点:算术表达式4 .有如下程序main(){int a; char c=10;float f=100.0; double x;a=f/=c*=(x=6.5);printf("%d %d %3.1f%3.1f\n",a,c,f,x);}程序运行后输出结果是___B___ 。

A、1 65 1 6.5B 、1 65 1.5 6.5C 、1 65 1.0 6.5D 、2 65 1.5 6.5知识点:赋值表达式5 .若变量a、i 已正确定义,且i 已正确赋值,合法的语句是___B___ 。

A、a==1 B 、++i; C 、a=a++=5; D 、a=int(i);知识点:赋值表达式6 .若变量已正确定义并赋值,下面符合 C 语言语法的表达式是__B____ 。

A、a:=b+1 B 、a=b=c+2C 、int 18.5%3 D 、a=a+7=c+b知识点:赋值表达式7 .设变量x 为float 型且已赋值,则以下语句中能将x 中的数值保留到小数点后两位,并将第三位四舍五入的是__C____ 。

A、x=x*100+0.5/100.0B 、x=(x*100+0.5)/100.0C、x=(int)(x*100+0.5)/100.0D、x=(x/100+0.5)*100.0知识点:赋值表达式8 .在一个 C 程序中___B___ 。

华中科技大学2009级C++考试卷与答案

华中科技大学2009级C++考试卷与答案

华中科技大学2009级C++考试卷与答案一、单项选择题(每题2分,共30分)1.以下叙述中正确的是( a )A) 构成C++语言程序的基本单位是类B) 可以在一个函数中定义另一个函数C) main()函数必须放在其他函数之前D) 所有被调用的函数一定要在调用之前进行定义2.C++语言的跳转语句中,对于break和continue说法正确的是(b)A)break语句只应用与循环体中B)continue语句只应用与循环体中C)break是无条件跳转语句,continue不是D)break和continue的跳转范围不够明确,容易产生问题3.for(int x=0,y=0; !x& &y<=5; y++)语句执行循环的次数是(d)A)0B)5C)6D)无次数4.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为( b)。

A) x.a B) x.a() C) x->a D) x->a()5.下面有关重载函数的说法中正确的是( c )A)重载函数必须具有不同的返回值类型;B)重载函数形参个数必须不同;C)重载函数必须有不同的形参列表 D)重载函数名可以不同;6.下列关于构造函数的描述中,错误的是( d)A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行C)构造函数可以是内联函数; D)构造函数不可以重载7.设有数组定义:char array[]=″China″;,则数组array所占的空间为( c )A)4个字节 B)5个字节 C)6个字节 D)7个字节8.下面选项中不属于面向对象程序设计特征的是( d ) 。

A)继承性 B)多态性 C)封装性 D)相似性9.在C++中用来实现运行时多态性的是( d )。

A)重载函数B)析构函数 C)构造函数D)虚函数10.以下程序的输出结果是( a )#includeusing namespace std;void reverse(int a[],int n){int i,t;for(i=0;i<="" p="">{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}}void 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];cout<<s;< p="">}A) 22 B) 10 C) 34 D) 3011. 下面叙述不正确的是( d )A )派生类一般都用公有派生B )对基类成员的访问必须是无两义性的C )赋值兼容则也适用于多重继承的组合D )基类的公有成员在派生类中仍然是公有的12. 下面程序的结果是( c )#includeusing namespace std;class test{private:int num;public:test();int getint(){return num;}~test( );};test::test(){num =0;}test::~test(){cout<<"Destructor is active"<<endl;< p=""> }void main(){test x[3];cout<<"Exiting main"<<="">A) Exiting is activeDestructor is activeDestructor is active Destructor is activeC) Exiting main D) Exiting main Destructor is activeDestructor is activeDestructor is active13. 下面描述中,表达错误的是( b )A) 公有继承时基类中的public 成员在派生类中仍是public 的B) Destructor is active Destructor is active Destructor is active Exiting mainB) 公有继承时基类中的private成员在派生类中仍是private的C) 公有继承时基类中的protected成员在派生类中仍是protected的D) 私有继承时基类中的public成员在派生类中是private的14.有以下程序#includeusing namespace std;void main( ){int a=5,b=0,c=0;if(a=b+c) cout<<"***"<<endl;< p="">else cout<<"$$$"<<endl;< p="">}下列选项叙述正确的是( d )A) 有语法错不能通过编译 B) 可以通过编译但不能通过连接C) 输出*** D) 输出$$$15.假定AB为一个类,则执行“AB x;”语句时将自动调用该类的( b )。

华中科技大学考试系统C++第一章复习(1)[完成]

华中科技大学考试系统C++第一章复习(1)[完成]

NNYNN YYYNNCABBCCCAADADDBAABACD/*-------------------------------------------------------【程序设计】---------------------------------------------------------题目:试编程判断输入的正整数是否既是5又是7的倍数,如是,则输出yes,否则输出no.输出结果见图:样张.JPG-------------------------------------------------------*/#include <iostream>using namespace std;void main(void){int i,a[5]={5,7,12,25,35};/**********Program**********/for(i=0;i<=4;i++){if(a[i]%5==0&&a[i]%7==0) cout<<"yes"<<endl;else cout<<"No"<<endl;}/********** End **********//*-------------------------------------------------------【程序设计】---------------------------------------------------------题目:输入3个整数,编程序输出最大值。

-------------------------------------------------------*/#include<iostream>using namespace std;void main(){int x,y,z;cin>>x>>y>>z;int max;/**********Program**********/int a ;if(x>y) a=x;else a=y;if(z>a) max=z;else max=a;/********** End **********/cout<<"max="<<max;}}/*-------------------------------------------------------【程序设计】---------------------------------------------------------题目:完成如下分段函数。

华中科技大学C语言期末考试题库试题及答案汇总

华中科技大学C语言期末考试题库试题及答案汇总

A、0 B、0.5 C、1 D、2
知识点:算术表达式
38.设有 int x=11;则表达式(x++ * 1/3)的值是___A___。??
A、3
B、4 C、11 D、12
知识点:算术表达式
39.下列程序的输出结果是___C___。
main()
{
double d=3.2; int x,y;
x=1.2;y=(x+3.8)/5.0;
知识点:常量、变量和标识符
24.以下不能定义为用户标识符的是__D____。
A、Main B、_0 C、_int D、sizeof
知识点:常量、变量和标识符
25.下列叙述中正确的是_D_____。
A、C 语言中既有逻辑类型也有集合类型 B、C 语言中没有逻辑类型但有集合类型
C、C 语言中有逻辑类型但没有集合类型 D、C 语言中既没有逻辑类型也没有集合类型
知识点:简单 C 语言程序的构成和格式
12.
有以下程序
main()
{
int a=0,b=0;
a=10; /* 给 a 赋值 */
b=20; /* 给 b 赋值 */
printf("a+b=%d\n",a+b);
}
程序运行后的输出结果是___B___。
A、a+b=10 B、a+b=30 C、30 D、出错
D、int k_2 _001 ???
知识点:常量、变量和标识符
19.以下定义语句中正确的是__C____。
A、char a='A' b='B'; B、float a=b=10.0;(正解 a=10.0 b=10.0)

2022年华中科技大学公共课《C语言》科目期末试卷A(有答案)

2022年华中科技大学公共课《C语言》科目期末试卷A(有答案)

2022年华中科技大学公共课《C语言》科目期末试卷A(有答案)一、填空题1、设x=10100011,若要通过x*y使x的高4位取反,低4位不变,则y的二进制数是_______。

2、在C语言源程序中,一个变量代表【】。

3、一个C语言源程序由若干函数组成,其中至少应含有一个________4、表达式pow(2.8,sqrt(double(x))值的数据类型为_______。

5、若a、b和c均是int型变量,则执行表达式a=(b=4)+(c=2)后a的值为_______,b的值为_______,c的值为_______。

6、下面程序段的运行结果是_______。

char s[20]="abcd";char*sp=s;sp++;puts(strcat(sp,"ABCD"));7、执行下面程序段后,k的值是_______。

k=1;n=263;do{k*=n%10;n/=10;} while(n);8、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。

请填空。

a+=_______;b=a-_______;a-=_______;9、若有以下定义和语句,为使变量c1得到字符’A',变量c2得到字符’B’,正确的输入形式是_______。

char cl,c2;scanf("%4c%4c",&cl,8&c2);10、设有以下宏定义:#define WIDTH80#define LENGTH(WIDTH+40)则执行赋值语句:k=LENGTH*20;(k为int型变量)后,k的值是_______。

二、选择题11、下面正确的字符常量是( )A."c"B. "\\"C. 'w'D. "12、若有代数式|x3+log10x|,则正确的C语言表达式是()A.fabs(x*3+log(x))B.abs(pow(x,3)+log(x))C.abs(pow(x,3.0)+log(x))D.yfabs(pow(x,3.0)+log(x))13、以下不符合C语法的赋值语句是()。

华中科技大学C++第四单元考试系统答案

华中科技大学C++第四单元考试系统答案

华中科技大学C++第四单元考试系统答案【程序设计】---------------------------------------------------------题目:设计并测试一个矩形类(Rectangle),属性为矩形的左上与右下角的坐标,矩形水平放置。

操作为计算矩形周长与面积。

输出如下:left-top point is (100,200)right-bottom point is (300,400)面积40000 周长800-------------------------------------------------------*/#include#includeusing namespace std;/**********Program**********/class Rectangle{private:doubleleft,top;double right,bottom;public:Rectangle(double l=0,double t=0,double r=0,double b=0);~Rectangle(){};void Show();void Assign(double l,doublet,doubler,double b);double Area();double Perimeter();double getLeft();double getTop();double getRight();double getBottom();};Rectangle::Rectangle(double l,doublet,doubler,double b){left=l;top=t;right=r;bottom=b;}void Rectangle::Assign(double l,doublet,doubler,double b){ left=l;top=t;right=r;bottom=b;}void Rectangle::Show(){cout<<"left-top point is("<<left<<","<<top<<")"<<endl;< p="">cout<<"right-bottom point is("<<right<<","<<bottom<<")"<<endl;< p="">}double Rectangle::Area(){return fabs((left-right)*(top-bottom));}double Rectangle::Perimeter(){return 2*(fabs(left-right)+fabs(top-bottom));}double Rectangle::getLeft(){return left;}double Rectangle::getRight(){return right;}double Rectangle::getTop(){return top;}double Rectangle::getBottom(){return bottom;}/********** End **********/int main(){Rectangle rect;rect.Show();rect.Assign(100,200,300,400);rect.Show();Rectangle rect1(0,0,200,200);rect1.Show();Rectangle rect2(rect1);rect2.Show();cout<<"left-top point is ("<<rect.getleft()<<","<<rect.gettop()<<")"<<'\n';< p=""> cout<<"right-bottom point is ("<<rect.getright()<<","<<rect.getbottom()<<")"<<'\n';< p=""> cout<<"面积"<<rect.area()<<'\t'<<"周长"<<rect.perimeter()<<endl;< p="">return 0;}/*-------------------------------------------------------【程序设计】---------------------------------------------------------题目:补充构造一个日期时间类(Timedate),数据成员包括年、月、日和时、分、秒,函数成员包括设置日期时间和输出时间,其中年、月请用整型,并完成测试。

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

1.c++系统预定了4个用于标准数据流的对象,下;正确答案:【D】分值:【1】;2.设有说明:charw;intx;floaty;正确答案:【D】分值:【1】;3.下列对析构函数的描述中,正确的是(____);C.析构函数的定义只能在类体内D.析构函数可以有;正确答案:【A】分值:【1】;4.下列定义数组的语句中正确CPP程序设计模拟考试1--第2套试卷1.c++系统预定了4个用于标准数据流的对象,下列选项中不属于此类对象的是(____) A.cout B.cin C.cerr D.cset正确答案:【D】2.设有说明:char w;int x;float y;double z;则表达式w*x+z-y 值的数据类型为(____) A.float B.char C.int D.double正确答案:【D】分值:【1】3.下列对析构函数的描述中,正确的是(____) A.一个类中只能定义一个析构函数B.析构函数名与类名不同C.析构函数的定义只能在类体内D.析构函数可以有一个或多个参数正确答案:【A】分值:【1】4.下列定义数组的语句中正确的是(____)A.#define size 10 char str1[size],str2[size+2];B.char str[];C.int num['1 0'];D.int n=5; int a[n][n+2];正确答案:【A】分值:【1】5.关于this指针使用说法正确的是(____)A.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码B.保证基类私有成员在子类中可以被访问。

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

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

正确答案:【A】分值:【1】6.所谓多态性是指(____)A.不同的对象调用不同名称的函数B.不同的对象调用相同名称的函数C.一个对象调用不同名称的函数D.一个对象调用不同名称的对象正确答案:【B】分值:【1】7.派生类构造函数的执行顺序是先执行________ 的构造函数,然后执行成员对象的构造函数,最后执行________ 的构造函数。

正确答案:【基类或派生类】分值:【1】8.C++语言程序的注释可以出现在程序中的任何地方,一个注释以________ 作为开始和结束的标记。

正确答案:【/**/】分值:【1】9.下列程序在构造函数和析构函数中申请和释放类的数据成员int *a,申请时使用形参b初始化a,请填空。

class A {public:~A(); private: int *a; };A::(int b) {________ ;} A::~A(){________ ;}正确答案:【a=new int(b) 或delete a】分值:【1】10.C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是(____) A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念正确答案:【D】11.下列有关模板和继承的叙述正确的是(____) A.模板和继承都可以派生出一个类系B.从类系的成员看,模板类系的成员比继承类系的成员较为(____)稳定C.从动态性能看, 继承类系比模板类系具有更多的动态特性D.相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系正确答案:【D】12.关于new运算符的下列描述中,错误的是(____) A.它可以用来动态创建对象和对象数组B.使用它创建的对象或对象数组可以使用运算符delete删除C.使用它创建对象时要调用构造函数D.使用它创建对象数组时必须指定初始值正确答案:【D】13.下列运算符中,在C++语言中不能重载的是(____) A.* B.>= C.::D./正确答案:【C】14.已知int i=0, x=1, y=0 ; 在下列选项使i的值变成1的语句是(____) A. if( x&&y ) i++ ; B.if( x==y ) i++ ; C.if( x||y ) i++ ; D.if( !x ) i++ ;正确答案:【C】15.sizeof(float)是(____) A.一个双精度型表达式B.一个整型表达式C.一种函数调用D.一个不合法的表达式正确答案:【B】16.下面叙述不正确的是(____)A.基类的保护成员在派生类中仍然是保护的成员B.基类的保护成员在公有派生类中仍然是保护的C.基类的保护成员在私有派生类中仍然是私有的D.对基类成员的访问必须是无二义性17.决定C++语言中函数的返回值类型的是(____) A.return语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型正确答案:【D】分值:【1】18.下面对于友元函数描述正确的是(____) A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员正确答案:【C】分值:【1】19.不能作为重载函数的调用的依据是(____) A.参数个数B.参数类型C.函数类型D.函数名称正确答案:【D】分值:【1】20.面向对象的模型中,最基本的概念是对象和________。

正确答案:【类】分值:【1】21.在VC中,若定义一个函数的返回类型为void,以下叙述正确的是(____) A.函数返回值需要强类型转换B.函数不执行任何操作C.函数本身没有返回值D.函数不能修改实际参数的值正确答案:【C】分值:【1】22.函数参数的默认值不允许为(____) A.全局常量B.直接常量C.局部变量D.函数调用正确答案:【C】分值:【1】23.下列的描述中(____)是错误的。

A.使用全局变量可以从被调用函数中获取多个操作结果B.局部变量可以初始化,若不初始化,则系统默认它的值为0C.当函数调用完后,静态局部变量的值不会消失D.全局变量若不初始化,则系统默认它的值为0正确答案:【B】分值:【1】24.已知int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, *p = a ;则不能表示数组a 中元素的式子是(____) A.*a B.*p C.aD.a[ p-a ]正确答案:【C】分值:【1】25.已知int a[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } ; 则不能表示数组元素a[2][1]的地址是(____)A.&a[2][1]B.*(a[2]+1)D.*(a+2)+1正确答案:【B】分值:【1】26.设char *s1,*s2; 分别指向两个字符串,判断字符串s1和s2是否相等的表达式为(____) A.s1=s2 B.s1==s2C.strcpy(s1,s2)==0D.strcmp(s1,s2)==0正确答案:【D】分值:【1】27.在类定义的外部,可以被访问的成员有A.所有类成员B.private 或protected 的类成员C.public 的类成员D.public 或private 的类成员正确答案:【C】28.若class B 中定义了一个class A 的类成员A a,关于类成员的正确叙述是(____) A.在类B 的成员函数中可以访问A 类的私有数据成员 B.在类B 的成员函数中可以访问A 类的保护数据成员C.类B 的构造函数可以调用类A 的构造函数做数据成员初始化D.类A 的构造函数可以调用类B 的构造函数做数据成员初始化正确答案:【C】29.要求用友员函数重载的运算符是(____) A.= B.[] C.<< D.()正确答案:【C】30.将以下程序写成三目运算表达式是________ 。

if(a>b)max=a; else max =b;正确答案:【max=(a>b)?a:b;】31.下面程序的结果为________ 。

#include voidmain() {inta=1,b=2; boolc =1;if((a>b)||c)cout<<″true″< elsecout<<″false″<正确答案:【true】32.在创建派生类对象时,构造函数的执行顺序是(____)A.对象成员构造函数—基类构造函数—派生类本身的构造函数B.派生类本身的构造函数—基类构造函数—对象成员构造函数C.基类构造函数—派生类本身的构造函数—对象成员构造函数D.基类构造函数—对象成员构造函数—派生类本身的构造函数正确答案:【D】33.以下程序的执行结果为________ 。

#includeusing namespace std;virtualvoidwho(){cout<<″baseclass″< };classderive1:publicbase {public: voidwho(){cout<<″derive1class″< };classderive2:publicbase {public: voidwho(){cout<<″derive2class″< };voidmain() {baseobj1,*p; derive1obj2; derive2obj3; p=&obj1; p->who(); p=&obj2; p-> who(); p=&obj3; p->who();}正确答案:【base class derive1 class derive2 class】34.虚析构函数的作用是(____) A.虚基类必须定义虚析构函数B.类对象作用域结束时释放资源 C.delete 动态对象时释放资源 D.无意义正确答案:【C】35.若一个类中含有纯虚函数,则该类称为(____) A.基类B.纯基类C.抽象类D.派生类正确答案:【C】36.下列流类中可以用于处理文件的是(____) A.iosB.iostreamC.strstreamD.fstream正确答案:【D】37.作为语句标号使用的C++保留字case 和default 只能用于________语句的定义体中。

正确答案:【switch】38.存储字符’a’和字符串”a”分别需要占用________和________个字节。

正确答案:【1 或2】39.若有定义“struct AA {int a; char b; double c;}x;”,则x 占用空间大小为________字节。

正确答案:【13】分值:【1】40.若y 是x 的引用,则&y 和&x 的值________,即为变量________的地址。

相关文档
最新文档