第九周作业2

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

习题1

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


习题2

#include<iostream>
using namespace std;
void str(char *);
int main()
{
	char STR[20];
	cout<<"请输入一个大写字符串:";
	cin.get(STR,20);
	str(STR);
	cout<<"转换为小写字符串:"<<STR<<endl;
	return 0;
}
void str(char *p)
{
	for(;*p!='\0';p++)
		if(*p>='A'&&*p<='Z')
			*p+='a'-'A';
}


习题3

#include<iostream>
using namespace std;

int main()
{
	char str[100],*p;
	cin.get(str,100);
		p=str;
	for(;*p!='\0';p++)
	{
		if(*p!=' ')
			cout<<*p;
	}
	
	cout<<endl;
	return 0;
}


习题4

#include<iostream>
using namespace std;

int main()
{
	char *week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
	int i;
	while(1)  //while(1)表示无限循环?还有其他while(0),while(2),while(3).... 吗?
{
	cout<<"please input week No.:";
	cin>>i;
	if(i<0||i>6)
		break;
	cout<<"week No."<<i<<" is "<<week[i]<<endl;
	}
	return 0;
}


 
习题5

 

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


习题6

#include<iostream>
using namespace std;
int max(int *s);
int main()
{
	int *p[3],i,j,a[3][4];
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
			cin>>a[i][j];
		p[0]=a[0];
		p[1]=a[1];
		p[2]=a[2];
		for(i=0;i<3;i++)
		{
			for(j=0;j<4;j++)
				cout<<*(p[i]+j)<<'\t';
				cout<<endl;
		}
				cout<<"最大元素为:"<<max(*p)<<endl;
		return 0;
}

		int max(int *s)
		{
			int max,i,j;
			max=*s;
			for(i=0;i<12;i++)
				{
				if(s[i]>max)
					max=(s[i]);
				}
				return max;
		}


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

#include<iostream>
using namespace std;
int baoshu(int);

int main()
{
	int n,hao;
	cout<<"请输入人数:"<<endl;
	cin>>n;
	hao=baoshu(n);
	cout<<"最后退出的是第"<<hao<<"号"<<endl;
	return 0;
}

int baoshu(int m)
{
	int *p,a[100],i,j=0,count=m;
	for(i=0;i<m;i++)
		a[i]=i+1;     //排序号
	do
	{
		for(i=0;i<m;i++,j++)
		{
			*(p+j)=a[i];
			if(j%3!=0)
				count--;
		}
		m=count;      //剩下的人数
	} while(count>0);
    return  *(p+j);    //最后一个地址就是最后一个人
}

	




一个数组只能用一个指针


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

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

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

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

#include<iostream>
using namespace std;
int a[3][5];
int*p[3];
void avg_2();  
void failure();
void good();
int main()
{
	p[0]=a[0];
    p[1]=a[1];
    p[2]=a[2];
	for(int j=0;j<5;j++)
	{
		cout<<"请按顺序输入第"<<j+1<<"位学生的语文,数学,英语三科成绩:";
		for(int i=0;i<3;i++)	
			cin>>a[i][j];
	}
	cout<<"1号\t2号\t3号\t4号\t5号"<<endl;
	for(int i=0;i<3;i++)
	{	
		for(int j=0;j<5;j++)
		cout<<a[i][j]<<'\t';
        cout<<endl;
    }
    avg_2();
	failure();
	cout<<"平均成绩在90以上或者全部课程在85分以上的学生有:";
	good();

	return 0;
}
void avg_2()

{
    double sum=0;
	double avg;
	for(int j=0;j<5;j++)
	sum+=a[1][j];
	avg=sum/5;
    cout<<"第二门课成绩的平均分为:"<<avg<<endl;
}
void failure()
{	
	for(int j=0;j<5;j++)
		if((*(p[0]+j)<60&&*(p[1]+j)<60)||
			(*(p[1]+j)<60&&*(p[2]+j)<60)||
			(*(p[0]+j)<60&&*(p[2]+j)<60))
		{
			cout<<"2门以上成绩不及格的学生是:"<<j+1<<"号,"<<endl;
	cout<<"他的全部课程成绩为:"<<endl;
	cout<<"语文:"<<*(p[0]+j)<<"\t数学:"<<*(p[1]+j)<<"\t英语"<<*(p[2]+j)<<endl;
		}
}

void good()
{	
	for(int j=0;j<5;j++)
		if((*(p[0]+j)+*(p[1]+j)+*(p[2]+j))/3>=90||
			(*(p[0]+j)>=85&&*(p[1]+j)>=85&&*(p[2]+j)>=85))
			cout<<j+1<<"号"<<endl;
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值