第六周作业

      实验作业

1.调试分析课本每一个例题,有可能的话更改成2-3个方法的新程序;

2.编程实现课本每一个编程习题。

3. 编程定义一个4X5矩阵和5X3矩阵,并计算它们的积。

4.编程输出1到n的平方的自然数构成的“魔方阵”,魔方阵是指它每一行和每一列及对角线之和均相等的方阵。

 习题1

/**************************
***功能:数据顺序排列 ****
**************************/
#include<iostream>
using namespace std;
int main()
{
	int a[5],i,j,k;
	cout<<"输入五位数:"<<endl;
	for(i=0;i<5;i++)
		cin>>a[i];
	cout<<"将其原来顺序输出:"<<endl;
	for(i=0;i<5;i++)
		cout<<a[i]<<"  ";
	cout<<endl;
	cout<<"按从大到小顺序输出:"<<endl;
	for(i=1;i<5;i++)
		for(j=4;j>i-1;j--)
		{
			if(a[j]>a[j-1])
			{
				k=a[j];
				a[j]=a[j-1];
				a[j-1]=k;
			}
		}
	for(i=0;i<5;i++)
		cout<<a[i]<<"  ";
	return 0;
}


 

 习题2

/***习题2:输入数组,求出最大值及其下标***/
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int a[2][3],i,j,max,x,y;
	cout<<"请输入一个二维数组a[2][3]"<<endl;
	for(i=0;i<2;i++)
		for(j=0;j<3;j++)
			cin>>a[i][j];
		cout<<"输出一个二维数组a[2][3]"<<endl;

         for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		    cout<<setw(4)<<a[i][j];
		cout<<endl;
	}
	max=a[0][0];
	for(i=0;i<2;i++)
		for(j=0;j<3;j++)
		
			if(a[i][j]>=max)
			{
				max=a[i][j];
				x=i;
				y=j;
			}
				cout<<"输出二维数组a[2][3]的最大值"<<endl;
	cout<<"a["<<i<<"]["<<j<<"]="<<max<<endl;

	return 0;
}


 

考虑到最大值可能有多个,所以得修改程序

/***习题2:输入数组,求出最大值及其下标***/
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int a[2][3],i,j,max,x,y;
	cout<<"请输入一个二维数组a[2][3]"<<endl;
	for(i=0;i<2;i++)
		for(j=0;j<3;j++)
			cin>>a[i][j];
		cout<<"输出一个二维数组a[2][3]"<<endl;

         for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		    cout<<setw(4)<<a[i][j];
		cout<<endl;
	}
	max=a[0][0];
	for(i=0;i<2;i++)
		for(j=0;j<3;j++)
		
			if(a[i][j]>=max)
			{
				max=a[i][j];
			}
	cout<<"输出二维数组a[2][3]的最大值"<<endl;
	for(i=0;i<2;i++)
		for(j=0;j<3;j++)
		{
			if(a[i][j]==max)
			{
					cout<<"a["<<i<<"]["<<j<<"]=";

			}
		}
	cout<<max<<endl;
	return 0;
}



习题3

#include<iostream>
using namespace std;
int main()
{
	int a[20],a1=1,a2=1,int i,char j=0;
	a[0]=a1;
	a[1]=a2;
	for(i=0;i<18;i++)
	{
		a[i+2]=a[i]+a[i+1];
	} 
	cout<<"输出Fibonacci数列的前20位:"<<endl;
	for(i=0;i<20;i++)
	{
		cout<<a[i]<<' ';
		if(a[i]>=100&&a[i]<1000)
		{
			j++;
		}
	}
	cout<<endl;
	cout<<"经统计,一共有"<<j<<"个3位数"<<endl;
	cout<<"数列中的第16项数据为"<<a[15]<<endl;
	return 0;
}




 习题4

#include<iostream>
using namespace std;
int main()
{
	char a[100],i=0,k;
	int f=0,b=0,c=0,d=0,e=0;
	cout<<"请输入一行文字:"<<endl;
	cin.get(a,100);
	i=strlen(a);
	for(k=0;k<i;k++)
	{
		if(a[k]>=65&&a[k]<=90)
		{
			f++;
		}
		else if(a[k]>=97&&a[k]<=122)
		{
			b++;
		}
		else if(a[k]>=48&&a[k]<=57)
		{
			c++;
		}
		else if(a[k]==32)
		{
			d++;
		}
		else
		{
			e++;
		}
	}
	
	cout<<"大写字母有"<<f<<"个"<<endl;
	cout<<"小写字母有"<<b<<"个"<<endl;
	cout<<"数字有"<<c<<"个"<<endl;
	cout<<"空格有"<<d<<"个"<<endl;
	cout<<"其他字符"<<e<<"个"<<endl;

	return 0;
}


 

习题5

#include<iostream>
using namespace std;
int main()
{
	char a[100],i=0,k;
	cout<<"请输入一个字符串:";
	cin.get(a,100);
	i=strlen(a);
	cout<<"输出反向字符串:";
	for(k=i-1;k>=0;k--)
		cout<<a[k];
	cout<<endl;

	return 0;
}



 习题6

#include<iostream>
using namespace std;
int main()
{
	char a[100],i=0,k;
	cout<<"请输入一个字符串:";
	cin.get(a,100);
	i=strlen(a);
	cout<<"输出改动后字符串:";
	for(k=0;k<i;k++)
	{
		if(a[k]<48||a[k]>57)
			cout<<a[k];	
	}
	cout<<endl;

	return 0;
}


 

 

/************************
***功能:求两矩阵乘积****
************************/
#include<iostream>
using namespace std;
int main()
{
	int a[4][5],b[5][3],c[4][3]={0},i,j,k,t;
	cout<<"please intput the number of a[4][5]"<<endl;
	for(i=0;i<4;i++)
		for(j=0;j<5;j++)
			cin>>a[i][j];
	cout<<"please intput the number of b[5][3]"<<endl;
	for(i=0;i<5;i++)
		for(j=0;j<3;j++)
			cin>>b[i][j];
	cout<<"output the number of a[4][5]"<<endl;
    for(i=0;i<4;i++)
	{
		for(j=0;j<5;j++)
			cout<<a[i][j]<<'\t';
		cout<<endl<<endl;
	}
		cout<<"output the number of b[5][3]"<<endl;
    for(i=0;i<5;i++)
	{
		for(j=0;j<3;j++)
			cout<<b[i][j]<<'\t';
	    cout<<endl<<endl;
	}
	cout<<"c[4][3]=a[4][5]*b[5][3],output the c[4][3]"<<endl;
	for(i=0;i<4;i++)
		for(j=0;j<3;j++)
			for(k=0;k<5;k++)
			{
				t=a[i][k]*b[k][j];
				c[i][j]+=t;
			}
			
	
	cout<<"output the c[i][j]"<<endl;
	 for(i=0;i<4;i++)
	{
		for(j=0;j<3;j++)	
			cout<<c[i][j]<<'\t';
		cout<<endl<<endl;
	}
	return 0;
}



 

 

/*************************
**    功能:输出魔方    **
*************************/
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int n,i,j,k,a[100][100];
	int temp=1;
	cout<<"请输入魔方的阶数:(必须是奇数)"<<endl;
	cin>>n;
	while(n%1||!(n%2))
	{
		cout<<"很遗憾,只能是奇数,请重新输入:";
		cin>>n;
	}
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			a[i][j]=0;
	cout<<"输出魔方:"<<endl;
	j=0;
	i=n/2;
	a[i][j]=temp;
	for(k=0;k<n*n;k++)
	{
		i=i-1;
		if(i<0)
		{i=n-1;}
		j=j-1;	
		if(j<0)
		{j=n-1;}
		if(a[i][j]!=0)
		{
			j=j+1;
			if(j>=n)
			{j=0;}
			i=i+1;
			if(i>=n)
			{i=0;}
			j=j+1;
            if(i>=n)
			{i=0;}
			
			
		}
		temp=temp+1;
		a[i][j]=temp;
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			cout<<setw(4)<<a[i][j];
		}
		cout<<endl;
	}
	
	return 0;
}



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值