C++教材练习题(作业)参考答案
教材练习题参考答案
第一章
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+b>c&&b==c||++b>++a ;
cout<<" 表达式的值为: "< cout<<" a="< cout<<" a="< cout<<" a="< cout<<" a="< cin>>a; cout< cout< } 4、 #include void main() { int a,b,c,v,aver; cout<< " 输入三个数: "< cin>>a>>b>>c; v=a*a+b*b+c*c; aver=(a+b+c)/3; cout<<" 三个数的平方和是: "< cout<<" 三个数的平均值是: "< 第二章 1、 #include void main() { int a,b,c,t; cout<< " 输入三个数: "< cin>>a>>b>>c; if(a>b){t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(b>c){t=b;b=c;c=t;} cout< } 2、 #include void main() { float x,sum=0.0; int i=1; while(i<=10) { cin>>x; sum=sum+x; i=i+1; } cout<<"平均值是: "< 3、 #include void main() { double y=0.0,t=1.0; int n; cin>>n; for(int i=1;i<=n;i++) { t=t*i; y=y+t; } cout<<" n= "< cin>>a; n=a; do { sum+=n%10; n/=10; c++; }while(n); cout< cout< } 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) cout< } } 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) { cout< } } 第三章 //1. 一维数组的输入和输出 #include void main() { int a[10],k=1; for(int i=0;i<10;i++) { cout<<"请输入第"< cin>>a[i]; } cout<<"数组a为:\n"; for(i=0,k=0;i<10;i++) { k++; cout< if(k%5==0)cout<<'\n'; } cout<<'\n'; } //2. 通过指针输出一维数组中值为奇数元素 #include void main() { int a[10]={3,4,5,8,9,11,14,16,19,21},*p=a,k=0; cout<<"数组a中的奇数有:\n"; for(int i=0;i<10;i++) if(p[i]%2) { k++; cout<<*(p+i)<<'\t'; if(k%5==0)cout<<'\n'; } cout<<"\n"; } //3. 产生一个随机的二维数组b[4][5],并按矩阵的方式输出#include #include void main() { int b[4][5]; cout<<"产生的数组为:\n"; for(int i=0;i<4;i++) { for(int j=0;j<5;j++) { b[i][j]=rand(); cout< } cout<<'\n'; } cout< } //4. 二维数组的平方赋值 #include void main() { int a[3][4]={3,1,5,2,4,1,7,5,3,6,9,8},b[3][4]; cout<<"数组a为:\n"; for(int i=0;i<3;i++){ for(int j=0;j<4;j++) { cout< b[i][j]=a[i][j]*a[i][j]; } cout< } cout< cout<<"数组b为:\n"; for(i=0;i<3;i++){ for(int j=0;j<4;j++) cout< cout< } cout< } //5. 小写字母改写为大写字母 #include void main() { char str[100]; cout<<"请输入一个含空格字符的字符串。\n"; cin.getline(str,100); for(int i=0;str[i];i++) if(str[i]>='a'&&str[i]<='z') str[i]-='a'-'A'; cout<<"转换后的字符串为:\n"; cout< } //6. 通过指针将字符串逆序 #include #include void main() { char str[]="abc321",*s1=str,*s2,ch; cout<<"原字符串为:\n"< s2=str; //A while(*s2)s2++; s2--; //B while(s1 ch=*s1; *s1=*s2; *s2=ch; s1++; s2--; } cout<<"逆序后的字符串为:\n"< /*其中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; cout<<"输入三个数a,b,c:"; cin>>a>>b>>c; s1=&a; s2=&b; s3=&c; if(a>b)swap(s1,s2); if(a>c)swap(s1,s3); if(b>c)swap(s2,s3); cout<<"输出排好序的三个数:"; cout< } 4-2 #include void trans(int,int); void main() { int n,sel; cout<<"输入一个整数:"; cin>>n; do { cout<<"\n输出进制:2,8,16,32(输入0时退出):"; cin>>sel; 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<<"进制输入错误!"< } }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) cout< else cout< } 4-3 #include #include #include void fun(int b[],int n) { for(int i=0;i { if(b[i]!=0&&b[j]!=0) if(b[j]%b[i]==0) b[j]=0; } } void main() { int a[210]={0},n=0,k=5; for(int i=0;i<48;i++) //给数组赋初值 a[i]=k,k+=2; fun(a,48); for(i=0;i<49;i++) { if(a[i]!=0) { cout< n++; if(n%5==0) cout< } } cout< } 4-4 #include int gcd(int,int); int lcm(int,int); void main() { int num1,num2,den1,den2,a,l,g; cin>>num1>>den1>>num2>>den2; cout< cout<<"求分母的最小公倍数: "; l=lcm(den1,den2); cout< cout<<"两分数的和为:"; a=(l/den1)*num1+(l/den2)*num2; cout< cout<<"求分子分母的最大公约数:"; g=gcd(a,l);