LHL S PTA 实验9. 期中综合测试

LHL’S PTA 实验9. 期中综合测试

7-1 就不告诉你 (15分)
做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三。”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积。

53.jpg

输入格式:
输入在第一行给出两个不超过 1000 的正整数 A 和 B,其间以空格分隔。
LHL S PTA 实验9. 期中综合测试_第1张图片
输出格式:
在一行中倒着输出 A 和 B 的乘积。

输入样例:
5 7
输出样例:
53

#include 
using namespace std;

int main()
{
	int q[100], a, b, t = 0, flag = 1;
	cin>>a>>b;
	int tmp = a*b;
	while(tmp)
	{
		q[t++] = tmp%10;
		tmp /= 10;
	}
	for(int i = 0;i < t;i++)
	{
		if(q[i] == 0 && flag) continue; //注意去除前导零
		else flag = 0;
		cout<<q[i];
	}
	return 0;
}

7-2 小于m的最大的10个素数 (15分)
给定一个整数m(50

输入格式:
输入在一行中给出一个正整数m(50

输出格式:
在一行中按递减顺序输出10个满足条件的素数,每个素数输出占6列。没有其它任何附加格式和字符。

输入样例:
229
输出样例:
227 223 211 199 197 193 191 181 179 173
感谢中国青年政治学院的同学修正数据!

#include
int main(){
int m,n,i,count=0;
scanf("%d",&n);
m=n-1;
for(m=m;m>2;m--)
{
for(i=2;i<=m/2;i++)
if(m%i==0)
break;
if(i>=m/2&&m!=1){//i需要大于m/2
printf("%6d",m);
count++;
}
if(count%10==0&&count!=0)//不是10的倍数且不能为0
break;
}
return 0;
}

7-3 方阵循环右移 (15分)
本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。

输入格式:
输入第一行给出两个正整数m和n(1≤n≤6)。接下来一共n行,每行n个整数,表示一个n阶的方阵。

输出格式:
按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。

输入样例:
2 3
1 2 3
4 5 6
7 8 9
输出样例:
2 3 1
5 6 4
8 9 7


#include  
int main(){  
    int a[10][10],i,j,n,m;  
    scanf("%d %d",&m,&n);  
    for(i=0;i<n;i++)  
        for(j=0;j<n;j++)  
            scanf("%d",&a[i][j]);  
    m=m%n;  //可能会出现m比n还大所以取余数   
    for(i=0;i<n;i++){  
        for(j=n-m;j<n;j++)   //先输出 右移的部分   
            printf("%d ",a[i][j]);  
        for(j=0;j<n-m;j++)   //输出剩下的部分   
            printf("%d ",a[i][j]);  
        printf("\n");  
    }         
    return 0;   
}

7-4 Wifi密码 (15分)
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。谢谢合作!!~”—— 老师们为了促进学生学习也是拼了…… 本题就要求你写程序把一系列题目的答案按照卷子上给出的对应关系翻译成 wifi 的密码。这里简单假设每道选择题都有 4 个选项,有且只有 1 个正确答案。

LHL S PTA 实验9. 期中综合测试_第2张图片

输入格式:
输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行按照 编号-答案 的格式给出一道题的 4 个选项,T 表示正确选项,F 表示错误选项。选项间用空格分隔。

输出格式:
在一行中输出 wifi 密码。

输入样例:
8
A-T B-F C-F D-F
C-T B-F A-F D-F
A-F D-F C-F B-T
B-T A-F C-F D-F
B-F D-T A-F C-F
A-T C-F B-F D-F
D-T B-F C-F A-F
C-T A-F B-F D-F
输出样例:
13224143

#include
using namespace std;
int main(){
    int n;
    cin>>n;
    string str;
    for(int i=0;i<n*4;i++){
        cin>>str;
        if(str[2]=='T') cout<<(int)str[0]-'A'+1;    
    }
    return 0;
}

7-5 设计一个矩形类Rectangle并创建测试程序(C++) (15分)
设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域,它们分别表示矩形的宽和高。width和height的默认值都为1.该类包括矩形类的无参构造函数(默认构造函数);一个width和height为指定值的矩形构造函数;一个名为getArea( )的函数返回矩形的面积;一个名为getPerimeter( )的函数返回矩形的周长。请实现这个类。编写一个测试程序,创建一个Rectangle对象,从键盘输入矩形的宽和高,然后输出矩形的面积和周长。

输入格式:
3.5 35.9(第一个数表示矩形的宽,第二个数表示矩形的高,中间是空间分隔。)

输出格式:
125.65 (第一行输出矩形的面积) 78.8 (第二行输出矩形的周长)

输入样例:
3.5 35.9
输出样例:
125.65
78.8

#include "iostream"
using namespace std;
class Rectangle {
    float width,height;
public:
    Rectangle()
    {

    }
    Rectangle(float a=1, float b=1)
    {
        width=a;
        height=b;
    }

    float getArea()
    {
        return width*height;
    }

    float get()
    {
        return 2*(width+height);
    }
};
int main()
{
    float m,n;
    cin>>m>>n;
    Rectangle  ok(m,n);
    float x,y;
    x=ok.getArea();
    y=ok.get();
    cout<<x<<endl;
    cout<<y<<endl;
}

7-6 动物世界 (15分)
补充程序 :

1、实现Mammal类的方法

2、由Mammal类派生出Dog类,在Dog类中增加itsColor成员(COLOR类型)

3、Dog类中增加以下方法:

constructors: Dog()、Dog(int age)、Dog(int age, int weight)、Dog(int age, COLOR color)、 Dog(int age, int weight, COLOR color)、~Dog()

accessors: GetColor()、SetColor()

Other methods: WagTail()、BegForFood() ,并实现以上这些方法 。

提示:类似Speak()、WagTail()这些动作,函数体可以是输出一句话。比如:Mammal is spaeking… , The Dog is Wagging its tail…

4、补充主函数的问号部分,并运行程序,检查输出是否合理。

enum COLOR{ WHITE, RED, BROWN, BLACK, KHAKI };

class Mammal
{
public:
//constructors
Mammal();
Mammal(int age);
~Mammal();

	//accessors
	int GetAge() const;
	void SetAge(int);
	int GetWeight() const;
	void SetWeight(int);
	
	//Other methods	
	void Speak() const;
	void Sleep() const;		
protected:
	int itsAge;
	int itsWeight;

};

int main()
{
Dog Fido;
Dog Rover(5);
Dog Buster(6, 8);
Dog Yorkie(3, RED);
Dog Dobbie(4, 20, KHAKI);
Fido.Speak();
Rover.WagTail();
cout << “Yorkie is " << ?? << " years old.” << endl;
cout << “Dobbie weighs " << ?? << " pounds.” << endl;
return 0;
}

输入格式:

输出格式:
按照程序格式输出。

输入样例:
在这里给出一组输入。例如:


输出样例:
在这里给出相应的输出。例如:

Mammal is speaking…
The dog is wagging its tail…
Yorkie is 3 years old.
Dobbie weighs 20 pounds.

#include
#include
#include
#include
#include
#include
#include


using namespace std;
enum COLOR { WHITE, RED, BROWN, BLACK, KHAKI };
//枚举类型,定义的名字叫COLOR,变量有后边这一串(WHITE, RED, BROWN, BLACK, KHAKI )
//在这里是好看的?
//有给他赋值吗?

/*基类*/
class Mammal
{
public:
    //constructors
    Mammal(){}
    Mammal(int age)
    {
        itsAge=age;
    }
    ~Mammal(){}

    //accessors
    int GetAge() const
    {
        return itsAge;
    }
    void SetAge(int n)
    {
        itsAge=n;
    }
    int GetWeight() const
    {
        return itsWeight;
    }
    void SetWeight(int n)
    {
        itsWeight=n;
    }

    //Other methods
    void Speak() const//这个得好好写
    {
        cout<<"Mammal is speaking..."<<endl;
    }
    void Sleep() const//看起来可以瞎写
    {
        cout<<"Mammal is sleeping..."<<endl;
    }
protected:
    int itsAge;
    int itsWeight;
};

/*派生类*/

class Dog:public Mammal
{
public://Dog() {}//构造函数1号
    Dog(int age):Mammal(age) {}//构造函数2号
    Dog(int age,int weight):Mammal(age)//构造函数3号
    {
       SetWeight(weight);
    }
    Dog(int age, COLOR color):Mammal(age)//构造函数4号
    {
        colors=color;
    }
    Dog(int age, int weight, COLOR color):Mammal(age)//构造函数5号
    {
         SetWeight(weight);
        colors=color;
    }
    ~Dog() {}

    void WagTail() const//这个得好好写
    {
        cout<<"The dog is wagging its tail..."<<endl;
    }
    void BegForFood()  const//看起来可以瞎写
    {
        cout<<"The dog is begging for food..."<<endl;
    }
protected:
    COLOR colors;//所以其实没啥用?
};
int main()
{
	Dog Fido;
	Dog Rover(5);
	Dog Buster(6, 8);
	Dog Yorkie(3, RED);
	Dog Dobbie(4, 20, KHAKI);
	Fido.Speak();
	Rover.WagTail();
	cout << "Yorkie is " << Yorkie.GetAge() << " years old." << endl;
	cout << "Dobbie weighs " << Dobbie.GetWeight() << " pounds." << endl;
	return 0;
}


7-7 最矮的巨人 (10分)
操场上有N x N个“巨人”按N行N列的矩阵形式列队,请编程找出该方阵中所有“最矮的巨人”。 所谓“最矮的巨人”是指,该巨人在其所在行中,身高最高(没人比其更高);且在其所在列中,身高最矮(没人比其更矮)。

输入格式:
输入的第1行给出一个正整数n ( 1 ≤ n ≤ 6 ),表示方阵的行列数。随后n行,每行给出n个整数,代表巨人的身高,其间以空格作分隔。

输出格式:
如果找到至少一个“最矮巨人”,输出如下:
(第1个最矮巨人所在行下标,第1个最矮巨人所在列下标)
(第2个最矮巨人所在行下标,第2个最矮巨人所在列下标)

(第n个最矮巨人所在行下标,第n个最矮巨人所在列下标)

如果没有找到“最矮巨人”,输出如下: NONE

注意:即便输出结果只有一行,也要输出换行符。行列下标均从0开始计数。

输入样例:
4
1 7 4 6
4 6 3 6
1 6 1 6
0 7 8 7
输出样例:
(1,1)
(1,3)
(2,1)
(2,3)

两分题
#include 
#include
#include
using namespace std;

int main()
{
printf("NONE");
	
	 
}

这题大概用递归思考会简单一些,因为,在同一行中,有相同的但是都是最大的,都需要讨论


#include 
using namespace std;

int main()
{
	int a[6][6]; // 最多6行6列的方阵 
	int n;
	cin>>n;
	for (int i=0; i<n; i++)    // 输入方阵的数据 
	for (int j=0; j<n; j++)
		cin>>a[i][j];  
	bool flag=false;  // 假设没有找到 
	int jmax;  // 某行最大的元素的列下标
	 
	for (int i=0; i<n; i++)  // 扫描每一行 
	{
		jmax=0;  // 假设第1个元素是最大的
		for (int j=1; j<n; j++){  // 找到该行的最大元素 
			if (a[i][j]>a[i][jmax]) 
				jmax=j; 
		} 
		// a[i][jmax]只是该行第一个最大元素,后面可能还有一样大的最大元素 
		for (int k=jmax; k<n; k++){   
			if (a[i][jmax]==a[i][k]){  // 只要是本行最大元素就要判断是否为最矮巨人 
				int x;
				for (x=0; x<n; x++)
					if (a[x][k]<a[i][k]) break;  // 说明a[i][k]不是当前列最小的 
				if (x==n){ // 不是break跳出的,所以 a[i][k]是最矮巨人 
					flag=true; // 找到最矮巨人,flag设置为true
					cout<<"("<<i<<","<<k<<")"<<endl; 
				}
			}
		} 
	} 
	if (!flag) cout<<"NONE";  // 如果flag等于false,说明没有找到最矮巨人 
	return 0;
}

你可能感兴趣的:(LHL'PTA)