第六章作业

  •  实验作业

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

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

  1. 3. 有n个人围成一个圆圈,从第一个人开始报数,从1到3循环,凡是报3的退出圈子,问最后退出圈子的人是原来的几号。

4.一个班有5个学生,每一个学生有几门成绩(到底是几门自已定,或3或4或5或6),定义函数来完成下面功能:

    计算第2门课成的平均分;

    找出有2门以上成绩不及格的学生,并输出其学号和全部课程成绩;

    找出平均成绩在90以上或者全部课程在85分以上的学生

 

例6.1

#include <iostream>
using namespace std;
int main()
{
	int a=10;
	int *p=&a;
	cout<<"a="<<a<<endl;
	cout<<"p="<<p<<endl;
	cout<<"&a="<<&a<<endl;
	cout<<"*p="<<*p<<endl;
	cout<<"&p="<<&p<<endl;
	cout<<endl;
	*p=15;
	cout<<"a="<<a<<endl;
	cout<<"p="<<p<<endl;
	cout<<"&a="<<&a<<endl;
	cout<<"*p="<<*p<<endl;
	cout<<"&p="<<&p<<endl;
	cout<<endl;
	*p=15;

	return 0;
} 


例6.2

#include <iostream>
using namespace std;
int main()
{
int a,b;
int *p=&a,*q=&b,*tp;
cout<<"请输入两个数:"<<endl;
cin>>a,b;
if(a<b)
{
tp=p;
p=q;
q=tp;

}
cout<<"初始两个数为:"<<"a="<<a<<"   "<<"b="<<b<<endl;
cout<<"从大到小排序后的数为:"<<"*p="<<*p<<"*q"<<*q<<endl;
return 0;

}


例6.3

#include <iostream>
using namespace std;
int main()
{
int a,b,temp;
int *p=&a,*q=&b;
cout<<"please input a and b:"<<endl;
cin>>a>>b;
cout<<"初始的两个数为:"<<a<<"   "<<b<<endl;
if(a<b)
{
temp=*p;
*p=*q;
*q=temp;
}
cout<<"从小到大排序后的数为:"<<"*p="<<*p<<"    "<<"*q="<<*q<<endl;
return 0;
}


例6.4

#include <iostream>
using namespace std;
int main()
{
int a=10,b=10,*part1,*part2;
part1=&a,part2=&b;
cout<<boolalpha<<(*part1==*part2)<<endl;
cout<<boolalpha<<(part1==part2)<<endl;
return 0;
}


例6.5

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a[10],*p,i=0;
p=a;
for(;p<a+10;p++,i++)
*p=2*(i+1);
for(p=a;p<a+10;p++)
cout<<setw(4)<<*p;
cout<<endl;
return 0;
}


例6.6

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
char a[]="hello world",b[20],*p,*q;
p=a,q=b;
for(;*p!='\0';p++,q++)
*q=*p;
*q='\0';
cout<<"string1 is :";
cout<<a<<endl;
cout<<"string2 is :";
cout<<b<<endl;
return 0;
}


例6.7

#include <iostream>
using namespace std;
int main()
{
char *p="student";
for(;p!='\0';p++)
cout<<p<<endl;
return 0;
}


例6.8

#include <iostream>
using namespace std;
int main()
{
char *p="student";
for(int i=0;p[i]!='\0';i++);
cout<<p[i];
cout<<endl;
return 0;
}

 

例6.9

#include <iostream>
using namespace std;
int main()
{
	char s[50];
	char *p;
	cout<<"please input a string :"<<endl;
	cin.get(s,50);
	p=s;
	for(;*p!='\0';)
p++;
		cout<<"the length is :"<<p-s<<endl;
	return 0;
}


例6.10

#include <iostream>
using namespace std;
int main()
{
int a,*p,*pp;
p=&a;
pp=&p;
cout<<&a<<'\t'<<i<<endl;
cout<<&p<<'\t'<<p<<endl;
cout<<&pp<<'\t'<<pp<<'\t'<<*pp<<'\t'
<<**pp<<endl;
return 0;
}


 

例6.11

#include <iostream>
using namespace std;
int main()
{
	int a[5]={1,2,3,4,5};
	int *p[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};
	for(int i=0;i<5;i++)
		cout<<*p[i]<<'\t';
	return 0;
}


 

例6.12


 

#include <iostream>
using namespace std;
int main()
{
	char a[]="ghjfdghfjg hj",b[]="dfkjfh nhdjkfh",c[]="gfhdfdu jj";
	char *p[4];
		p[0]=a;
        p[1]=b;
		p[2]=c;
		p[3]=NULL;
		for(int i=0;i<4;i++)
		cout<<p[i]<<endl;
		return 0;

}


课后习题

2:

#include <iostream>
using namespace std;
void lower(char *p);
int main()
{
char s[20];
cout<<"请输入字符串"<<endl;
cin.get(s,20);
cout<<"大写字符串为:"<<s<<endl;
lower(s);
cout<<"转换后的小写字符串为:"<<s<<endl;
return 0;
}
void lower(char *p)
{
while(*p)
{
if((*p)>='A'&&(*p)<='Z')
*p+=32;
p++;
}
}

3:

#include <iostream>
using namespace std;
void del(char *p);
int main()
{
char s[20];
cout<<"请输入字符串:"<<endl;
cin.get(s,20);
del(s);
cout<<"处理后的字符串:"<<s<<endl;
return 0;
}
void del(char *p)
{
char s[20];
for(int i=0;p[i];i++)
s[i]=p[i];
int k=0;
for(i=0;s[i];i++)
{
	if(s[i]!=' ')
		p[k++]=s[i];
}
p[k]='\0';
}


 4:

#include <iostream>
using namespace std;
int main()
{
	char *weekname[]={"sunday","monday","tuesday","wednesday","thursday","friday","saturday"};
	int i;
		while(1)
		{
			cout<<"请输入一个数:"<<endl;
		cin>>i;
		if(i<=6||i>=0)
			cout<<"week.no:"<<weekname[i]<<endl;
		else
			break;
		return 0;
		}
}

5:

#include <iostream>
using namespace std;
int main()
{
	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},*p[3];
	p[0]=a[0],	p[1]=a[1],	p[2]=a[2];

	cout<<"数组a[3][4]:"<<endl;
for(int i=0;i<3;i++)
{
	int k=0;
for(int j=0;j<4;j++)
{
	cout<<*(p[i]+j)<<'\t';
k+=1;
if(k%4==0)
cout<<endl;
}
}
return 0;
}


6:

#include <iostream>
using namespace std;
int main()
{
int a[2][3],*p[2],**pp;
p[0]=a[0];
p[1]=a[1];
pp=p;
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
pp[i][j]=i+j;
int k=0;
for( i=0;i<2;i++)
for( int j=0;j<3;j++)
{
cout<<"a["<<i<<"]["<<j<<"]="<<*(*(pp+i)+j)<<'\t';
k+=1;
if(k%3==0)
cout<<endl;
}
return 0;
}


 

#include <iostream>
using namespace std;
int main()
{
 
	int a[3][4]={12,45,154,1245,1141,155,114552,1255},*p[3],**pp,max=0;
	p[0]=a[0],p[1]=a[1],p[2]=a[2];
	pp=p;
for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
{
if(max<pp[i][j])
max=p[i][j];
}
cout<<max<<endl;
return 0;
}


 

#include <iostream>
using namespace std;
void aver();
void bad();
void good();
int a[3][5]={85,30,82,91,85,50,45,83,92,87,89,21,84,93,88};
int *p[3],**pp;

int main()
{
	p[0]=a[0];
p[1]=a[1];
p[2]=a[2];
pp=p;
cout<<"成绩表:"<<endl;
cout<<"      ""1"<<"   "<<"2"<<"    "<<"3"<<"    "<<"4"<<"     "<<"5"<<endl;
cout<<"数学"<<" ";
for(int j=0;j<5;j++)
cout<<pp[0][j]<<"   ";
cout<<endl<<"英语"<<" ";
for( j=0;j<5;j++)
cout<<pp[1][j]<<"   ";
cout<<endl<<"语文"<<" ";
for(j=0;j<5;j++)
cout<<pp[2][j]<<"   ";
cout<<endl;
	aver();
	bad();
     good();
	return 0;
}
void aver()

{

	float aver=0;
	for(int i=0;i<5;i++)
		aver+=pp[1][i];
	aver/=5;
	cout<<"第2门课成的平均分"<<aver<<endl;
}
void bad()
{int count=0;
	for(int i=0;i<5;i++)
		for(int j=0;j<3;j++)
		{
		
			
			if(p[j][i]<60)
				count++;
			if(count>=2)
			{
				cout<<"有2门以上成绩不及格的学生的学号:"<<i<<endl;
				cout <<"有2门以上成绩不及格的学生各门成绩:"<<endl;
				cout<<"数学"<<'\t'<<"英语"<<'\t'<<"数电"<<endl;
				for(j=0;j<3;j++)
					cout<<pp[j][i]<<'\t';
				count=0;
				cout<<endl;
			}

		}
}
void good()
{

	for(int i=0;i<5;i++)
	{
int count=0;
	for(int j=0;j<3;j++)
	{
	if(pp[j][i]>85)
		count++;
	if(count==3)
	{
		cout<<"全部课程在85分以上的学生学号:"<<i<<endl;
	cout<<"成绩:"<<"数学"<<'\t'<<"英语"<<'\t'<<"数电"<<endl;
	for(j=0;j<3;j++)
	cout<<"      "<<pp[j][i];
	cout<<endl;
	}
	}
	}
for( i=0;i<5;i++)
	{
float aver=0;
	for(int j=0;j<3;j++)
		aver+=p[j][i];
	aver/=3;
	if(aver>90)
	{
	
	
		cout<<"全部课程在90分以上的学生学号:"<<i<<endl;
	cout<<"成绩:"<<"数学"<<'\t'<<"英语"<<'\t'<<"数电"<<endl;
	for(j=0;j<3;j++)
	cout<<"      "<<pp[j][i];
	cout<<endl;
	}

	}

}


 



 

 

 

 

 

 

 

xjtu计组第六章作业主要涉及计算机组成原理的相关概念和知识点。这一章节主要包括存储器的层次结构、存储器的组织和管理、存储器的屏蔽、存储器的操作和传输等内容。 首先,存储器的层次结构是计算机中非常重要的一个组成部分。它包括寄存器、高速缓存、主存和辅助存储器等。每一层的存储器容量和速度不同,寄存器最小而速度最快,辅助存储器容量最大但速度最慢。 其次,存储器的组织和管理也是我们需要了解的内容。存储器的组织有两种方式,分别是按地址方式和按内容方式组织。在存储器的管理中,我们需要学习如何管理地址空间、如何进行地址转换和管理内存映射等。 另外,存储器的屏蔽是实现存储器的一种方式。比如,在32位计算机中,通过屏蔽将地址划分为子地址、块地址和字地址,以实现对存储器的访问。 最后,我们还需要了解存储器的操作和传输。存储器的操作包括读取数据和写入数据两个过程,而存储器的传输是指数据在存储器之间的传输。我们需要学习存储器的读写操作的过程、存储器传输的方式以及优化存储器传输的方法。 总的来说,xjtu计组第六章作业涵盖的内容较为广泛,包括存储器的层次结构、组织和管理、屏蔽以及操作和传输等方面。通过完成这份作业,我们可以更好地理解和掌握计算机组成原理这门课程的核心概念和知识。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值