visual_c程序设计解析与实训课后答案.doc_第1页
visual_c程序设计解析与实训课后答案.doc_第2页
visual_c程序设计解析与实训课后答案.doc_第3页
visual_c程序设计解析与实训课后答案.doc_第4页
visual_c程序设计解析与实训课后答案.doc_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

教材练习题参考答案第一章1、#include void main()cout*n;cout 江苏科技大学欢迎您! n;cout*n;2、(1)#include void main()int a=4,b=5,c=6,z;z=a+bc&b=c|+b+a ;cout 表达式的值为: zendl;cout a=a b=b c=cendl;运行结果:表达式的值为: 1 a= 5 b= 6 c=6(2)#include void main()int a=4,b=5,c=6,z;z= c-=a+=b*=10-a ;cout 表达式的值为: zendl;cout a=a b=b c=cendl;运行结果:表达式的值为: -28 a= 34 b= 30 c=-28(3)#include void main()int a=4,b=5,c=6,z;z= a=b+ + -c + b = c ;cout 表达式的值为: zendl;cout a=a b=b c=cendl;运行结果:表达式的值为: 1 a= 1 b= 6 c=5(4)#include void main()int a=4,b=5,c=6,z;z=( b=a+b, a=b-a, b=b-a , a+b+c ) ;cout 表达式的值为: zendl;cout a=a b=b c=cendl;运行结果:表达式的值为: 15 a= 5 b= 4 c=63、#include void main()int a;cout 输入一个数: a;couta 的十位数是: a/10endl;couta 的个位数是: a%10endl;4、#include void main()int a,b,c,v,aver;cout 输入三个数: abc;v=a*a+b*b+c*c;aver=(a+b+c)/3;cout 三个数的平方和是: vendl;cout 三个数的平均值是: averendl;第二章1、#include void main()int a,b,c,t;cout 输入三个数: abc;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;coutatbtcendl;2、#include void main()float x,sum=0.0;int i=1;while(ix;sum=sum+x;i=i+1;cout平均值是: sum/10endl;3、#include void main()double y=0.0,t=1.0;int n;cinn;for(int i=1;i=n;i+) t=t*i; y=y+t;cout n= n y= yendl;4、#include void main() int count=0;for(int n=200;n1000;n+) for(int i=2;in-1) coutit; count+; coutncount=countendl;5、#include void main() int a,n,sum=0,c=0;cout 输入一个数: a; n=a; do sum+=n%10; n/=10; c+; while(n); couta的所有数字之和为:sumendl; couta 是 c 位数 endl;6、#include void main() int a,b,i; for(i=1;i=999;i+) a=i%10; b=i%100; if(i=a*a | i=b*b) coutiendl; 7、#include #include void main() double a,b,n; for(n=10000;n=99999;n+) a=n*10+6; b=6*100000+n; if(fabs(b-4*a)1e-5) coutaendl;break;第三章/1. 一维数组的输入和输出#includevoid main()int a10,k=1;for(int i=0;i10;i+)cout请输入第k+个元素aiai;cout数组a为:n;for(i=0,k=0;i10;i+)k+;coutait;if(k%5=0)coutn;coutn;/2. 通过指针输出一维数组中值为奇数元素#includevoid main()int a10=3,4,5,8,9,11,14,16,19,21,*p=a,k=0;cout数组a中的奇数有:n;for(int i=0;i10;i+)if(pi%2)k+;cout*(p+i)t;if(k%5=0)coutn;coutn;/3. 产生一个随机的二维数组b45,并按矩阵的方式输出#include#includevoid main()int b45;cout产生的数组为:n;for(int i=0;i4;i+)for(int j=0;j5;j+)bij=rand();coutbijt;coutn;coutendl;/4. 二维数组的平方赋值#includevoid main()int a34=3,1,5,2,4,1,7,5,3,6,9,8,b34;cout数组a为:n;for(int i=0;i3;i+)for(int j=0;j4;j+)coutaijt;bij=aij*aij;coutendl;coutendl;cout数组b为:n;for(i=0;i3;i+)for(int j=0;j4;j+)coutbijt;coutendl;coutendl;/5. 小写字母改写为大写字母#includevoid main()char str100;cout=a&stri=z)stri-=a-A;cout转换后的字符串为:n;coutstrn;/6. 通过指针将字符串逆序#include#includevoid main()char str=abc321,*s1=str,*s2,ch;cout原字符串为:ns1endl;s2=str;/Awhile(*s2)s2+;s2-;/Bwhile(s1s2)ch=*s1;*s1=*s2;*s2=ch;s1+;s2-;cout逆序后的字符串为:nstrendl;/*其中A到B行可改为:s2=str+strlen(str)-1;*/第四章习题答案4-1#include void swap(int *p1,int *p2)int t;t=*p1;*p1=*p2;*p2=t;void main()int a,b,c;int *s1,*s2,*s3;coutabc;s1=&a;s2=&b;s3=&c;if(ab)swap(s1,s2);if(ac)swap(s1,s3);if(bc)swap(s2,s3);cout输出排好序的三个数:;coutatbtcendl;4-2#include void trans(int,int);void main()int n,sel;coutn;docoutsel;switch (sel)case 2:trans(n,2);break;case 8:trans(n,8);break;case 16:trans(n,16);break;case 32:trans(n,32);break;case 0:break;default:cout进制输入错误!endl;while(sel!=0);void trans(int n,int base)int c;if(n=0)return;c=n%base;trans(n/base,base);if(c=9)coutct;elsecoutchar(c-10+A)t;4-3#include #include #include void fun(int b,int n)for(int i=0;in-1;i+) /若不是素数,将其值置为0for(int j=i+1;jn;j+)if(bi!=0&bj!=0)if(bj%bi=0)bj=0;void main()int a210=0,n=0,k=5;for(int i=0;i48;i+) /给数组赋初值ai=k,k+=2;fun(a,48);for(i=0;i49;i+)if(ai!=0)coutsetw(6)ai;n+;if(n%5=0)coutendl;coutendl;4-4#include int gcd(int,int);int lcm(int,int);void main()int num1,num2,den1,den2,a,l,g;cinnum1den1num2den2;coutnum1/den1 , num2/den2n;cout求分母的最小公倍数: ;l=lcm(den1,den2);coutln;cout两分数的和为:; a=(l/den1)*num1+(l/den2)*num2;couta/ln;cout求分子分母的最大公约数:;g=gcd(a,l);coutgn;cout输出最简分数:;couta/g/l/g=1;i-)if(!(a%i)|(b%i)break;return (i);int lcm(int a,int b)int i;i=b;while(i%a)i+=b;return(i);4-5#include #include double sin(double x,double eps)double term,sum,y;int n=1; /n=0y=x*x;term=x;sum=0;while(fabs(term)=eps)sum+=term; n+;term=term*y/(2*n-2)*(2*n-1); /(2*n)*(2*n-1)term*=-1; return sum;void main()double x,y;coutx;while(x360)x-=360;y=3.1415926*x/180;cout度数为:x其sin值为:sin(y,1e-6)n;4-6#include #include float solut(float a,float b,float c,float d)float x=1,x0,f,f1;dox0=x;f=(a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c; /对f函数的导数x=x0-f/f1;while(fabs(x-x0)=1e-3);return x;void main()float a,b,c,d;coutabcd;coutax3+bx2+cx+d=0endl;coutx=solut(a,b,c,d)endl;4-7#include #include prime(int n) int i=2; int flag=1; for(;in/2&flag=1;i+) if (n%i=0) flag=0; return(flag); void main() int m,j,k,n=0; for(m=6;m=100;m+=2) for(j=3;j=m/2;j+=2)if (prime(j) k=m-j; if (prime(k) coutsetw(4)m=j+k; if (+n%5=0) coutendl; if(m=j+k)break; coutendl; 4-8#include void f1(int n)int j=n%10;if(n/10)f1(n/10);coutjt;void f2(int n)coutn%10t;if(n/10)f2(n/10);void main()int x;coutx;cout输入的整数为:xn;cout该整数的反序输出为:;f2(x);coutn;cout该整数的正序输出为:;f1(x);coutn;解析与实训习题及实验参考解答第一章一、 选择题1. A 2.D 3.A 4.B 5.A 6.D 7.D 8.C 9.D 10.C 11.D 12.C 13.B 14.A 15.C 16.B 17.A 18.B 19.B 20.D 21.A 22.D 23.B 24.B 25.B 26.A 27.C 28.B 29.D 30.C 31.A注:第八题选项印刷错,应为:Ac1= 2Bc1=x255Cc1=255Dc1= A二、 填空题1. #include (或# include iostream.h)2. 编译 连接3. .cpp .obj .exe4. 十5. setw() iomanip.h6. a b c7. a b (注:输出第二项是空格)8. 109. 110. 字符11. 八 十六12. 4.013. ; (分号)14. 105 7015. 6016. 817. 718. 1519. int(x) 或 (int)x三、编程题1#include#define PI 3.1415926void main()float r,h,area;cout输入圆柱体的半径和高(r,h) :rh;area=PI*r*r*h;cout 圆柱体的体积为:areaendl;2.#includevoid main()int x,a,b,c ,m,n;cout输入一个三位整数x:x; a=x/100;b=x/10%10;c=x%10;m=c*100+b*10+a;n=m-x;cout 反序组成的新3位整数为:mendl;cout 新3位整数减去原3位整数的值为:nendl;四、实验1.#includevoid main()cout 中华人民共和国endl ;2.# include void main (void) int a,b,c;cinab;c= a+b ;coutc=cendl; 3结果:1 0 1 0 1(1)结果为:10 16 16 8 10(2)换成dec结果为:a 10 10 8 a 换成oec结果为:12 20 20 10 124.# include # include void main (void) int a,b,c,s,area;cout 输入三角形三边长a,b,c:abc;s= (a+b+c)/2 ;area=sqrt(s*(s-a)*(s-b)*(s-c);cout三角形面积为:areaendl; 第二章一、 选择题1.B 2.A 3.A 4.C 5.B 6.C 7.B 8.B 9.B 10.D 11.B 12.D 13.D 14.D 15.A 16.D 17.C 18.C 19.A 20.C 21.B 22.A 23.D 24.A 25.B 26.B 27.D 28.C 29.B 30.D 31.B 32.A 33.C 34.C二、 填空题1. 选择结构 循环结构2. if3. break continue4. 循环语句 switch语句5. 循环语句6. 1 1 结束循环体的语句7. 60,308. d=209. 110. 1011. y=0 y=5y=30error12. 11713. 2 , 314. 2 , 315. #16. s=6,k=517. 57111318. 0246819.* * * * * * * * * * * * *20. (1) Year % 4 !=0(2) Year% 100 !=0(3) Year% 400 !=021. (1)ab(2) t=a;a=d;d=t;(3) b=a&ch=A&ch2&x-1&x=2 (3) y=-125. (1)int i=200 (2) i=300 (3) i/100+i/10%10+i%10=12&(i/100)*(i/10%10)*(i%10)=4226. (1) i=100 (2) t=s/i (3) s=-s27. (1) n (或n!=0) (2) n0 (3) n/=1028. (1) n=k*k (2) b=n/10%10 (3) a=b|b=c|c=a29. (1) is31. (1) x1 (2) x1=x232. (1)d=4 (2) a+i*d 三、编程题1.#includevoid main()int x,y,t,m,n; cout输入两个整数(x,y):xy; if(xy) t=x;x=y;y=t; for(int i=x;i0;i-) if(x%i=0&y%i=0)m=i;break; for( i=y;i+) if(i%x=0&i%y=0)n=i;break;coutx和y的最大公约数是:mendl;coutx和y的最小公倍数是:nendl;2.# include void main(void) int s; char score;docout s;while(s100);switch (s/10) case 10 : case 9 : score=A;break; case 8 : score=B;break; case 7 : score=C;break; case 6 : score=D;break; default : score=E;break; cout百分制分数为:st五分制分数为:scoreendl;3.#include#includevoid main(void)float a,b,c;coutabc;if(a+bc&b+ca&c+ab) if(a=b&b=c)cout三角形是等边三角形。n; else if(a=b|b=c|c=a) cout三角形是等腰三角形。n; else if(a*a+b*b=c*c |b*b+c*c=a*a |c*c+a*a=b*b)cout三角形是直角三角形。n; else cout三角形是一般三角形。n;else cout三边不构成三角形。n;四、实验1.#include void main(void)double s=1.0; double n=1.0;for(int j=1; j=30; j+)n/= j;s+=n;couts=sendl;2. #include void main(void)int a,b,c,t;coutabc;if (ab)t=a;a=b;b=t;if (ac)t=a;a=c;c=t;if (bc)t=b;b=c;c=t;coutatbtcendl;3.#include #include void main()float x0,x1,x2,fx0,fx1,fx2;docoutx1x2;fx1=x1*x1-2-x1; /求出x1点的函数值fx1fx2=x2*x2-2-x2; /求出x2点的函数值fx2while(fx1*fx20); /保证在指定范围内有根,即fx的符号相反dox0=(x1+x2)/2;fx0=x0*x0-2-x0; /求出中点x0点的函数值fx0if(fx0*fx1)=1e-5); /判断x0点的函数与x轴的距离coutx=x0n;4.#include #include void main()int s;for(int m=2;m1000;m+)s=0;for(int i=1;im;i+)if(m%i=0)s+=i;if(s=m)coutsetw(8)m 是一个完数,它的因子是:;for(i=1;im;i+)if(m%i=0)couti ;coutn; 第三章一、选择题1.C 2.C 3.D 4.C 5.C 6.D 7.D 8.D 9. 10. 11. 12.D 13.D 14. 15. 16.D 17. 18. 19.A 20. 21. 22.A 23.D 24. 25.B26. 27.D 28.C 29.二、填空题1. (1)首(2)被改变2. (1)0(2)03. (1)字符型(2)cin.getline(str,79)4. (1)2(2)10(3)205. m*i+j+16. (1)10(2)20(含结束标记)7. 下标38. (1)2(2)8(3)49. (1)*(x+i)(2)*(p+i)(3)pi10. “ab”11. (1)*(*(m+i)+j)(2)*(mi+j)(3)(*(m+i)j(4)*(&m00+10*i+j)12. (1)定义了指向一维数组的指针(二维数组的行指针),所指向的一维数组有5个元素(2)列数为5的二维数组(3)定义了一个指针数组,该数组有5个元素(4)5个整型地址13. The index is :714. 1 3 4 615. 9 7 6 5 4 3 216. 5 1 2 3 417. How do es she18. n=1619. #&*&%20. ASZ21. min=-3, row=3, col=022. (1)2 3 5 7 11 (2)13 17 19 23 2923. (1)1 2 3(2)14(3)3624. 0 7 14212825. (1)0123abc(2)23abc(3)8926. ab567fgh27. (1)ai(2)continue28. (1)ai(2)5(3)ai=aj,aj=m,m=ai29. (1)n(2)n%10(3)p1+,p2-(4)b30. (1)n*n(2)mi=a%10(3)t*=10(4)k=n*n31. (1)continue(2)num+(3)num 或 num!=032. (1)m=i(2)n=i(3)am=min,an=max 或i=am,am=an,an=i33. (1)i10(2)i=0(3)(i+1)%10(4)(i+1)%3=034. (1)aj37. (1)int pos=0(2)ai=c(3)break(4)pos38. (1)0(2)a(3)sum/n(4)xiave39. (1)ai(2)i(3)4-i(4)coutendl40. (1)char*p=*p2(2)*p三、编程题/1. 合并有序序列8,6,4和9,7,5,3,1#includevoid main()int a20=8,6,4,b10=9,7,5,3,1,c30=0;int *p1,*p2,*p3;cout原数组为:n数组a:t;for(p1=a;*p1;p1+)cout*p1t;coutendl数组b:t;for(p2=b;*p2;p2+)cout*p2t;cout*p2)*p3+=*p1+;else *p3+=*p2+;if(*p1=0)while(*p2)*p3+=*p2+;else while(*p1)*p3+=*p1+;cout合并后的数组为:n数组c:t;for(p3=c;*p3;p3+)cout*p3t;coutendl;/2. 二维数组的鞍点#includevoid main()int a45=23,14,65,7,20,4,50,56,27,18,2,3,58,32,29,69,45,60,72,45;int row,col,t,f;cout数组为:n;for(int i=0;i4;i+)for(int j=0;j5;j+)coutaijt;coutendl;for(i=0;i4;i+)f=1;t=ai0;row=i;col=0;for(int j=0;jt)t=aij;col=j;for(int k=0;k4;k+)if(akcolt)f=0;if(f)cout第i+1行鞍点元素为icol,值为:aicoln;else cout第i+1行无鞍点n;/3. 生成折叠矩阵#includevoid main()int a44,startnum;cout请输入起始数据startnum:nstartnum;for(int i=0;i4;i+)for(int j=0;j=0;j-)aij=startnum+;coutendl折叠矩阵为:n;for(i=0;i4;i+)for(int j=0;j4;j+)coutaijt;coutn;coutendl;/4. 将二维数组的每行元素按降序排列#include#includevoid sort(int *a,int n)for(int i=0;in-1;i+)int k=i;for(int j=i+1;jak)k=j;if(k!=i)int t=ai;ai=ak;ak=t;void print(int(*a)6,int n)for (int i=0;in;i+)for(int j=0;j6;j+)coutaijt;coutn;void main()int a56;for (int i=0;i5;i+)for(int j=0;j6;j+)aij=rand();print(a,5);coutn;for(i=0;i5;i+)sort(ai,6);print(a,5);/5. 查找含通配符 “*”的子串#includeint search(char*str,char*s)for(;*str;str+)for(char *p1=str,*p2=s;*p1=*p2;p1+,p2+);if(*p2=*&*p1)if(*(p2+1)=0)return 1;elsep1+;p2+;while(*p1)for(char*p3=p1,*p4=p2;*p3=*p4;p3+,p4+)if(*(p4+1)=0)return 1;p1+;return 0;void main()char str=abc1123445;char *s=c*45,bc*,*1234,45*,*ab;for(char *ptr=s;ptrs+5;ptr+)if(search(str,*ptr)cout*ptr是str的子串。n;else cout*ptr不是str的子串。n;/6. 折半查找法查找有序序列中值为k的元素#includevoid main()int a10=2,4,6,8,10,12,14,16,18,20,k;int low=0,hig=9,mid,flage=0;coutk

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论