第四章作业
实验作业
1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;
2.编程实现课本每一个编程习题。
3. 编程定义一个4X5矩阵和5X3矩阵,并计算它们的积。
4.编程输出1到n的平方的自然数构成的“魔方阵”,魔方阵是指它每一行和每一列及对角线之和均相等的方阵。
5.积累调试程序经验,收集错误信息原因(每个同学收集3-5条错误信息原因,并输入电脑形成文字)。
作业1、2:
习题一:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[5];
int i,j,t;
cout<<"please input 5 numbers:\n";
cin>>a[0];
cin>>a[1];
cin>>a[2];
cin>>a[3];
cin>>a[4]; //输入5个数组元素
cout<<" the numbers are:";
for(i=0;i<5;i++)
cout<<setw(4)<<a[i];
cout<<endl;
for(i=0;i<4;i++)
for(j=0;j<4-i;j++)
if(a[j]<a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
cout<<" the sorted numbers are:";
for(i=0;i<5;i++)
cout<<setw(4)<<a[i];
cout<<endl;
return 0;
}
运行结果:
习题二:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int i;
int j;
int big;
int a[2][3];
cout<<"请输入数组各个元素值:"<<endl;
cin>>a[0][0];
cin>>a[0][1];
cin>>a[0][2];
cin>>a[1][0];
cin>>a[1][1];
cin>>a[1][2];
cout<<"the numbers are:"<<endl;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
big=a[0][0];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(a[i][j]>=big)
big=a[i][j];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(a[i][j]==big)
cout<<"the big number is:"<<"a["<<i<<"]["<<j<<"]="<<a[i][j]<<endl;
return 0;
}
运行结果:
习题3:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int i,n=0;
int f[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++)
{
if(i%5==0)
cout<<endl;
cout<<setw(8)<<f[i];
}
cout<<endl;
for(i=0;i<20;i++)
{
if(f[i]/100!=0&&f[i]/1000==0)
n++;
}
cout<<"以上数列中共有三位数数量n="<<n<<endl;
cout<<"第十六位数是"<<f[15]<<endl;
return 0;
}
运行结果:
习题四:
#include<iostream>
using namespace std;
int main()
{
char str[50];
int len=0;
cout<<"请输入一段字符串:";
cin.get(str,50);
while(str[len]!='\0')
len++;
cout<<"字符串"<<str<<"的长度为:"<<len<<endl;
return 0;
}
运算结果:
习题五:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int len=0;
char str[100];
cout<<"请输入一段字符串:";
cin.get(str,100);
cout<<"字符串"<<str<<"的反向字符串为:";
for(int i=strlen(str)-1;i>=0;i--)
cout<<str[i];
cout<<endl;
while(str[len]!='\0')
len++;
cout<<"字符串"<<str<<"的长度为:"<<len<<endl;
return 0;
}
运算结果:
习题六:
#include<iostream>
using namespace std;
int main()
{
char s[50],s1[50];
int i,k=0,len=0;
cout<<"请输入一段字符串:";
cin.get(s,50);
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='0'&&s[i]<='9');
else
{
s1[k++]=s[i];
len++;
}
}
cout<<"更改后字符串:"<<endl;
for(k=0;k<len;k++)
cout<<s1[k];
cout<<endl;
cout<<"改后字符串长度len="<<len<<endl;
return 0;
}
运算结果:
作业3:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int i,j,n,m;
int a[4][5],b[5][3],c[4][3];
cout<<"请输入数组a各个元素值:"<<endl;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
cin>>a[i][j];
cout<<"第一个矩阵:"<<endl;
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
cout<<"请输入数组b各个元素值:"<<endl;
for(i=0;i<5;i++)
for(j=0;j<3;j++)
cin>>b[i][j];
cout<<"第二个矩阵:"<<endl;
for(i=0;i<5;i++)
{
for(j=0;j<3;j++)
cout<<setw(4)<<b[i][j];
cout<<endl;
}
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
for(m=0;m<5;m++)
{
n=a[i][m]*b[m][j];
c[i][j]=n;
}
n=0;
}
cout<<"两矩阵相乘结果是:"<<endl;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
cout<<setw(4)<<c[i][j];
cout<<endl;
}
return 0;
}
运算结果:
作业4:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n,m=1,i,j;
cout<<"请输入一个奇数n:"<<endl;
int a[15][15];
scanf("%d",&n);
i=0,j=(n+1)/2-1;
while(m<=n*n)
{
a[i][j]=m;
m++,i--,j++;
if((m-1)%n==0&&m>1)
i=i+2,j=j-1;
if(i<0)
i=i+n;
if(j>(n-1))
j=j-n;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(a[i][j]/10==0)
printf("%d ",a[i][j]);
else
printf("%d ",a[i][j]);
if(j==(n-1))
printf("\n");
}
return 0;
}
运算结果:
作业5:收集错误信息原因
一般情况下是出现警告,运行不了,原因一般是
在一个工程中反复做
多个主程序,解决方法是将新输入的主程序拷贝下来,单独生成一个工程;
其他的错误还在慢慢探究原因中
2014/04/13