c++问题,请大神的词帮忙改一下,80分,谢谢

QT写的程序,希望对c++,qt理解比较深的帮我解答下,解决+80分,在线等,急谢谢_百度知道
QT写的程序,希望对c++,qt理解比较深的帮我解答下,解决+80分,在线等,急谢谢
我用qt写了两个界面,都是单独继承QWidget,本来想点击run按钮能做出图形,现在发现
plotter.readFlightCurves(&plotter,filename);//为画图函数
plotter.setVisible(true);在main函数里能直接画出图形,但是到了其他函数调用时候执行到
我有更好的答案
这种画图的最好在paintEvent()实现,你可以重载改写一下paintEvent()函数
为您推荐:
用车的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java计算器,出现错误,请大神帮忙改一下
[问题点数:80分]
本版专家分:0
CSDN今日推荐
本版专家分:34826
2012年11月 Java大版内专家分月排行榜第二2012年9月 Java大版内专家分月排行榜第二2012年8月 Java大版内专家分月排行榜第二2012年7月 Java大版内专家分月排行榜第二
2012年10月 Java大版内专家分月排行榜第三2012年6月 Java大版内专家分月排行榜第三
本版专家分:104866
2012年 总版技术专家分年内排行榜第一
2012年8月 总版技术专家分月排行榜第三2012年7月 总版技术专家分月排行榜第三
2014年8月 高性能开发大版内专家分月排行榜第一2013年11月 高性能开发大版内专家分月排行榜第一2012年12月 Java大版内专家分月排行榜第一2012年11月 Java大版内专家分月排行榜第一2012年10月 Java大版内专家分月排行榜第一2012年9月 Java大版内专家分月排行榜第一2012年8月 Java大版内专家分月排行榜第一2012年7月 Java大版内专家分月排行榜第一2012年6月 Java大版内专家分月排行榜第一2012年5月 Java大版内专家分月排行榜第一2012年4月 Java大版内专家分月排行榜第一2012年3月 Java大版内专家分月排行榜第一2012年2月 Java大版内专家分月排行榜第一2012年1月 Java大版内专家分月排行榜第一
本版专家分:60
本版专家分:0
本版专家分:0
本版专家分:104866
2012年 总版技术专家分年内排行榜第一
2012年8月 总版技术专家分月排行榜第三2012年7月 总版技术专家分月排行榜第三
2014年8月 高性能开发大版内专家分月排行榜第一2013年11月 高性能开发大版内专家分月排行榜第一2012年12月 Java大版内专家分月排行榜第一2012年11月 Java大版内专家分月排行榜第一2012年10月 Java大版内专家分月排行榜第一2012年9月 Java大版内专家分月排行榜第一2012年8月 Java大版内专家分月排行榜第一2012年7月 Java大版内专家分月排行榜第一2012年6月 Java大版内专家分月排行榜第一2012年5月 Java大版内专家分月排行榜第一2012年4月 Java大版内专家分月排行榜第一2012年3月 Java大版内专家分月排行榜第一2012年2月 Java大版内专家分月排行榜第一2012年1月 Java大版内专家分月排行榜第一
本版专家分:0
本版专家分:0
本版专家分:104866
2012年 总版技术专家分年内排行榜第一
2012年8月 总版技术专家分月排行榜第三2012年7月 总版技术专家分月排行榜第三
2014年8月 高性能开发大版内专家分月排行榜第一2013年11月 高性能开发大版内专家分月排行榜第一2012年12月 Java大版内专家分月排行榜第一2012年11月 Java大版内专家分月排行榜第一2012年10月 Java大版内专家分月排行榜第一2012年9月 Java大版内专家分月排行榜第一2012年8月 Java大版内专家分月排行榜第一2012年7月 Java大版内专家分月排行榜第一2012年6月 Java大版内专家分月排行榜第一2012年5月 Java大版内专家分月排行榜第一2012年4月 Java大版内专家分月排行榜第一2012年3月 Java大版内专家分月排行榜第一2012年2月 Java大版内专家分月排行榜第一2012年1月 Java大版内专家分月排行榜第一
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐《C++程序设计面向过程习题》 www.wenku1.com
<meta name="description" content=" 《Visual C++ 程序设计基础》练习题 第一部分
面向过程程序设计 南通大学计算机科学与技术学院 2006年3月 第一章
VC++语言的基础知识和简单的语句 1.C++语言程序由〖C〗组成。 A)子程序
D)主程序和子程序 2.以下各标识符中,合法的用户标识符组为〖D〗。
A)PAd,P#d,b-b,abc,_0123,ssiped
B)cin,a10,CPP,float,del_word,signed
C)void,max,hiy,,list,*jer
D)a,temp,_isw,INT,keep,wind..." />
<meta property="og:description" content="【摘要】: 《Visual C++ 程序设计基础》练习题 第一部分
面向过程程序设计 南通大学计算机科学与技术学院 2006年3月 第一章
VC++语言的基础知识和简单的语句 1.C++语言程序由〖C〗组成。 A)子程序
D)主程序和子程序 2.以下各标识符中,合法的用户标识符组为〖D〗。
A)PAd,P#d,b-b,abc,_0123,ssiped
B)cin,a10,CPP,float,del_word,signed
C)void,max,hiy,,list,*jer
D)a,temp,_isw,INT,keep,wind"/>
C++程序设计面向过程习题日期:
《Visual C++ 程序设计基础》练习题第一部分 面向过程程序设计南通大学计算机科学与技术学院2006年3月第一章 VC++语言的基础知识和简单的语句1.C++语言程序由〖C〗组成。A)子程序 B)过程 C)函数 D)主程序和子程序 2.以下各标识符中,合法的用户标识符组为〖D〗。 A)PAd,P#d,b-b,abc,_0123,ssiped B)cin,a10,CPP,float,del_word,signed C)void,max,hiy,,list,*jer D)a,temp,_isw,INT,keep,wind3.在VC++中,char类型数据占〖A〗个字节,int类型数据占〖C〗个字节,short类型数据占〖B〗个字节,long类型数据占〖C〗个字节,float类型数据占〖C〗个字节,double类型数据占〖D〗个字节。 A)1 B)2 C)4 D)8 4.以下语句〖B〗。int a=-2L; cout << a <<A)赋值不合法 B)输出值为-2 C)输出为不确定值 D)输出值为2 5.在VC++中,以下语句的输出为〖D〗。 short int k=-1;cout << k << ',' << (unsigned short)k << A)-1,-1 B)-1,32767 C)-1,32768 D)-1,655356.若有以下说明语句,则该语句〖B〗。 char s='\092';A)使s的值包含1个字符 B)说明不合法,s的值不确定 C)使s的值包含4个字符 D)使s的值包含3个字符7.若a,b均为int型变量,为了将10赋给a,将20赋给b,则对应以下cin语句的正确输入方式为〖B〗。(代表回车换行,_代表空格)。 cin >> a >>A)1020 B)10_20 C)10,20 D)20_10 8.以下语句的输出为〖D〗。 int k=017,g=111;cout << ++k << ',' << hex << g++ << A)15,6f B)16,70 C)15,71 D)16,6f 9.若给出以下程序,其输出为〖B〗。 #include void main(void) { int a=4,b=7;cout << (a=a+1,b+a,b+1) <<}A)5 B)8 C)11 D)程序有错误,无法运行10.以下程序不用第三个变量,实现将两个数进行对调的操作。 #include
void main(void) { int a,b; cin >> a >>cout << "a=" << a <<'\t' << "b=" << b << a=〖1A〗; b=〖2B〗;a=〖3B〗;cout << "a=" << a <<'\t' << "b=" << b << }〖1〗A)a+b B)a-b C)a*b D)a/b 〖2〗A)a+b B)a-b C)b-a D)a*b 〖3〗A)a+b B)a-b C)b*a D)a/b11.若变量a已说明为float类型,i为int类型,则表达式(或语句)〖B,C〗能实现将a中的数值保留小数点后两位,第三位进行四舍五入的运算。(多项选择)。 A)a=(a*100+0.5)/100.0; B)i=a*100+0.5,a=i/100.0; C)a=(int)(a*100+0.5)/100.0; D)a=(a/100+0.5)*100.0;12.在以下关于C++语言的注释的叙述中,不正确的是〖C〗。A)在C++程序中,注释可用"/*"、"*/"形式表示,也可用"//"形式表示 B)C++编译器在编译一个程序时,将跳过注释,不对其进行处理 C)C++编译器在编译一个程序时,可发现注释中的单词拼写错误 D)程序中注释的多少不会影响所生成的可执行文件的长度 13.在以下叙述中,不正确的是〖A〗。A)C++语言中,仅在处理字符及字符串时才区分字母的大小写B)C++语言没有输入/输出语句,输入/输出是通过输入/输出库函数实现的 C)C++语言是C语言的一个超集D)程序中注释不会影响所生成的可执行文件的长度 14.若有以下说明和语句,则输出结果为〖B〗。 int a=16,b=10,i; float x=10; i=ab; cout<<i<<','<<x<<A)0,25 B)0,10 C)1,25 D)1,1015.若有以下语句,则输出结果为〖D〗。 int a=2,b=1;cout <b?"a大于b":"a小于b" <<A)a大于b B)a小于b C)1 D)输出语句有错16.以下运算中,运算结果为8的是〖B〗。A)sizeof(2.5f) B)sizeof("\n\t\0X234") C)sizeof(long) D)sizeof('\100'+1000)第二章 控制结构1.在以下各组运算符中,优先级最高的运算符为〖1B〗,〖2C〗,〖3C〗,〖4D〗。 〖1〗A)?: B)++ C)&& D)+= 〖2〗A)*= B)>= C)(类型) D), 〖3〗A)|| B)% C)! D)== 〖4〗A)= B)!= C)*(乘号) D)()2.若给定条件表达式(m)?(a++):(a--),则其中表达式m〖C〗。A)和(m==0)等价 B)和(m==1)等价 C)和(m!=0)等价 D)和(m!=1)等价 3.以下程序的输出为〖D〗。 #include
void main(void) { int i,j,k,a=3,b=2;i=(--a==b++)?--a:++b;j=a++;k=b;cout<<"i="<<i<<','<<"j="<<j<<','<<"k="<<k<< }A)i=2,j=1,k=3 B)i=1,j=1,k=2 C)i=4,j=2,k=4 D)i=1,j=1,k=3 4.在C++语言的if语句中,用作判断的表达式为〖D〗。A)关系表达式 B)逻辑表达式 C)算术表达式 D)任意表达式5.表达式〖B,D〗是满足:当x的值在-10到10,100到110时值为"真",否则为"假"的表达式(多项选择)。 A)(10>x>-10)||(100>x-100)B)!((x=10))||!((x=110)) C)(x-10)&&(x>100)&&(x-10)&&(x<10)||(x100)6.表达式〖A,C,D〗是满足:a和b的值都大于0,小于n时值为"真",否则值为"假"的表达式(多项选择)。 A)(a>0)&&(b>0)&&(a<n)&&(b<n)B)a&&b&&(a<n)&&(b<n)C)!((a<=0)||(b=n)||(a>=n)) D)!(a<=0)&&!(b=n)&&!(a>=n)7.表达式〖B,C,D〗是满足:当int c的值为1,3,5三个数时值为"真",否则值为"假"的表达式(多项选择)。 A)(c=1)||(c=3)||(c=5)B)!((c1))&&!((c3))&&(c=1) C)(c!=2)&&(c!=4)&&(c>=1)&&(c<=5) D)(c==1)||(c==3)||(c==5) 8.以下程序的输出为〖B〗。 #include
void main(void) { int a=10,b=50,c=30;if(a>b) a=b; b=c;c=a;cout<<"a="<<a<<','<<"b="<<b<<','<<"c="<<c<< }A)a=10,b=50,c=10 B)a=10,b=30,c=10 C)a=50,b=30,c=10 D)a=50,b=30,c=50 9.执行下面程序后的输出为〖D〗。 #include
void main(void){ int a=2,b=3;cout <b?a:b << }A)2 B)3 C)无法确定 D)有语法错10.在下面给出的四个语句段中,〖A〗能够正确表示出以下的函数关系: ┌ -1 (x<0) y=┤ 0 (x=0)└ 1 (x>0)A)if(x!=0) B)y=0; if(x>0) y=1; if(x>=0) else y=-1; if(x)y=1; else y=0; else y=-1; C)if(x<0)y=-1; D)y=-1; if(x!=0)y=1; if(x!=0)else y=0; if(x>0)y=1; else y=0;11.设i和k都是int类型,则以下for循环语句〖B〗。 for(i=0,k=-1;k=1;i++,k++) cout << "****\n";A)判断循环结束的条件不合法 B)是无限循环 C)循环体一次也不执行 D)循环体只执行一次12.设i和x都是int类型,则以下for循环语句〖A〗。 for(i=0,x=0;i>x;A)最多执行10次 B)最多执行9次 C)是无限循环 D)循环体一次也不执行 13.以下程序的输出为〖B〗。 #include
void main(void) { int i,j,x=0;for(i=0;i<2;i++) { x++;for(j=0;j<=3;j++) { if(j%2) x++; } x++; }cout << "x=" << x << }A)x=4 B)x=8 C)x=6 D)x=12 14.以下程序的输出为〖B〗。 #include
void main(void) { int i,j,k=0,m=0; for(i=0;i<2;i++){ for(j=0;j<3;j++) k++;} m=i+j;cout << "k=" << k << ','<< "m=" << m << }k-=j;A)k=0,m=3 B)k=0,m=5 C)k=1,m=3 D)k=1,m=515.Ⅰ在C++语言中,当while语句中的条件为〖A〗时,结束该循环。Ⅱ在C++语言中,当do...while语句中的条件为〖A〗时,结束该循环。 A)0 B)1 C)true D)非0 16.当k为整型,以下while循环执行〖C〗次。 k=10; while(k=0) k=k-1;A)10 B)无限 C)0 D)117.当k为整型,以下while循环执行〖B〗次。 k=2;while(k==0) cout <<k--; cout << '\n';A)无限 B)0 C)1 D)2 18.以下程序段中,〖C〗不是无限循环。 A)int i=100; while(1){ i=i%100;i++; if(i>100) } B)for(;;);19.以下程序的输出结果为〖B〗。#include
void main(void) { int k=0; char c='A'; do{ switch(c++) { case 'A':k++; case 'B':k--;case 'C':k+=2;A)k=3 B)k=4 C)k=2 D)k=0 20.以下程序的输出结果为〖C〗。 #include
void main(void) { int i=0,j=0,a=6;if((++i>0)||(++j>0))a++;cout << "i=" << i << ',' << "j=" << j << ',' << "a=" << a << }case 'D':k=k%2; case 'E':k=k*10; default: k=k/3; } k++;}while(c<'G');cout << "k=" << k << }C)int k=32764; do { k++; }while(k>0); D)int s=32764;while((s++%2)||(s%2)) s++;A)i=0,j=0,a=6 B)i=1,j=1,a=7 C)i=1,j=0,a=7 D)i=0,j=1,a=7 21.以下程序的输出结果为〖1 5 9 13〗。 〖2 6 10 14〗 〖3 7 11 15〗 〖4 8 12 16〗#include void main(){ int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int i,j,t;for(i=0;i<3;i++) for(j=i+1;j<4;j++){ t=a[i][j];a[i][j]=a[j][i];a[j][i]=t; }for(i=0;i<4;i++){ for(j=0;j<4;j++) cout<<a[i][j]<<'\t'; cout<< } }第三章 指针与数组1.若有说明:char *p1,*p2,*p3,*p4,则不能正确赋值的程序语句为〖C〗。 A)p1=& cin >> *p1; B)p2= cin >> *p2; C)cin.get(*p3); D)p4=& cin.get(*p4); 2.对于基类型相同的指针变量,不能进行〖A〗运算 A)+ B)- C)= D)==3.若有以下说明和语句,则〖C〗是对数组元素的错误引用。 int a[]={1,2,3,4,5,6,7,8,9,0},*p=a,i=2; A)*(a+i) B)a[p-a] C)p+i D)*(&a[i])4.若有以下说明和语句,则〖D〗是对数组元素地址的正确表示。 int a[]={1,2,3,4,5,6,7,8,9,0},*p=a,i=2;A)&(a+i) B)a++ C)&p D)&p[i]5.下面的程序中〖A〗有错误(每行前面的数字是行号)。 1 #include
2 void main(void) 3 { float a[3]={0.0};45 for(i=0;i> a[i];6 for(i=1;i<3;i++) a[0]=a[0]+a[i]; 7 cout << a[0] << 8 }A)没 B)第3行 C)第6行 D)第7行6.以下程序找出数组中最大值和此元素的下标,数组元素的值由键盘输入,请从对应的一组选择项中,选择正确的填入。 #include void main(void) { int a[10],*p,*s,i;for(i=0;i>〖1D〗;for(p=a,s=a;〖2A〗*s) s=〖3A〗; cout << "max=" <<〖4C〗<< ',' << "index=" <<〖5C〗<<}〖1〗A)&a[i] B)p+i C)a+i D)a[i] 〖2〗A)p-a B)s-a C)a-p D)a-s 〖3〗A)p B)a[p] C)a[s] D)a-p〖4〗A)a[p-a] B)a[p] C)*s D)a[s] 〖5〗A)p-a B)p C)s-a D)a-s 7.以下程序的输出结果是〖D〗。 #include
void main(void){ int a[]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2;cout << *p << ',' << *(p+3) << }A)0,5 B)1,5 C)0,6 D)1,68.以下程序输出两个整数中大的那个数,两个整数由键盘输入,请从对应的一组选择项中,选择正确的填入。 #include void main(void) { int a,b,*p1,*p2;p1=new 〖1A〗; p2=new 〖1A〗; cin >> 〖2B〗;if(*p2>*p1) *p1=*p2;cout << "max=" << 〖3A〗 << delete p1; delete p2;}〖1〗A)int B)float C)int * D)float * 〖2〗A)p1>>p2 B)*p1>>*p2 C)&p1>>&p2 D)&a>>&b 〖3〗A)*p1 B)*p2 C)p1 D)p2 9.在以下说明中,标识符ptr〖C〗。 int (*ptr)[3]; A)说明不合法B)是一个指针数组名,每个元素是一个指向整数变量的指针 C)是一个指针,它指向一个具有三个整型元素的一维数组 D)是一个指向整型变量的指针10.以下说明与〖C〗中的说明等价。 int *p[4];A)int p[4] B)int *p C)int *(p[4]) D)int (*p)[4]11.若有说明:int a[4][10];则〖B〗是对数组元素a[i][j]的错误引用(此处0<=i<4,0<=j<10)。 A)*(&a[0][0]+10*i+j) B)*(a+i)[j] C)*(*(a+i)+j) D)*(a[i]+j)12.若有说明:int a[4][3],b[3][4],(*ptr)[3];且0<=i<3,则〖A〗是正确的赋值语句。 A)ptr=a B)ptr=b C)ptr=b[i] D)ptr=a[i] 13.设有以下说明语句:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},(*prt)[3]=a,*p=a[0]; 能够正确表示数组元素a[1][2]的表达式是〖D〗。 A)*((*prt+1)[2]) B)*(*(p+5)) C)(*prt+1)+2 D)*(*(a+1)+2)14.以下程序建立一个如下所示的二维数组,并按以下格式输出。请从对应的一组选择项中,选择正确的填入。 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1#include
void main(void){ int a[5][5]={0},*p[5],i,j;for(i=0;i<5;i++) p[i]=〖1A〗; for(i=0;i<5;i++) { *(p[i]+〖2C〗)=1; *(p[i]+5-〖3D〗)=1; }for(i=0;i<5;i++){ for(j=0;j<5;j++) cout << setw(3) << p[i][j]; 〖4A〗;} }〖1〗A)&a[i][0] B)&a[i][1] C)&p[i] D)&a[0][i] 〖2〗A)0 B)1 C)i D)(i+1) 〖3〗A)0 B)1 C)i D)(i+1) 〖4〗A)cout<<'\n' B)cout<<'\0' C)cout<<"\0" D)cout<<'\t'15.以下程序的输出结果是〖D〗。 #include
void main(void){ int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i<4;i++) p[i]=&a[i*3];cout << p[3][2] << }A)输出项不合法,输出结果不定 B)6 C)8 D)12 16.以下程序的输出结果是〖B〗。 #include
void main(void) { int a[20],*p[4],i,k=0;for(i=0;i<20;i++) a[i]=i;for(i=0;i<4;i++) p[i]=&a[i*(i+1)]; for(i=0;i<4;i++) k+=p[i][i];cout << k << }A)数组元素引用不合法,输出结果不定 B)26 C)10 D)1617.若有以下说明和语句,则〖D〗中表示的都是对a数组元素的正确引用,其中0<=i<4,0<=j<3。int a[4][3]={0},(*ptr)[3],i,j; ptr=a; ...A)a[i][j], a[i]+j, *(*(a+i)+j) B)*(ptr+i)[j], ptr[i]+j, *(*(ptr+i)+j) C)*(ptr+i)[j], *(a+i)[j], *(ptr+i) D)ptr[i][j], *(ptr[i]+j), *(a[i]+j)18.若有以下说明和语句,则〖A〗是对a数组元素的错误引用。 int a[12]={0},*p[3],**pp,i; for(i=0;i<3;i++) p[i]=&a[i*4];pp=p;A)a[12] B)p[2][3] C)a[10] D)pp[0][1]19.若有以下说明和语句,则〖B〗中表示的都是a数组元素的地址,其中0<=i<4,0<=j<3。int a[4][3]={0},*p[4],**pa,i,j; for(i=0;i<4;i++) p[i]=a[i]; pa=p;...A)&a[i][j], p[i]+j, pa[i][j] B)*(pa+i)+j, p[i], *(p+i)+j C)&a[j], &p[i], *(*(pa+i)+j) D)**pa, a, p20.请填空。以下程序把一由小到大的有序数列放在a[1]到a[n]中,a[0]用做工作单元,程序把读入的x值插入到a数组中,插入后,数组中的数仍然有序。 #include
#include void main(void){ int a[10]={0,12,17,20,25,28},x,i,n=5; cout <>a[0]=x; i=n;while(a[i]>x) { a[〖1〗]=a[i];〖2〗; } a[〖3〗]=x; n++;for(i=1;i<=〖4〗;i++) cout << setw(4) << a[i]; cout << }〖1〗i+1 〖2〗--i或i--或i=i-1 〖3〗++i 〖4〗n21.请填空。以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并到c数组中。 #include
void main(void){ int a[10]={1,2,5,8,9,10},an=5; int b[10]={1,3,4,8,12,18},bn=5; int i,j,k,c[20],max=9999; a[an+1]=b[bn+1]= i=j=k=0;while((a[i]!=max)||(b[j]!=max))if(a[i]<b[j]) { c[k]=〖1〗; k++; 〖2〗; } else { c[k]=〖3〗; k++; 〖4〗; } for(i=0;i<k;i++) cout << setw(4) << c[i];cout << }〖1〗a[i] 〖2〗i++或++i或i=i+1 〖3〗b[j] 〖4〗j++或++j或j=j+1 22.请写出以下程序运行后的输出结果。 #include
#include #define M 6 #define NUM 21 void main(void){ int a[NUM],*p[M],i,j,for(i=0;i<M;i++) { add=i*(i+1)/2;p[i]=&a[add]; } for(i=0;i<M;i++) { p[i][0]=1; p[i][i]=1; } for(i=2;i<M;i++)for(j=1;j<i;j++) p[i][j]=p[i-1][j-1]+p[i-1][j]; for(i=0;i<M;i++){ for(j=0;j<=i;j++) cout << setw(4) << p[i][j]; cout << } }〖答案〗11 11 2 11 3 3 1 1 4 6 4 1 1 5 10 10 5 123.指出下列程序中的错误,并说明错误的原因: (1)#include
void main(void) { char s[80],*p; p=s[0];cin.getline(s,80); cout<<p<< }(2)#include
void main(void) { float x,y; int *p; x=3.45;p=&x; y=*p;cout<<*p<<','<<y<<}(3)#include
void main(void) { int x,*p; x=10; *p=x;cout<<*p<< }(4)#include
void main(void) { int *p=&a,a; a=10;cout<<*p<< }第四章 字符数组与字符串1.不正确的字符串赋值或赋初值方式是〖B,C,D〗。A)char * str="string";B)char str[7]={'s','t','r','i','n','g'}; C)char str1[10]; str1="string";D)char str1[]="string",str2[]=""; strcpy(str2,str1);注:在VC++中,不允许直接或间接(如通过指针)修改常量的值。 2.若有以下说明,则〖C〗不是对strcpy库函数的正确调用。char *str1="copy",str2[10],*str3="hijklmn",*str4,*str5="abcd";A)strcpy(str2,str1); B)strcpy(str3,str1); C)strcpy(str4,str1); D)strcpy(str5,str1); 3.若有以下说明和语句,则输出结果是〖B〗。char *sp="\t\v\\\0will\n"; cout << strlen(sp);A)14 B)3 C)9 D)字符串中有非法字符,输出值不定 4.若有以下说明和语句,则输出结果是〖C〗。char *sp="\x69\082\n"; cout << strlen(sp);A)3 B)5 C)1 D)字符串中有非法字符,输出值不定 5.若有以下说明和语句,则输出结果是〖C〗。char *sp="\"D:\\ANI.WSP\""; cout <<A)字符串中有非法字符,输出值不定 B)\"D:\\ANI.WSP\" C)"D:\ANI.WSP" D)"D:\\ANI.WSP" 6.设有说明:char *argv[]={"hello","nanjing","jiangsu"},**pargv= 请给出下列语句的输出结果。语句 结果 cout<<*(pargv+1)<< 〖nanjing〗 cout<<char(**pargv+1)<< 〖i〗 cout<<*(*pargv+1)<< 〖e〗 cout<<*(*(pargv+2)+4)<< 〖g〗 7.以下程序的输出结果为〖A〗。 #include char *alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"}; char **p;void main(void) {p=for(i=0;i<4;i++) cout << *(p[i]); cout <<}A)AEIM B)BFJN C)ABCD D)DHLP 8.以下程序的输出结果为〖B〗。 #include char *alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"}; char **p; void main(void) { p=for(i=0;i<4;i++) cout << (*p)[i]; cout << }A)EIMQ B)ABCD C)EFGH D)AEIM9.以下程序从键盘读入一行字符串放在字符数组中,然后输出。请从对应的一组选择项中,选择正确的填入。 #include
void main(void) { char s[81],*for(i=0;i<80;i++) { cin.get(s[i]);if(s[i]=='\n') }s[i]=〖1C〗; sp=〖2A〗; while(*sp) cout << *sp〖3C〗; }〖1〗A)'\n' B)s[i--] C)'\0' D)s[--i] 〖2〗A)s B)s[0] C)'\0' D)'\n' 〖3〗A)+1 B)[i--] C)++ D)[--i]10. 下面的程序完成以下三个操作:(1)输入10个字符串(每串不多于9个字符),依次放在a数组中,指针数组str中的每个元素依次指向每个字符串的开始; (2)输出每个字符串;(3)从这些字符串中选出最小的那个串输出。 请从对应的一组选择项中,选择正确的填入。#include
void main(void){ char a[100],*str[10],* int i,k;sp=〖1C〗; for(i=0;i<10;i++){ cin>> str[i]=k=strlen(sp); sp+=〖2C〗; }for(i=0;i<10;i++) cout<<str[i]<< k=0;for(i=1;i<10;i++)if(strcmp(str[i],str[k]) 〖3B〗0)k=i; cout<<str[k]<< }〖1〗A)'\0' B)str C)a D)&a[1] 〖2〗A)1 B)k C)k+1 D)k+i 〖3〗A)> B)< C)== D)!=11.若有以下的说明语句,则〖A,B,C〗是对字符串中字符的正确引用(多项选择)。其中0<=i<6。 char *strp="string";A)*strp B)*(strp+i) C)strp[i] D)strp12.若有以下的说明语句,则它与〖C〗中的说明是等价的。 char s[3][5]={"aaaa","bbbb","cccc"}; A)char **s1={"aaaa","bbbb","cccc"}; B)char *s2[3]={"aaaa","bbbb","cccc"}; C)char s3[][5]={"aaaa","bbbb","cccc"}; D)char s4[][4]={"aaaa","bbbb","cccc"};13.〖A〗程序能正确地从键盘输入一个字符串(多项选择)。 A)#include
void main(void){ char str[80]; cin.getline(str,80); cout<<str<< } B)#include
void main(void){ char * cin.getline(str,80); cout<<str<< } C)#include
void main(void){ char * for(i=0;i<10;i++) { cin.get(*str);if(*str=='\n') else str++; }*str='\0';cout<<str<< }D)#include
void main(void){ char *str="abcdefghij"; for(i=0;i<10;i++) { cin.get(*(str+i)); if(*(str+i)=='\n') }*(str+i)='\0';cout<<str<< }第五章 函数和存储类别1.在C++语言程序中,〖B〗。A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套 D)函数的定义和函数的调用均可以嵌套2.在C++语言程序中,若对函数类型未加显式说明,则函数的隐含类型为〖C〗。 A)void B)double C)int D)char 3.在C++语言程序中,当调用函数时,〖A〗。 A)实参和形参各占一个独立的存储单元 B)实参和形参可以共用存储单元C)可以由用户指定是否共用存储单元D)由计算机系统自动确定是否共用存储单元 4.以下程序的输出结果为〖B〗。 #include void prt(int *x,int *y,int *z){ cout << ++*x << ',' << ++*y << ',' << *(z++) << }int a=10,c=20,b=40; void main(void){ prt(&a,&b,&c);prt(&a,&b,&c); }A)11,42,31 B)11,41,20 C)11,21,40 D)11,41,21 12,22,41 12,42,20 11,21,41 12,42,225.在下面的程序中,调用gettwo函数分配两个双精度浮点数的存储单元,分别由p1和p2指向。〖B〗是能正确执行以上功能的程序。 A)#include void gettwo(double *q1,double *q2) { q1= q2= } void main(void){ double *p1=NULL,*p2=NULL; gettwo(p1,p2); ... }B)#include void gettwo(double **q1,double **q2) { *q1= *q2= } void main(void){ double *p1=NULL,*p2=NULL; gettwo(&p1,&p2); ...}C)#include void gettwo(double *q1,double *q2) { q1= q2= } void main(void){ double *p1=NULL,*p2=NULL; gettwo(&p1,&p2); ... }D)#include void gettwo(double **q1,double **q2) { q1= q2= } void main(void){ double *p1=NULL,*p2=NULL; gettwo(p1,p2); ... }6.以下程序的运行结果是〖C〗。 #include
int chang(char *c,int fg){ if(*c==' ') return 1;else if(fg&&*c='a') *c+='A'-'a'; return 0; }void main(void) { int flag=1; do{cin.get(ch);flag=chang(&ch,flag); cout << }while(ch!='\n');}程序运行时,从键盘输入以下字符,代表回车换行。 This is a book!A)tHIS IS A BOOK! B)this Is A Book! C)This Is A Book! D)This Is a Book! 7.以下程序的运行结果是〖A〗。 #include
int func(int a,int b) { static int m,i=2; i+=m+1; m=i+a+b; }void main(void) { int k=4,m=1,p; p=func(k,m); cout << p << ','; p=func(k,m);cout << p << }A)8,17 B)8,16 C)8,20 D)8,88.函数strcmp(char *s,char *t)用来比较字符串s和t的大小,当s等于t时返回0;当s不等于t时,返回s和t的第一个不同的ASCⅡ码的差值。〖C,D〗是正确的字符串比较函数(多项选择)。 A)int strcmp(char *s,char *t){ for(;*s++==*t++;) if(*s=='\0') return 0; return *s-*t; }B)int strcmp(char *s,char *t){ for(;*s++==*t++;) if(!*s) return 0; return *s-*t; }C)int strcmp(char *s,char *t){ for(;*s==*t;) { if(!*s) return 0; s++;t++; } return *s-*t;}D)int strcmp(char *s,char *t){ for(;*s==*t;s++,t++) if(!*s) return 0; return *s-*t; }9.以下程序调用getsum函数把指针p1和p2所指存储单元中的数相加,和数放入指针s所指存储单元中。〖C,D〗是能正确执行以上功能的程序(多项选择)。 A)#include void getsum(int *p1,int *p2,int *s) {t=*p1+*p2; s=&t; }void main(void){ int a,b,*p1=&a,*p2=&b,*s; cin>>*p1>>*p2; getsum(p1,p2,s); cout<<*s<< }B)#include void getsum(int *p1,int *p2,int *s) { s=*p1+*p2; }void main(void){ int a,b,*p1=&a,*p2=&b,*s; cin>>*p1>>*p2; getsum(p1,p2,s); cout<<*s<< }C)#include void getsum(int *p1,int *p2,int **s) { *s=**s=*p1+*p2; } void main(void){ int a,b,*p1=&a,*p2=&b,*s; cin>>*p1>>*p2; getsum(p1,p2,&s); cout<<*s<<}D)#include void getsum(int *p1,int *p2,int *s) { *s=*p1+*p2; } void main(void){ int a,b,*p1=&a,*p2=&b,*s; cin>>*p1>>*p2; s= getsum(p1,p2,s); cout<<*s<< }10.在C++语言中,〖A,B,C〗是main函数参数的正确表达形式(多项选择)。A)int main(int argc,char *argv[]); B)int main(int argc,char **argv); C)int main(int c,char *v[]); D)int main(int argc,char argv[]);11.以下程序调用invert函数把a数组元素中的值按逆序重新放置,〖A,C,D〗是能正确执行以上功能的程序(多项选择)。 A)#include
void invert(int a[],int n) { int t,i,j;for(i=0,j=n-1;i<j;i++,--j){ t=*(a+i);*(a+i)=*(a+j);*(a+j)=t; } }void main(void) { int x[]={1,2,3,4,5,6,7}; invert(x,sizeof(x)/sizeof(x[0])); ... }B)#include
void invert(int *a,int n) { int t,i,j;for(i=0,j=n-1;i<j;++i,--j) { t=a[i];a[j]=a[i];a[j]=t; } }void main(void){ int x[]={1,2,3,4,5,6,7};invert(x,sizeof(x)/sizeof(x[0])); ... }12.以下程序把字符串s中的内容按逆序输出,但不改变串中的内容。请在〖〗处填入正确的内容。 #include
void invert(char *a) { if(!〖1〗) invert(a+1); cout << *〖2〗; }〖1〗*a 〖2〗a13.以下程序实现将三个数中的大数输出在前,小数输出在后。请在〖〗处填入正确的内容。#include C)#include
void invert(int *a,int n) { int t,*h=a,*p=a+n-1; while(h<p)t=*h,*h=*p,*p=t,p--,h++; }void main(void) { int x[]={1,2,3,4,5,6,7}; invert(x,sizeof(x)/sizeof(int)); ... }D)#include
void invert(int a[],int n){ int t,*p=&a[n-1];while(a<p) { t=*a;*a++=*p;*p--=t; } }void main(void){ int x[]={1,2,3,4,5,6,7}; invert(x,sizeof(x)/sizeof(int)); ... }void main(void) { char s[10]="Hello!"; invert(s); cout << s << }void swap(int *p1,int *p2){ int *t; 〖1〗;*t=*p1;*p1=*p2;*p2=*t; }void change(int *q1,int *q2,int *q3) { if(*q1>*q2) swap(q1,q2); if(*q1>*q3) swap(q1,q3);if(*q2>*q3) swap(q2,q3);〖1〗t=new int 〖2〗&c,&b,&a}void main(void) { int a=6,b=4,c=2; change(〖2〗);cout << a << ',' << b << ',' << c << }14.以下程序调用func函数,实现函数fs(x,y,z)和fc(x,y,z)的计算,请在〖〗处填入正确的内容。sin(x) sin(y) sin(z)fs(x,y,z)=───────── + ───────── + ───────── sin(x-y)*sin(x-z) sin(y-z)*sin(y-x) sin(z-x)*sin(z-y)cos(x) cos(y) cos(z)fc(x,y,z)=───────── + ───────── + ───────── cos(x-y)*cos(x-z) cos(y-z)*cos(y-x) cos(z-x)*cos(z-y) #include
#include double func(double (*fnp)(double),double a,double b,double c) { return fnp(a)/(fnp(b)*fnp(c)); }void main(void){ double x,y,z,ms, cin>>x>>y>>z;ms=func(sin,〖1〗)+func(sin,〖2〗)+func(sin,〖3〗); mc=func(cos,〖1〗)+func(cos,〖2〗)+func(cos,〖3〗); cout << "ms="<< ms << ',' << "mc=" << mc << }〖1〗x,x-y,x-z 〖2〗y,y-z,y-x 〖3〗z,z-x,z-y 15.若main函数有以下参数说明: void main(int argc,char*argv[]) 且有命令行为:REDP FILE.IN FILE.OUT 其中代表回车换行符,REDP代表含有以上main函数的可执行文件名,则argc的值为〖1〗,argv[1]的值为〖2〗。 〖1〗3 〖2〗FILE.IN16.在C++语言程序中,函数的缺省存储类别是〖extern〗。17.下面的程序,调用findmax函数求出数组中最大元素在数组中的下标。请在〖〗处填入正确的内容。 #include
void findmax(int *s,int t,int *k) {for(p=0,*k=p;ps[*k]) 〖B〗; }A)k=p B)*k=p C)k=p-s D)*k=p-s 18.以下程序的运行结果是〖k=5〗。 #include
long fib(int g) {switch(g) { case 0:return 0; case 1:case 2:return 1; }19.以下程序的运行结果是〖48〗。 #include
long func(int x) {if(x==0||x==1) return 2; p=x*func(x-1); }void main(void) { cout<<func(4)<< } return fib(g-1)+fib(g-2); }void main(void) { k=fib(5);cout<<"k="<<k<< }void main(void){ int a[10],i,k;for(i=0;i>a[i]; findmax(a,10,&k);cout<<k<<','<<a[k]<< }20.以下程序的运行结果是〖10,4,8,10,2,5〗。 #include
void main(void) { int a=1,b=2,c=3; a++;c+=b; { int b=4,c; c=2*b;21.以下程序的运行结果是〖0,2,4,0,4,8,〗。 #include
void fun(){ static int a[3]={0,1,2};for(i=0;i<3;i++) a[i]+=a[i];for(i=0;i<3;i++) cout<<a[i]<<','; }void main(void) { fun();fun(); } a+=c;cout<<a<<','<<b<<','<<c<<','; }cout<<a<<','<<b<<','<<c<< }22.trap函数是一个用梯形法求定积分的通用函数。梯形法求定积分的公式为:n-1 │a-b │ s=((f(a)+f(b))/2 + ∑ f(a+i*h))*h, h=──── i=1 n 其中,n为积分区间的分隔数。b以下程序调用trap函数求∫(x*x+3*x+2)dx的定积分。a=0,b=4.0。 a #include
#include double trap(double (*fun)(double),double a,double b) { double t,h; int i,n=1000; t=(fun(a)+fun(b))/2.0; h=fabs(a-b)/(double)n;for(i=1;i<=n-1;i++) t+=〖1〗; t*=h; }double mypoly(double x) { return x*x+3.0*x+2.0; }void main(void){ cout<<trap(〖2〗,0.0,4.0)<< } 〖1〗fun(a+i*h) 〖2〗mypoly23.填空题。用以下程序求出a数组中所有素数的和,函数isprime用来判断自变量是否是素数。素数是只能被1和本身整除且大于1的自然数。 #include
int isprime(int x) {for(i=2;i<=x/2;i++) if(x%i==0) return 0; 〖1〗; }void main(void){ int i,a[10],*p=a,sum=0; 〖1〗return 1 〖2〗i 24.下列程序的运行结果为〖〗。 (1)#include int cube(int x) { x=x*x*x; }cout<<"Enter 10 num:\n"; for(i=0;i>a[i]; for(i=0;i<10;i++)if(isprime(*(p+〖2〗))==1) { cout<<*(a+i)<<'\t'; sum+=*(a+i); }cout<<"\nThe sum="<<sum<< }void main(void) { int x=5;cube(x);cout<<x<< }(2)#include int cube() { x=x*x*x; } void main(void) { int x=5;cube(); cout<<x<<}(4)#include void cube(int *x) { *x=(*x)*(*x)*(*x); } void main(void) { int x=5; cube(&x);cout<<x<< }(5)#include void cube(int &x) { x=x*x*x; } void main(void) { int x=5; cube(x); cout<<x<< }}(3)#include int cube(int x) { x=x*x*x; } void main(void) { int x=5; x=cube(x);cout<<x<<答案:(1)5 (2)5 (3)125 (4)125 (5)12525.以下叙述中,不正确的为〖B〗。A)在定义内联函数时,只需在函数的类型前增加修饰词inlineB)对于程序中用inline修饰的函数,编译器肯定将其按内联函数处理 C)内联函数的实质是用存储空间换取运行时间D)在内联函数定义和使用时,形参与实参的关系与一般的函数相同 E)内联函数中不可含有循环、switch分支和复杂嵌套的if语句 26.以下程序执行的结果为〖B〗。 #include
int max(int x,int y=5) { return x>y?x:y; }void main(void){ cout<<max(4)<<','<<max(6,7)<< } A)4,7 B)5,7 C)6,7 D)max(4)实参太少27.以下叙述中,正确的是〖A〗。函数的重载是指完成不同功能的函数可以具有相同的函数名,但 A)定义的重载函数必须具有不同的参数个数或不同的参数类型 B)定义的重载函数必须在返回值的类型上有所不同 C)定义的重载函数不允许用inline修饰为内联的 D)定义的重载函数不允许带有缺省参数值E)定义的重载函数不允许递归 28.对于下面几个函数:void f(int x) {…} //1 int f(int y) {…} //2 int f(int i,int j) {…} //3 float k(int x) {…} //4 〖C〗是重载函数。A)4个全部 B)1和4 C)2和3 D)3和429.下面的程序是统计学生中A类学生与B类学生各多少。A类学生的标准是平均分在80分以上,其余都是B类学生。请填空。 (1)#include int level(〖1〗,int size) { int i,sum=0;for(i=0;i<i++) sum+=grade[i]; sum/=〖2〗;if(sum>=80) return 1; else return 0; }void main(){ int a[][4]={{60,80,90,75},{75,85,65,77},{80,88,90,98}, {89,100,78,81},{62,68,69,75},{86,85,77,91}}; int i,A=0,B=0;for(i=0;i<sizeof(a)/〖3〗;i++)if(level(a[i],4)) 〖4〗; else 〖5〗; cout<<"A类学生人数为"<<A<<cout<<"B类学生人数为"<<B<< }〖1〗int grade[]或int *grade 〖2〗size 〖3〗sizeof(a[0]) 〖4〗A++ 〖5〗B++ (2)#includeint&level(〖1〗,int size,〖2〗,〖3〗) { int i,sum=0;for(i=0;i<i++) sum+=grade[i]; sum/=〖4〗;if(sum>=80) return tA; else return tB; }void main(){ int a[][4]={{60,80,90,75},{75,85,65,77},{80,88,90,98}, {89,100,78,81},{62,68,69,75},{86,85,77,91}}; int i,A=0,B=0;for(i=0;i<sizeof(a)/〖5〗;i++) level(a[i],4,A,B)++;cout<<"A类学生人数为"<<A<< cout<<"B类学生人数为"<<B<<}〖1〗int grade[]或int *grade〖2〗int &tA 〖3〗int &tB 〖4〗size 〖5〗sizeof(a[0]) 30.以下程序的输出结果是〖A〗。 #include void main() { int i=18,j=50; ::i=::i+4;j=::i+i;cout<<::i<<','<<i<<','<<j<<}A)4,18,22 B)18,18,22 C)4,18,72 D)程序有错,无法运行 31.对于以下程序的运行结果是〖C〗。 #include void f(int a) { cout<<a<<} void f(float a) { cout<<a<<} void main() {f(2.5); //L}A)2 B)2.5 C)语法错,行A存在二义性 D)程序运行时出错32. 下面函数search()的功能是在整型数组a[n]中查找x。若在数组a中有一元素a[k]=x,则返回k,否则返回-1。请填空。 int search(int a[],int h,int n,int x) { if(h>n) return -1;else if(〖1〗) else search(a,〖2〗,n,x); }void main(void) { int a[]={1,2,3,8,10},x,r; cin>>x;r=search(a,0,sizeof(a)/sizeof(a[0]),x); if(r==-1) cout<<"没有找到!";else cout<<"找到一个,其下标为"<<r<<}〖1〗a[h]==x 〖2〗h+1第六章 结构体、共用体、枚举类型1.若有以下的说明和语句,则表达式〖C〗中的值为101。 struct wc { int *b; }*p;int x0[]={11,12},x1[]={31,32}; static wc x[2]={100,x0,300,x1}; p=x;A)*p->b B)p->a C)++p->a D)(++p)->b2.若有以下的说明和语句,则表达式〖D〗中的值为31。 struct wc { int *b; }*p;int x0[]={11,12},x1[]={31,32}; static wc x[2]={100,x0,300,x1}; p=x;A)*p->b B)(++p)->a C)*(p++)->b D)*(++p)->b 3.typedef long int BIGGY;的作用是〖D〗。 A)建立了一种新的数据类型 B)定义了一个整型变量 C)定义了一个长整型变量D)定义了一个新的数据类型标识符4.若有以下的说明,则对初值中整数2的引用方式为〖a[0][1].i〗。(填空) static struct {}a[2][3]={{{'a',1,3.45},{'b',2,7.98},{'c',3,1.93}}}; 5.若有以下语句,则表达式〖D〗的值是6。 struct st{struct st *};struct st a[3]={5,&a[1],7,&a[2],9,'\0'},*p;p=&a[0];A)p++->n B)p->n++ C)(*p).n++ D)++p->n 6.以下程序的输出结果为〖0,4,5,-2〗。(填空) #include void main(void){ enum team{qiaut,cubs=4,pick,dodger=qiaut-2};cout<<qiaut<<','<<cubs<<','<<pick<<','<<dodger<< }7.多项选择题。若有以下的说明,已知int类型占四个字节,则〖C,D〗的叙述是正确的。 struct st { int b[2];}a;A)结构变量a和结构成员a同名,不合法B)程序运行时将为结构st分配12个字节内存单元 C)程序运行时不为结构st分配内存单元D)程序运行时将为结构变量a分配12个字节内存单元8.对于如下的结构体定义,若对变量person出生年份进行赋值,〖C〗是正确的赋值语句。 struct date{ int year,month,}; struct worker { char name[20]; }A)year=2001 B)birthday.year=2001 C)person.birthday.year=2001 D)person.year=20019.一些定义变量的程序片断及其功能描述如下,〖C〗含有错误。 A)定义整型变量x,a和b C)定义字符类型的指针变量x和y typedef int INT; INTint a,b;B)定义整型变量a和b #define INT int INT a,b;typedef char * CP; CP *x,*y;D)定义结构体变量a和b typedef struct { int x,y; char cx[10];}10.多项选择题。若有以下的说明: struct person { char name[20];st a,b;}a={"li ning",20,'m'},*p=&a;则对字符串li ning的正确引用方式是〖A,C,D〗。A)(*p).name B)p.name C)a.name D)p->name11.多项选择题。若有以下的说明,则表达式〖A,B,C〗使指针p->b的值增1。 struct wc {int *b; }*p;int x0[]={11,16},x1[]={31,36}; static wc x[2]={100,x0,300,x1}; p=x;A)*++p->b B)*++((++p)->b) C)*p->b++ D)(p++)->b12.多项选择题。若有以下的说明,则表达式〖B,D〗使指针p的值增1。 struct wc { int *b; }*p;int x0[]={11,16},x1[]={31,36};static wc x[]={100,x0,300,x1}; p=x;A)++p->a B)(++p)->a C)p->b++ D)(p++)->a 13.请填空。p id data ┌───┐ ┌──┬──┐ │ ├─→│ 10 │ A │ └───┘ └──┴──┘(1)写出建立如图所示的存储结构所需的类型定义和说明语句。 struct aa { 〖1〗 〖2〗}〖3〗;(2)写出建立如图所示的存储结构和赋值所需的语句。 p=new〖4〗;〖5〗=10;〖6〗='A';(3)写出输出语句,输出如图所示的存储结构中,动态存储单元中各个域中的值。 cout<<〖7〗<<','<<〖8〗<<答案〖1〗int〖2〗char 〖3〗*p 〖4〗aa 〖5〗p->id或(*p).id 〖6〗p->data或(*p).data〖7〗p->id 或 (*p).id ,或 p->data或(*p).data 〖8〗p->data或(*p).data, 或p->id或(*p).id 14.请填空。head data next ┌───┐ ┌──┬──┐ │ ├─→│ 10 │NULL│ └───┘ └──┴──┘(1)写出建立如图所示的存储结构所需的类型定义和说明语句。 struct link { 〖1〗 〖2〗 }〖3〗;(2)写出建立如图所示的存储结构和赋值所需的语句。 head=〖4〗;〖5〗=10;〖6〗=NULL;(3)写出输出语句,输出如图所示的存储结构中,动态存储单元中data域中的值。 cout<<〖7〗<<答案〖1〗int 〖2〗link*或struct link* 〖3〗*head 〖4〗new link或new struct link〖5〗head->data或(*head).data 〖6〗head->next或(*head).next 〖7〗head->data或(*head).data15.若已建立以下链表结构,指针p、s分别指向如图所示的结点,以下选择项〖A,B,C〗中的语句组,用以将s所指结点插入到链表的表尾。(多项选择) data next┌──┬──┐ ┌──┬──┐ head→……│ E │ ├→│ F │NULL│ └──┴──┘ └──┴──┘ ↑p┌──┬──┐ s→│ G │ │ └──┴──┘ A)s->next=NULL;p=p->p->next=s;B)p=p->s->next=p->p->next=s;C)p=(*p).(*s).next=(*p).(*p).next=s; D)p=p->s->next=p;p->next=s;16.若已建立以下链表结构,指针p、s分别指向如图所示的结点,以下选择项〖B,D〗中的语句组,用以将s所指结点插入到链表中p所指结点之后。(多项选择) data next┌──┬──┐ ┌──┬──┐ head→……│ E │ ├→│ F │ ├→… └──┴──┘ └──┴──┘ ↑p┌──┬──┐ s→│ G │ │ └──┴──┘ A)p->next=s;s->next=p;B)(*s).next=(*p).(*p).next=s; C)p=p->s->next=p;p->next=s; D)s->next=p->p->next=s;17.若已建立以下链表结构,指针p、s分别指向如图所示的结点,以下选择项〖C〗中的语句组,用以将s所指结点从链表中删除并释放该结点。(多项选择) data next┌──┬──┐ ┌──┬──┐ ┌──┬──┐head→……│ E │ ├→│ F │ ├→│ G │ ├→… └──┴──┘ └──┴──┘ └──┴──┘ ↑ ↑ p sA)p->next=s-> B)s=s->p->next=s;C)p->next=s->D)s=s->p->next=s;p=p->18.以下程序调用create_list函数建立一个如图所示的带头结点的单向链表。新产生的结点总是插在链表的末尾。请从提供的选择项中选择所有正确答案。(a) head· 1/2 ?áu???u>> 1/2 áu?? 1/2 ?áu?·??,??(b) head?±?í (*p).next=〖4A,B,C〗; return 〖5C〗; }void print_list(list *h){ list *p;cout<while(p!=NULL){ cout<"<<setw(2)< p=p-> }cout<< }void main(void) { list * head=create_list(); print_list(head); }#include
struct list { list * };list *create_list() { list *h,*p,*q; h= p=q=h; cin.get(ch); while(ch!='#') { p= 〖1B,D〗= 〖2A,C〗; 〖3B,C,D〗; cin.get(ch);}〖1〗A)q->data B)p->data C)(*q)->data D)(*p).data 〖2〗A)q->next=p B)p->next=q C)(*q).next=p D)(*p).next=q 〖3〗A)p=q B)q=q->next C)q=p D)q=(*q).next 〖4〗A)NULL B)0 C)'\0' D)null 〖5〗A)p B)q C)h D)NULL19.以下函数从一个带有头结点的链表中删去data域值为x的结点。请从对应的一组选择项中选择正确的填入。若〖〗前标有☆号,则表示该组可有多项选择,全部选对才能得分。#include
struct list { list * };list *find(list *h,int x) { list *p,*q;p=(*h). q=h;while(〖1A,B,C,D〗&&(*p).data!=x) { q=p; p=〖2C,D〗; }if(〖3A,B,C,D〗) return NULL; return 〖4B〗; }int delete_node(list *h,int x) { list *q,*p;if(!(*h).next){ cout<<"List is null!\n"; return 0; }if(〖5A,C,D〗){ p=q->q->next=p-> return 1;}return 〖6B〗; }q=find(h,x);☆〖1〗A)p!=0 B)p!=NULL C)p!='\0' D)p☆〖2〗A)p^.next B)p.next C)p->next D)(*p).next ☆〖3〗A)p==NULL B)p==0 C)p=='\0' D)!p 〖4〗A)p B)q C)0 D)1 ☆〖5〗A)q B)!q C)q!=NULL D)q!='\0' 〖6〗A)'0' B)0 C)'1' D)120.下面的程序将规定的明码转换为暗码,其它字符不变。码表为: 明码 'a','b','z','d' 暗码 'd','z','a','b'例如:明码为abort,则暗码为dzort。 #include
void encode(char*s,char*t) { typedef struct{}ENCODE_TAB;static ENCODE_TAB tab[]= {'a','d','b','z','z','a','d','b','\0'}; ENCODE_TAB *p;while(〖1〗)if(ch!=p->real) *t++= else 〖4〗; }〖5〗; }void main(void) { char s[80],t[80]; cout<<"Enter a string:"; cin.getline(s,80); encode(s,t);cout<<"Encode:"<<t<<{ for(〖2〗;ch!=p->real&&〖3〗;p++); }答案〖1〗ch=*s++ 〖2〗p=tab 〖3〗p->real!='\0'或(*p).real!='\0' 〖4〗*t++=p->code或*t++=(*p).code 〖5〗*t='\0'或*t++='\0'第七章 编译预处理1.以下程序中,第一个输出值是〖1C〗,第二个输出值是〖2B〗。 #include
#define N M+1 #define M 3#define NN N*N/2void main(void) cout<<5*NN<< { cout<<NN<< }〖1〗A)3 B)4 C)6 D)8 〖2〗A)17 B)18 C)30 D)402.假设对于同一优先级的运算符,按从左到右的顺序进行运算,以下程序的输出结果为〖9〗。 #include
#define SQR(x) x*x void main(void) { int a,k=3;3.以下程序的输出结果为〖10〗。 #include
#include #define POWER(x,y) pow(x,y)*y #define ONE 1#define SELEVE_ADD(x) ++x void main(void) { int x=2;cout<<POWER(SELEVE_ADD(x),ONE+1)<< }4.以下程序的输出结果为〖B〗。 #include #define FUDGE(y) 2.84+y #define PR(a) cout<<(int)(a);#define PRINT1(a) PR(a);cout<<'\n'; A)11 B)12 C)13 D)15 5.以下程序的输出结果为〖C〗。 #include
#define PT 3.5 #define S(x) PT*x*x void main(void)A)14.0 B)31.5 C)7.5 D)10.5 6.以下程序的输出结果为〖A〗。 #include #define MAX(x,y) (x)>(y)?(x):(y) void main(void){ int a=1,b=2,c=3,d=2,t;A)500 B)5 C)3 D)300a=++SQR(k+1); cout<<a<< }void main(void){ int x=2;PRINT1(FUDGE(5)*x); }{ int a=1,b=2; cout.precision(2); cout<<S(a+b)<< }t=MAX(a+b,c+d)*100; cout<<t<< }7.在宏定义#define PI 3.1415926中,用宏名PI代替一个〖D〗。A)单精度数 B)双精度数 C)常量 D)字符串 8.下面是对宏定义的描述,不正确的是〖C〗。A)宏不存在类型问题,宏名无类型,它的参数也无类型 B)宏替换不占用运行时间C)宏替换时先求出实参表达式的值,然后代入形参运算求值。 D)其实,宏替换只不过是字符替代而已9.以下程序(程序左边的数字为附加的行号)〖B〗。 1 #include 2 #include
3 void main(void) 4 { char s[]="string"; 5 cout<<s;6 strcpy(s,"hello"); 7 cout<<s<<}A)没有错 B)第1行有错 C)第6行有错 D)第7行有错10.在"文件包含"预处理命令的使用形式中,当#include后面的文件名用""(双引号)括起来时,寻找被包含文件的方式为〖B〗。 A)直接按系统设定的标准方式搜索目录B)先在源程序所在目录搜索,再按系统设定的标准方式搜索 C)仅仅搜索源程序所在目录 D)仅仅搜索当前目录11.以下叙述中不正确的是〖C〗。 A)预处理命令行都必须以#号开始B)在程序中凡是以#号开始的程序行都是预处理命令行 C)程序在执行过程中对预处理命令行进行处理 D)以下是正确的宏定义 #define IBM_PC12.以下叙述正确的是〖C〗。A)在程序的一行上可以出现多个预处理命令 B)预处理命令是C++的合法语句 C)被包含的文件不一定以.h作为后缀 D)在以下定义中C R是称为"宏名"的标识符 #define C R 37.692113.以下程序的输出结果是〖B〗。 #include
#define LETTER 0void main(void){ char str[20]="C Language",c; int i=0;while((c=str[i])!='\0') { i++; #if LETTERif(c>='a'&&c<='z') c=c-32; #elseif(c>='A'&&c<='Z') c=c+32; #endif cout<<c; } }A)C Language B)c language C)C LANGUAGE D)c LANGUAGE 14.以下程序的输出结果是〖x=9,y=5〗。 #include#define swap(a,b) { t=a;a=b;b=t; } void main(void) { int x=5,y=9;15.以下程序的输出结果为〖B〗。 #include
#define SQR(X) (X)*(X) void main(){ int a=10,k=2,m=1;A)10 B)1 C)9 D)0 16.预处理命令以〖B〗开头。A)/* B)# C)? D)//a/=SQR(k+m)/SQR(k+m); cout<<a<< } swap(x,y);cout<<"x="<<x<<','<<"y="<<y<< }本文由(www.wenku1.com)首发,转载请保留网址和出处!
免费下载文档:

我要回帖

更多关于 请大神 的文章

 

随机推荐