第九周作业

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


H-1

#include <iostream>   
  
using namespace std;  
  
int main()  
{  
    int arr[10]={2,4,6,8,10,12,14,16,18,20};  
    int *p=arr;  
    for(int i=0;i<10;i++)  
    {  
        cout<<*p<<"   ";  
        if((i+1)%5==0)  
            cout<<endl;  
        p++;  
    }  
    return 0;  
} 
H-2

#include <iostream>

using namespace std;
void lower(char *p);
const int SIZE=20;
int main()
{
    cout << "请输入一个大写字符串: " << endl;
    char arr[SIZE];
    cin>>arr;
    lower(arr);
    cout<<"该字符串的小写为:"<<endl;
    cout<<arr<<endl;
    return 0;
}
void lower(char *p)
{
    while(*p)
    {
        if(*p>='A'&&*p<='Z')
            *p+=32;
        p++;
    }
}

H-3

#include <iostream>

using namespace std;
void del(char *p);
const int SIZE=20;
int main()
{
    cout << "请输入一个字符串: " << endl;
    char arr[SIZE];
    cin.get(arr,SIZE);
    del(arr);
    cout<<"删除空格后为:"<<endl;
    cout<<arr<<endl;
    return 0;
}
void del(char *p)
{
    char arr[SIZE];
    int i=0;
    for(;*p;i++)
        arr[i]=p[i];
    int k=0;
    for(i=0;arr[i]!='\0';i++)
    {
        if(arr[i]!=' ')
            p[k++]=arr[i];
    }
    p[k]='\0';

}

H-4

#include <iostream>

using namespace std;

int main()
{

    const char *month[12]={"January","February","March","April","May","June",
                  "July","August","September","October","November","December"};

    cout<<"请输入一个1到12之间的整数(输入其他数字则退出):"<<endl;
    int num;
    cin>>num;
    while(num>=1&&num<=12)
    {
        cout<<"当前月份是:"<<month[num-1]<<endl;
        cout<<"请输入一个1到12之间的整数(输入其他数字则退出):"<<endl;
        cin>>num;
    }
    cout<<"Done!\n";
    return 0;
}

H-5

#include <iostream>

using namespace std;

int main()
{
    int col,row;
    int i,j;
    cout<<"请输入第一个数组的行数:";
    cin>>col;
    cout<<"请输入第一个数组的列数:";
    cin>>row;
    int **ps=new int*[col];
    for(i=0;i<col;i++)
        ps[i]=new int[row];
    cout<<"请输入数组元素:"<<endl;
    for(i=0;i<col;i++)
        for(j=0;j<row;j++)
            cin>>ps[i][j];
    cout<<"第一个数组为:"<<endl;
    for(i=0;i<col;i++)
    {
        for(j=0;j<row;j++)
            cout<<ps[i][j]<<"  ";
        cout<<endl;
    }
    cout<<endl;
    cout<<"请输入第二个数组的行数:";
    cin>>col;
    cout<<"请输入第二个数组的列数:";
    cin>>row;
    int *p[col*row];
    for(i=0;i<col*row;i++)
    p[i]=new int[col*row];
    cout<<"请输入数组元素:"<<endl;
    for(i=0;i<col;i++)
        for(j=0;j<row;j++)
            cin>>p[i][j];
    cout<<"第二个数组为:"<<endl;
    for(i=0;i<col;i++)
    {
        for(j=0;j<row;j++)
            cout<<p[i][j]<<"  ";
        cout<<endl;
    }
    delete ps;
    for(i=0;i<col*row;i++)
    delete p[i];
    return 0;
}

H-6

#include <iostream>

using namespace std;
void max(int *p[],int col,int row);
int main()
{
    int col,row;
    int i,j;
    cout<<"请输入第一个数组的行数:";
    cin>>col;
    cout<<"请输入第一个数组的列数:";
    cin>>row;
    int **ps=new int*[col];
    for(i=0;i<col;i++)
        ps[i]=new int[row];
    cout<<"请输入数组元素:"<<endl;
    for(i=0;i<col;i++)
        for(j=0;j<row;j++)
            cin>>ps[i][j];
    max(ps,col,row);
    return 0;
}
void max(int **p,int col,int row)
{
    int max=0;
    for(int i=0;i<col;i++)
        for(int j=0;j<row;j++)
        {
            if(p[i][j]>max)
                max=p[i][j];
        }
    cout<<"最大值为:"<<max<<endl;
}


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

2-1

/***********编写程序,将10个整型数2、4、6...18和20
赋予一个数组,然后使用指针输出该数组各元素的值*******/

#include <iostream>
using namespace std;

int main()
{
	int a[10],*p,i;
	for(i=1;i<11;i++)
		a[i-1]=2*i;
	p=a;
	for(i=0;i<10;i++,p++)
		cout<<*p<<' ';
	cout<<endl;
}

2-2

/***********把键盘输入的一个大写字符串该写为小写字符串并显
示出来,其中大小写转换使用自定义函数lower()实现*******/

#include <iostream>
using namespace std;

void lower(char *p)
{
	while(*p!='\0')
	{
		if(*p<='Z'&& *p>='A')
		{
			*p+=32;
			p++;
		}
		else
			p++;
	}
	

}
int main()
{
	char a[50],i;
	cout<<"please input a string"<<endl;
	cin.get(a,50);
	lower(a);
	cout<<"the string after change: " ;
	for(i=0;a[i]!='\0';i++)
		cout<<a[i];
	cout<<endl;

	return 0;
}

2-3

/*******输入一个字符串,删除其中的所有空格后输出*******/

#include <iostream>
using namespace std;

int main()
{
	char a[50],b[50];
	int i,j=0;
	cout<<"please input a string"<<endl;
	cin.get(a,50);
	for(i=0;a[i]!='\0';i++)
	{
		if(a[i]!=' ')
		{
			b[j]=a[i];
			j++;
		}
	}
	b[j]='\0';
	for(i=0;b[i]!='\0';i++)
		cout<<b[i];
	cout<<endl;
	

	return 0;
}

2-4

/************编写程序,当输入整数1-12月份时,输出该月的英文名称,
输入其他整数时结束程序。例如,输入4,则输出April;输入0,则退出程
序,要求使用指针数组处理***************************************/

#include <iostream>
using namespace std;

int main()
{
	char *month[]={"January","February","March","April","May","June","July",
					"August","September","October","November","December"};
	int i;


	while(1)
	{
		
		cout<<"please input a number,input 0 to exit: "<<endl;
		cin>>i;
		if(i==0)
			break;
		else if(i<0||i>12)
			cout<<"input error,please input another number!"<<endl;
		else
			cout<<month[i-1]<<endl;
	}

	return 0;
}

2-5

/*********分别使用指针数组和二级指针输入、
输出一个二维整型数组*********************/

#include <iostream>
using namespace std;

int main()
{
	int a[2][3],*p[2];		//给指针数组赋值要通过一个二维数组间接赋值
	int **pp;
	int i,j;
	p[0]=a[0],p[1]=a[1];
	cout<<"please input 6 numbers"<<endl;
	for(i=0;i<2;i++)
		for(j=0;j<3;j++)
			cin>>p[i][j];
	pp=p;
	cout<<"the number you input is: "<<endl;
	for(i=0;i<2;i++)		//	指针数组输出
	for(j=0;j<3;j++)
		cout<<*(p[i]+j)<<" ";
	cout<<endl;
	cout<<"the number you input is: "<<endl;
	for(i=0;i<2;i++)		//  二级指针输出
	for(j=0;j<3;j++)
		cout<<*(pp[i]+j)<<" ";
	cout<<endl;

	return 0;


}

2-6

/*********输入一个3x4的矩阵,编写函数
求其中的最大元素*******************/

#include <iostream>
using namespace std;

int main()
{
	int a[3][4],i,j,max;
	cout<<"输入一个3x4的矩阵"<<endl;
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
			cin>>a[i][j];
	cout<<"你输入的矩阵为: "<<endl;
	for(i=0;i<3;i++)
	{
		for(j=0;j<4;j++)
			cout<<a[i][j]<<'\t';
		cout<<endl;
	}
	max=a[0][0];
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
		{
			if(max<a[i][j])
				max=a[i][j];
		}
	cout<<"矩阵的最大值为: "<<max<<endl;
	return 0;


}

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

#include<iostream>
using namespace std;

int main()
{
    int n;
	int a[100];
	int count=0;
	a[0]=0;
	cout<<"规则是有n个人围成一个圆圈,从第一个人开始报数,从1到3循环,凡是报3的退出圈子"<<endl;
	cout<<"输入n的值:"<<endl;
	cin>>n;
	for(int i=0;i<n;i++)
		a[i]+=1;
	int j=1;
	while(count<=n)
	{
        for(;j<=n;j++)
		if(a[j-1]%3==0)
		{
			count+=3;
		    break;
		}
		
	}
	cout<<"最后退出圈子的人是原来的"<<count-3<<"号"<<endl;
	
	
	return 0;
}

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

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

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

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

#include <iostream>
using namespace std;

void fun0(int n)	//学生的姓名
{
	 char name[5][5]={"A","B","C","D","E"};
	 cout<<"姓名:"<<name[n]<<'\t';
}

void fun1(int a,int b,int c, int d,int e)	//计算第2门课程的平均分;
{
	double ave;
	ave=double(a+b+c+d+e)/5;
	cout<<"第2门课程的平均分为"<<ave<<"分"<<endl;
	cout<<endl;
}

void fun2(int *a)//找出有2门以上成绩不及格的学生,并输出其学号和全部课程成绩
{
	int i,j=0,*b;
	b=a;
	a++;
	for(i=1;i<5;i++)
	{
		if(*a<60)
			a++,j++;
		else 
			a++;
	}

	if(j>=2)
	{
		int i;
		fun0(a[0]);
		cout<<"学号: "<<*b<<'\t';
		b++;
		cout<<"四科成绩分别为: ";
		for(i=0;i<4;i++,b++)
		cout<<*b<<'\t';
		cout<<endl;

	}
		
}

void fun3(int *a)		//平均成绩在90以上或者全部课程在85分以上的学生
{
	int i,*b,*c,j=0,sum=0;
	double ave;
	b=c=a;
	a++,b++;
	for(i=0;i<4;i++,a++)
		sum+=*a;
	ave=double(sum)/4;

	for(i=0;i<4;i++)
	{
		if(*b>=85)
			b++,j++;
		else
			b++;
	}

	if(j==4 || ave>=90)
	{
		
		fun0(a[0]);
	}

}

int main()
{
	int A[]={1,96,90,80,65};		//数组名为学生名字,第一个元素为学号,后面4个为成绩
	int B[]={2,86,85,86,87};
	int C[]={3,55,45,60,35};
	int D[]={4,95,95,95,95};
	int E[]={5,55,56,55,56};
	
	fun1(A[2],B[2],C[2],D[2],E[2]);
	cout<<"2门以上成绩不及格的学生有"<<endl<<endl;
	fun2(A);
	fun2(B);
	fun2(C);
	fun2(D);
	fun2(E);
	cout<<endl;
	cout<<"平均成绩在90以上或者全部课程在85分以上的学生有"<<endl<<endl;
	fun3(A);
	fun3(B);
	fun3(C);
	fun3(D);
	fun3(E);
	cout<<endl<<endl;



	return 0;

}


明哥这是以前作业的提交记录,网页不知道为什么显示不了啊!!

                                                                    


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值