VC++解析与训练参考答案第06章.docx
- 文档编号:7638079
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:18
- 大小:19.50KB
VC++解析与训练参考答案第06章.docx
《VC++解析与训练参考答案第06章.docx》由会员分享,可在线阅读,更多相关《VC++解析与训练参考答案第06章.docx(18页珍藏版)》请在冰豆网上搜索。
VC++解析与训练参考答案第06章
第六章基础知识练习答案
一、选择题
1D
2D
3C
4D
5C
6A
7D
8C
9D
10B
11C
12A
13C
14A
15D
16D
二、填空题
1、00
2、0出错
3、连续数组名
4、行下标2
5、字符数组cin.getline(str,80);
6、29
7、-1
8、0
9、63
10、1019
11、第一个修改
12、2357111317192329
13、2210
14、0246
15、Fortranl
16、Howdoesshe
17、16
18、#&%
19、ASZ
20、
14
25
36
21、51234
22、1346
23、
1000
0100
0010
0001
24、57
25、
(1) (2)b[k]! =0(3)i%m==0(4)n==0 26、 (1)a+4 (2)b[0] 27、 (1)a[i] (2)continue 28、 (1)i==j (2)j=2(3)j>=0(4)i+j 29、 (1)k (2)-1(3)str[i]=str[j](4)s 30、 (1)a (2)a(3)sum/n(4)x[i] 31、 (1)n*n (2)m[i]=a%10(3)t*=10(4)k==n*n 32、 (1)str[i] (2)j=i(3)k+1 33、 (1)if((j%2)! =0)continue (2)a[i]>a[j] 34、 (1)n (2)! (a[j]==a[i-j-1])(3)b 35、 (1)a[i] (2)5(3)a[i]=a[j],a[j]=m,m=a[i] 三、补充实验题解答 1、编程实现两个34阶矩阵相加。 #include voidinput(inta[3][4]) { for(inti=0;i<3;i++) for(intj=0;j<4;j++) cin>>a[i][j]; } voidfun(inta[3][4],intb[3][4],intc[3][4]) { for(inti=0;i<3;i++) for(intj=0;j<4;j++) c[i][j]=a[i][j]+b[i][j]; } voidoutput(inta[3][4]) { for(inti=0;i<3;i++){ for(intj=0;j<4;j++) cout< cout< } } voidmain() { inta[3][4],b[3][4],c[3][4]; input(a); input(b); fun(a,b,c); output(c); } 2、程序将两个已按升序排列的数组合并成一个升序数组。 两个数组中重复的数只保存一次。 #include voidfun(intx[],inty[]) { inti,j,l; for(i=j=0;i<6;i++){ for(;x[i]>y[j];j++); for(l=4+j;l-j>=0;l--)y[l+1]=y[l]; y[j]=x[i]; } for(i=0;y[i];i++){ if(y[i]==y[i+1]) for(j=i;y[j];j++)y[j]=y[j+1]; } } voidmain() { inta[10]={3,6,8,11,13,20}; intb[20]={2,4,6,8,20}; fun(a,b);//b的最后一个元素大于等于a的最后一个元素 for(intk=0;b[k]! =0;k++) cout< cout< } 3、设计一个函数voidInstr(chara[],charb[],intn),将字符串b插入到字符串a的第n个字符处,字符串a的第n个字符及右边的字符向右移动。 假定a中的字符串长度大于n。 #include #include voidInstr(chara[],charb[],intn) { chart[100]; strcpy(t,a+n-1);//a+n-1的含义是从a的第n个字符开始拷贝 a[n-1]='\0'; strcat(a,b); strcat(a,t); } voidmain() { chars1[100]="1234567890"; chars2[100]="abcdefghijklmn"; intn; cin>>n; Instr(s1,s2,n); cout< } voidInstr(chara[],charb[],intn)也可以写成: voidInstr1(chara[],charb[],intn) { intk=n; chart[100]; for(inti=0;b[i]! ='\0';i++,k++)t[i]=a[k-1]; t[i]='\0';a[n-1]='\0'; strcat(a,b); strcat(a,t); } 4、编程实现对输入的两个字符串str1和str2,判断str2是否为str1的子串。 若tr2是为str1的子串,显示子串在父串中的起始位置。 要求用函数实现判断。 #include intfun(charstr1[],charstr2[]) { inti,j,k; for(i=0;str1[i];i++) for(j=i,k=0;str2[k]==str1[j];k++,j++) if(str2[k+1]=='\0')returni+1; return0; } voidmain() { intm=0; chars1[100],s2[100]; cin.getline(s1,100); cin.getline(s2,100); if(fun(s1,s2))cout< "< elsecout< "< } 5、编写程序,实现把字符数组b插入到字符数组a中最大字符后边。 #include #include voidmain() { chara[40],b[]="abc",max; inti,j=0; cout<<"inputastring: \n"; cin.getline(a,39); cout< max=a[0]; for(i=0;a[i]! ='\0';i++) if(a[i]>max){ max=a[i];j=i;} cout<<"a[j]="< for(i=strlen(a)+3;i>j;i--) a[i]=a[i-3]; a[i+1]='a';a[i+2]='b';a[i+3]='c'; cout< } 6、编写一个函数,对于一个任意长度、任意数据类型的数组中的各元素倒序存放。 (用函数重载,实现整型数组、实型数组和字符数组的元素倒序) #include voidreverse(inta[],intn) { intt,i,j,m=(n-1)/2; for(i=0;i<=m;i++){ j=n-1-i; t=a[i];a[i]=a[j];a[j]=t; } } voidreverse(floata[],floatn) { floatt,m=(n-1)/2; for(inti=0;i<=m;i++){ intj=n-1-i; t=a[i];a[i]=a[j];a[j]=t; } } voidreverse(chara[],intn) { chart; intm=(n-1)/2; for(inti=0;i<=m;i++){ intj=n-2-i; t=a[i];a[i]=a[j];a[j]=t; } } voidmain() { intx[]={34,23,45,-56,12,0,67,-67}; floaty[]={45.78,23.45,78.9,-23.6,89.0,12.6,-10.56}; charz[]="youarestudents."; cout<<"输出整型数组: \n"; for(inti=0;i cout< cout< reverse(x,sizeof(x)/sizeof(int)); cout<<"输出逆序整型数组: \n"; for(i=0;i cout< cout< cout<<"输出实型数组: \n"; for(i=0;i cout< cout< reverse(y,sizeof(y)/sizeof(float)); cout<<"输出逆序实型数组: \n"; for(i=0;i cout< cout< cout<<"输出字符数组: \n"; for(i=0;z[i];i++) cout< cout< reverse(z,sizeof(z)/sizeof(char)); cout<<"输出逆序字符数组: \n"; for(i=0;z[i];i++) cout< cout< } 7、用一个二维数组存储下面的数据表,要求求出每位同学的总成绩和平均成绩、每门课的总成绩和平均成绩。 姓名英语计算机文化基础高等数学 张清879090 李明899889 黄英838978 刘欣939890 #include #include #include #include voidmain() { intsum=0,sun0=0,sun1=0,sun2=0; floatarv,arg0,arg1,arg2; chara[4][10]={"张清","李明","彭洗","刘欣"}; intb[4][3]={{87,90,90},{89,98,89},{83,89,78},{93,98,90}}; cout<<"姓名"<<'\t'<<"英语"<<'\t'<<"计算机文化基础"<<'\t'<<"高等数学"<<'\t'<<"sum"< for(inti=0;i<4;i++) { cout< sum=0; for(intj=0;j<3;j++){ cout< sum+=b[i][j];} arv=sum/3.0; cout< sun0+=b[i][0]; sun1+=b[i][1]; sun2+=b[i][2]; cout<<'\n'; } arg0=sun0/4.0; arg1=sun1/4.0; arg2=sun2/4.0; cout<<'\t'< cout<<'\t'< } 9、编写一程序,将一个二维数组顺时针旋转900。 112233旋转后变为774411 445566885522 778899996633 #include constintSIZE=3; typedefintMatrix[SIZE][SIZE]; voidprint(Matrix); voidrotate(Matrix); voidmain() { Matrixm={11,22,33,44,55,66,77,88,99}; print(m); rotate(m); print(m); } voidprint(Matrixa) { for(inti=0;i for(intj=0;j cout< cout<<'\n'; } cout<<'\n'; } voidrotate(Matrixb) { Matrixtemp; for(inti=0;i for(intj=0;j temp[i][j]=b[SIZE-1-j][i]; //旋转180度b[SIZE-1-i][SIZE-1-j] for(i=0;i for(intj=0;j b[i][j]=temp[i][j]; } 10.数学家把相差为2的质数(即素数)称为“孪生质数”,编程求出1000以内的孪生质数及孪生质数的对数。 孪生质数对数如(3,5)、(11,13)、(827,829)等。 #include #include #include intisprime(intx) { intk,i; k=(int)sqrt(x); for(i=2;i<=k;i++) if(x%i==0) return(0); return (1); } voidmain() { inta[500],count,k=0; intb[50][2]; for(inti=3;i<1000;i+=2) if(isprime(i))a[k++]=i;/* for(i=0;i cout< count=0; for(i=0;i { if(a[i+1]-a[i]==2) { b[count][0]=a[i]; b[count++][1]=a[i+1]; } } for(i=0;i { if(i%5==0)cout< cout<<'('< } cout< } 13.插入排序 #include voidisort(int[],int); voidmain() { inta[]={73,6,37,4,32,12,9,55,26,2}; intlen=sizeof(a)/sizeof(int); for(inti=0;i cout< cout< isort(a,len); } voidisort(intd[],intn) { intinserter,index; for(inti=1;i { inserter=d[i]; index=i-1; while(index>=0&&inserter { d[index+1]=d[index];//后挪一个位置 index--; } d[index+1]=inserter;//插入 for(intj=0;j { cout< if(j==i)//已排序与末排序的分界线 cout<<'|'; } cout< } } 14.折半查找,插入排序 #include voidinsert(int*p,intsize,inta) { intlow=0,high=size-1,mid,posi; while(low { mid=(low+high)/2; if(a==*(p+mid)) { posi=mid+1;break;} if(a<*(p+mid))high=mid-1; elselow=mid+1; } if(a<*(p+low))posi=low; elseposi=low+1; for(inti=size;i>posi;i--) *(p+i)=*(p+i-1); *(p+posi)=a; } voidmain() { inta[10]={1,3,5,7,9,11,13,15,17},t; cout<<"Plaseinputanumber: "; cin>>t; insert(a,9,t); for(inti=0;i<10;i++)cout< cout<<'\n'; } 四、课后习题 6-3、 #include voidinput(inta[10]) { for(inti=0;i<10;i++) cin>>a[i]; } voidsort(inta[10]) { inti,j,k; for(i=0;i<9;i++) for(j=i+1;j<10;j++) if(a[i]>a[j]){ k=a[i];a[i]=a[j];a[j]=k; } } voidprint(inta[10]) { for(inti=0;i<10;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 解析 训练 参考答案 06