第四章 数组学习要求和实验
学习要求:
理解数组的基本概念,了解数组存储方法。
掌握一维和二维数组定义格式和数组元素使用。了解多维数组的定义和引用形式。
掌握字答数组的定义、字符数组与字符串的关系。
掌握常用字符串处理函数的使用。
进一步掌握循环程序设计技巧和方法。
进一步积累程序调试经验。
实验作业
1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;
2.编程实现课本每一个编程习题。
3. 编程定义一个4X5矩阵和5X3矩阵,并计算它们的积。
4.编程输出1到n的平方的自然数构成的“魔方阵”,魔方阵是指它每一行和每一列及对角线之和均相等的方阵。
5.积累调试程序经验,收集错误信息原因(每个同学收集3-5条错误信息原因,并输入电脑形成文字)。
作业要求
网上提交各个程序和相关要求的文字。
可以分两个博客文章来交。前2个题和后3个题各放到一个博客文章中提交。
1.1
#include<iostream>
using namespace std;
int main()
{
double a[5],b;
int i,j,k,l;
cout<<"请任意输入5个数"<<endl;
for(i=0;i<5;i++)
cin>>a[i];
for(j=0;j<5;j++)
{
for(k=j;k<5;k++)
if(a[k]>a[j])
b=a[k],a[k]=a[j],a[j]=b;
}
cout<<"5个数从大到小排列依次为"<<":"<<endl;
for(l=0;l<5;l++)
{
cout<<a[l]<<endl;
}
return 0;
}
1.2
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[2][3];
int i,j,big;
cout<<"请输入二行三列二维数组的元素值:"<<endl;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
cout<<"a["<<i<<"]"<<"["<<j<<"]=";
cin>>a[i][j];
}
cout<<"该二维数组为:";
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
if(j%3==0)
cout<<endl;
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<<"该数组中最大元素为:"<<"a["<<i<<"]"<<"["<<j<<"]="<<a[i][j]<<endl;
}
1.3
#include<iostream>
using namespace std;
int function(int n);
int main()
{
int i,count;
count=0;
for(i=1;i<=20;i++)
{
cout<<function(i)<<" ";
cout<<endl;
if(function(i)>=100&&function(i)<=999)
count++;
}
cout<<"Fibonacci数列前20个数中的三位数个数为:"<<count<<endl;
cout<<"该数列第16项数据是:"<<function(16)<<endl;
return 0;
}
int function(int n)
{
if(n==1||n==2)return 1;
else return function(n-1)+function(n-2);
}
1.4
#include<iostream>
using namespace std;
int main()
{int english_1=0,english_2=0,kong=0,math=0,other=0;
char a;
cout<<"请输入一行字符:";
while((a=getchar())!='\n')
{if(a>='a'&&a<='z') english_1++;
else if(a>='A'&&a<='Z') english_2++;
else if(a==' ') kong++;
else if(a>='0'&&a<='9') math++;
else other++;}
cout<<"小写英文字母的个数为:"<<english_1<<endl;
cout<<"大写英文字母的个数为:"<<english_2<<endl;
cout<<"空格的个数为:"<<kong<<endl;
cout<<"数字的个数为:"<<math<<endl;
cout<<"其他字符的个数为:"<<other<<endl;
return 0;
}
1.5
#include<iostream>
using namespace std;
int main()
{
char a[100];
int i;
cout<<"输入一字符串:"<<endl;
cin.get(a,100);
cout<<"反向输出每一个字符:"<<endl;
for(i=strlen(a);i>0;i--)
cout<<a[i-1];
cout<<"该字符串长度为:"<<strlen(a)<<endl;
return 0;
}
1.6
#include<iostream>
using namespace std;
int main()
{
int i,b,shuzi;
shuzi=0;
b=0;
char a[100];
cout<<"输入一个字符串:"<<endl;
cin.get(a,100);
cout<<"删除了所有数字后的字符串为:"<<endl;
for(i=0;i<100;i++)
if(a[i]=='\0')
break;
else if(a[i]>='0'&&a[i]<='9') shuzi++;
else
cout<<a[i];
cout<<"该字符串的长度为:"<<strlen(a)-shuzi<<endl;
return 0;
}
3
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int i,j,k,p;
p=0;
int a[4][5],b[5][3],ji[4][3];
cout<<"请输入4x5矩阵的元素:";
for(i=0;i<4;i++)
for(j=0;j<5;j++)
cin>>a[i][j];
cout<<"请输入5x3矩阵的元素:";
for(i=0;i<5;i++)
for(j=0;j<3;j++)
cin>>b[i][j];
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];
ji[i][j]=p;
}
p=0;
}
cout<<"两个矩阵的乘积为:"<<endl;
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
cout<<setw(4)<<ji[i][j];
cout<<endl;
}
return 0;
}
4.不会做