第四章作业一:课本习题
1.
//#include "stdafx.h"
#include<iostream>
using namespace std;
#include<iomanip>
int num[5];
int main()
{
int a,b,i;
cout<<"please input 5 numbers:"<<endl;
for(a=0;a<5;a++)
cin>>num[a];
cout<<"这五个数是:";
for(a=0;a<5;a++)
cout<<setw(5)<<num[a];
cout<<endl;
for(a=0;a<5;a++)
for(i=4;i>0;i--)
if(num[i]>num[i-1])
{ b=num[i];
num[i]=num[i-1];
num[i-1]=b;
}
cout<<"排序后:";
for(a=0;a<5;a++)
cout<<setw(4)<<num[a];
cout<<endl;
return 0;
}
2.
#include "stdafx.h"
#include<iostream>
using namespace std;
//int num[10];
int _tmain(int argc, _TCHAR* argv[])
{
int num[10];
int a,b;
int min,n;
cout<<"请输入十个数"<<endl;
for(a=0;a<10;a++)
cin>>num[a];
for(a=0;a<9;a++)
{
min=a;
for(b=a+1;b<10;b++)
{if(num[b]<num[min])
min=b;}
if(min!=a)
{n=num[a];num[a]=num[min];num[min]=n;}
cout<<"第"<<a+1<<"次排序结果:"<<endl;
for(b=0;b<10;b++)
cout<<num[b]<<'\t';
cout<<endl;
};
cout<<"最后排列结果:"<<endl;
for(a=0;a<10;a++)
cout<<num[a]<<'\t';
cout<<endl;
return 0;
}
3.
#include "stdafx.h"
#include<iostream>
#include<iomanip>
using namespace std;
int num[10]={45,62,18,73,64,58,39,57,85,28};
int _tmain(int argc, _TCHAR* argv[])
{
int a,b;
int min,n;
//cout<<"请输入十个数"<<endl;
//for(a=0;a<10;a++) //每次调试都要输数,真的很麻烦
//cin>>num[a]; //所以就在开头定义了
cout<<"初始数据:"<<endl;
for(a=0;a<10;a++)
cout<<setw(5)<<num[a];
cout<<endl;
for(a=1;a<10;a++)
{
min=num[a];
b=a-1;
while(b>=0&&num[b]>min)
{
num[b+1]=num[b];
b--;
}
num[b+1]=min;
cout<<"第"<<a<<"次排序结果:"<<endl;
for(b=0;b<10;b++)
cout<<setw(5)<<num[b];
cout<<endl;
};
cout<<"最后排列结果:"<<endl;
for(a=0;a<10;a++)
cout<<setw(5)<<num[a];
cout<<endl;
return 0;
}
4.
#include "stdafx.h"
#include<iostream>
#include<iomanip>
using namespace std;
int num[3][4];
int main()
{
int a,b;
int min,max;
cout<<"请输入12个数"<<endl;
for(a=0;a<3;a++)
for(b=0;b<4;b++)
cin>>num[a][b];
cout<<"初始数据:"<<endl;
for(a=0;a<3;a++)
{
for(b=0;b<4;b++)
cout<<"num["<<a<<"]["<<b<<"]="<<num[a][b]<<'\t';
cout<<endl;
}
cout<<endl;
max=num[0][0];
min=num[0][0];
for(a=0;a<3;a++)
for(b=0;b<4;b++)
{
if(max<num[a][b])
max=num[a][b];;
if(min>num[a][b])
min=num[a][b];
}
for(a=0;a<3;a++)
for(b=0;b<4;b++)
{
if(max==num[a][b])
cout<<"最大项max=num["<<a<<"]["
<<b<<"]="<<num[a][b]<<endl;;
if(min==num[a][b])
cout<<"最小项min=num["<<a<<"]["
<<b<<"]="<<num[a][b]<<endl;
}
return 0;
}
5
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[100];
cout<<"请输入一个字符串:";
cin.get(str,100);
cout<<"该字符串的反向字符串为:"<<endl;
for(int i =strlen(str) -1;i>=0;i--)
cout<<str[i];
cout<<endl;
cout<<"该字符串的长度为:"<<strlen(str)<<endl;
return 0;
}
6.
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
char a[50],b[50];
int i,j=0;
cout<<"请输入一个字符串:"<<endl;
cin.get(a,50);
for(i=0;i<strlen(a);i++)
{
if(a[i]>='0'&&a[i]<='9')
continue;
b[j]=a[i];
j++;
}
b[j]='\0';
cout<<"删除数字后的字符串为:"<<b<<endl;
cout<<"字符串的长度为:"<<j<<endl;
return 0;
}
习题3
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int i,j,k,p=0;
int a[4][5],b[5][3],x[4][3];
cout<<"请输入4x5矩阵的元素:"; //第一个数组
for(i=0;i<4;i++)
for(j=0;j<5;j++)
cin>>a[i][j];
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
cout<<setw(6)<<a[i][j];
cout<<endl;
}
cout<<"请输入5x3矩阵的元素:"; // 第二个数组
for(i=0;i<5;i++)
for(j=0;j<3;j++)
cin>>b[i][j];
for(i=0;i<5;i++)
{
for(j=0;j<3;j++)
cout<<setw(6)<<b[i][j];
cout<<endl;
}
for(i=0;i<4;i++) //求积
{
for(j=0;j<3;j++)
for(k=0;k<5;k++)
{
p+=a[i][k]*b[k][j];
x[i][j]=p;
}
p=0;
}
cout<<"两个矩阵的乘积为:"<<endl;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
cout<<setw(4)<<x[i][j];
cout<<endl;
}
return 0;
}
习题4:
//
#include "stdafx.h"
#include<iostream>
#include<iomanip>
using namespace std;
//float A[4][5]={32,65,-23,56,14,15,9,25,41,35,67,42,65,52,35,71,19,29,34,38,};
//float B[5][3]={41,52,63,74,15,24,31,-41,65,-18,27,23,69,48,56,};
//float C[4][3];
int main()
{
int a,b,c,d=0,e,f,g,i,k,m,n;
float A[20][20],B[20][20],C[20][20]; //由于定义数组时系统会开辟出一块空间,
//在写程序时应考虑实际情况,够用就好,杜绝浪费
do
{cout<<"请确定第一个矩阵的行数i(i<=20)"<<endl;
cin>>i;}
while(i>20);
do
{
cout<<"请确定第一个矩阵的列数k(k<=20)"<<endl;
cin>>k;}
while(k>20);
do
{cout<<"请确定第二个矩阵的行数m(应与第一矩阵列数相等)"<<endl;
cin>>m;}
while(m!=k);
do
{cout<<"请确定第二个矩阵的列数n(n<=20)"<<endl;
cin>>n;}
while(n>20);
cout<<"输入第一个矩阵的元素"<<endl;
for(a=0;a<i;a++)
for(b=0;b<k;b++)
cin>>A[a][b];
cout<<"输入第二个矩阵的元素"<<endl;
for(a=0;a<m;a++)
for(b=0;b<n;b++)
cin>>B[a][b];
for(a=0;a<i;a++) //第一个矩阵的行数为新矩阵行数
{
g=0;
for(b=0;b<n;b++) //第二个矩阵的列数为新矩阵列数
{
c=k; //这是由第一矩阵列数决定的
e=0;
f=0;
while(c)
{
C[a][b]+=A[d][e]*B[f][g];
e++;
f++;
c--;
}
g++;
}
d++;
}
cout<<"A="<<endl;
for(a=0;a<i;a++)
{
for(b=0;b<k;b++)
cout<<setw(8)<<setprecision(5)<<A[a][b];
cout<<endl;
}
cout<<"B="<<endl;
for(e=0;e<m;e++)
{
for(f=0;f<n;f++)
cout<<setw(8)<<setprecision(5)<<B[e][f];
cout<<endl;
}
cout<<"C=AxB="<<endl;
for(a=0;a<i;a++)
{
for(b=0;b<n;b++)
cout<<setw(8)<<setprecision(5)<<C[a][b];
cout<<endl;
}
return 0;
}