• PTA第二次作业


    5-1

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    using namespace std;
    
    class myDate
    {
    	private:
    		int year;
    		int mouth;
    		int day;
    		
    	public:
    		myDate(int y,int m,int d):year(y),mouth(m),day(d){};
    		void display();
    };
    
    class myTime
    {
    	private:
    		int hour;
    		int mini;
    		
    	public:
    		myTime(int h,int min):hour(h),mini(min){};
    		void display();
    };
    
    void myDate::display()
    {
    	printf("%04d/%02d/%02d ",year,mouth,day);
    }
    
    void myTime::display()
    {
    	printf("%02d:%02d
    ",hour,mini);
    }
    
    int main()
    {
    	int y,m,d,h,min;
    	int i,j;
    	while(scanf("%d%d%d%d%d",&y,&m,&d,&h,&min) != EOF)
    	{
    		if(y == 0)break;
    		
    		myDate Date(y,m,d);
    		myTime Time(h,min);
    		
    		Date.display();
    		Time.display();
    	}
    	
    	return 0;
    }
    

    5-2

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <string.h>
    using namespace std;
    
    class calculate
    {
    	public:
    		int s[105];
    		
    		calculate()
    		{
    			memset(s,0,sizeof(s));
    		}
    		void found();
    };
    
    void calculate::found()
    {
    	int l,r;
    	int i,j;
    	
    	l = r = 1;
    	
    	int tot = 0;
    	int cnt = 0;
    	for(i = 1; i <= 7; i++)//i左 
    	{
    		cnt = 0;
    		
    		for(j = i; j <= 7; j++)//j右 
    		{
    			cnt += s[j];
    			
    			if(cnt > tot)
    			{
    				tot = cnt;
    				l = i;
    				r = j;
    			}
    			else if(cnt == tot) 
    			{
    				if(r - l <= j - i && tot == cnt)
    				//相等的时候 取区间范围比较小的
    				continue;
    				
    				tot = cnt;
    				l = i;
    				r = j;
    			}
    		}
    	}
    	
    	if(tot <= 0)
    	printf("won't buy!
    ");
    	else
    	printf("%d %d %d
    ",tot,l,r);
    }
    
    int main()
    {
    	int i,j;
    	
    	while(1)
    	{
    	    calculate cal;
    		scanf("%d%d%d%d%d%d%d",&cal.s[1],&cal.s[2],&cal.s[3],
    	    &cal.s[4],&cal.s[5],&cal.s[6],&cal.s[7]);
    	    
    	    if(cal.s[1] == 0 && cal.s[2] == 0 && cal.s[3] == 0 && cal.s[4] == 0 
    		&& cal.s[5] == 0 && cal.s[6] == 0 && cal.s[7] == 0)break;
    	    
    	    cal.found();
    	}
    	
    	return 0;
    }
    //-1 -1 1 -1 1 -1 1
    

    5-3

    继承

    #include <cstdio>
    #include <iostream>
    #include <sstream>
    #include <string>
    using namespace std;
    
    class Group
    {
        protected:
            string name;//姓名
        public:
            virtual void display()=0;//显示考核成绩
    };
    
    //====
    
    class Group_A : public Group
    {
    	public:
    		int getscore;
    		void display();
    	    Group_A(string s,int score):getscore(score){name = s;};
    };
    
    void Group_A::display()
    {
    	cout << name << " " << 'A' << " " << getscore << endl;
    }
    
    //====
    
    class Group_B : public Group
    {
    	public:
    		int getscore;
    		void display();
    		Group_B(string s,int score):getscore(score){name = s;};
    };
    
    void Group_B::display()
    {
    	cout << name << " " << 'B' << " " << getscore << endl;
    }
    
    //====
    
    int cal_Ascore(string s,int len)
    {
    	int i,j;
    	int win = 0;
    	int lose = 0;
    	int tot = 0;
    	string play;
    	stringstream stream;
    	
    	for(i = 3 + len; i < s.length(); i++)
    	{
    		if(s[i] == ' ')
    		{
    			if(play != "")
    			{
    			    stream << play;
    			    stream >> win;
    			    stream.clear();
    			
    			    play = "";
    			}
    			
    			continue;
    		}
    		
    		play += s[i];
    	}
    	
    	if(play != "")
    	{
    		stream << play;
    		stream >> lose;
    		stream.clear();
    	}
    	
    	tot = 2 * win - lose;
    	
    	return tot;
    }
    
    int cal_Bscore(string s,int len)
    {
    	int tot = 0;
    	int pre = 0;
    	int beh = 0;
    	int i,j;
    	
    	string play;
    	stringstream stream;
    	
    	for(i = 3 + len; i < s.length(); i++)
    	{
    		if(s[i] == ':')
    		{
    			stream << play;
    			stream >> pre;
    			stream.clear();
    			
    			play = "";
    			continue;
    		}
    		else if(s[i] == ' ')
    		{
    			stream << play;
    			stream >> beh;
    			stream.clear();
    			
    			if(pre > beh)
    			{
    				tot += pre - beh;
    			}
    			else if(pre < beh)
    			{
    				tot -= beh - pre;
    			}
    			
    			pre = 0;
    			beh = 0;
    			play = "";
    			continue;
    		}
    		else
    		{
    			play += s[i];
    		}
    	}
    	
    	if(play != "")
    	{
    		stream << play;
    		stream >> beh;
    		stream.clear();
    		
    		if(pre > beh)
    	    {
    		    tot += pre - beh;
    		}
    		else if(pre < beh)
    		{
    			tot -= beh - pre;
    		}
    	}
    	
    	return tot;
    }
    
    //====
    
    int main()
    {
    	Group *pg[20];
    	
    	int cnt = 1;
    	int A_win;
    	int A_lose;
    	int i,j;
    	while(1)
    	{
    		string Gsta;
    		
    		getline(cin,Gsta);
    		
    		if(Gsta[0] == '0')break;
    		
    		string name;
    		int namelen = 0;
    		int score = 0;
    		
    		for(i = 2; i < Gsta.length(); i++)
    		{
    			if(Gsta[i] == ' ')break;
    			
    			name += Gsta[i];
    			namelen ++;
    		}
    		
    		if(Gsta[0] == 'A')
    		{
    			score = cal_Ascore(Gsta,namelen);
    			
    			pg[cnt++] = new Group_A(name,score);
    			
    			//Group_A A1(name,score);
    			//A1.display();
    		}
    		else if(Gsta[0] == 'B')
    		{
    			score = cal_Bscore(Gsta,namelen);
    			
    			pg[cnt++] = new Group_B(name,score);
    			//Group_B B1(name,score);
    			//B1.display();
    		}
    	}
    	
    	for(i = 1; i < cnt; i++)
    	{
    		pg[i] -> display();
    	}
    	
    	return 0;
    }
    

    5-4

    说好的顺序表写成了链表orz。

    #include <cstdio>
    #include <iostream>
    #include <cstdlib>
    #include <string>
    #define LEN sizeof(SeqList)
    using namespace std;
    
    struct SeqList
    {
    	int data;
    	SeqList* next;
    };
    
    typedef SeqList* point;
    
    point List_Creat(int tot)
    {
    	point head;
    	point p1,p2;
    	head = (point)malloc(LEN);
    	if(head == NULL)
    	{
    		printf("Overflow
    ");
    		exit(1);
    	}
    	
    	head = NULL;
    	
    	p1 = (point)malloc(LEN);
    	if(p1 == NULL)
    	{
    		printf("Overflow
    ");
    		exit(1);
    	}
    	
    	scanf("%d",&p1 -> data);
    	
    	if(tot == 1)
    	{
    		head = p1;
    		head -> next = NULL;
    		return head;
    	}
    	
    	for(int i = 1; i < tot; i++)
    	{
    		if(head == NULL)
    		{
    			head = p1;
    		}
    		else
    		{
    			p2 -> next = p1;
    		}
    		
    		p2 = p1;
    		p1 = (point)malloc(LEN);
    		if(p1 == NULL)
    		{
    			printf("Overflow
    ");
    			exit(1);
    		}
    		
    		scanf("%d",&p1 -> data);
    	}
    	
    	p2 -> next = p1;
    	p1 -> next = NULL;
    	
    	return head;
    }
    
    point Print(point head)
    {
    	point p;
    	p = head;
    	printf("%d",p -> data);
    	p = p -> next;
    	
    	while(p != NULL)
    	{
    		printf(" %d",p -> data);
    		p = p -> next;
    	}
    	
    	printf("
    ");
    }
    
    point Insert(point head,int num)
    {
    	point p,p1,p2;
    	p = (point)malloc(LEN);
    	if(p == NULL)
    	{
    		printf("Overflow
    ");
    		exit(1);
    	}
    	
    	p -> data = num;
    	p -> next = NULL;
    	
    	p1 = p2 = head;
    	if(head -> data >= num)
    	{
    		p -> next = head;
    		head = p;
    		return head;
    	}
    	else
    	{
    		while(p1 -> next != NULL)
    		{
    			if(p1 -> data >= num)
    			{
    				break;
    			}
    			else
    			{
    				p2 = p1;
    				p1 = p1 -> next;
    			}
    		}
    		
    		if(p1 -> next == NULL && p1 -> data < num)
    		{
    			p1 -> next = p;
    			p -> next = NULL;
    		}
    		else
    		{
    			p2 -> next = p;
    			p -> next = p1;
    		}
    	}
    	
    	return head;
    } 
    
    int main()
    {
    	int t;
    	int i,j;
    	scanf("%d",&t);
    	while(t--)
    	{
    		int n;
    		scanf("%d",&n);
    		point head;
    		head = List_Creat(n);
    		
    		int i_data;
    		scanf("%d",&i_data);
    		head = Insert(head,i_data);
    		
    		printf("size=%d:",n + 1);
    		
    		Print(head);
    		
    	}
    	return 0;
    }
    
  • 相关阅读:
    ofbiz定时任务配置
    MySQL重置root密码
    谷歌默认最小字体解决方案
    CSS样式-文字在一行内显示不换行,超出部分用省略号(white-space、overflow、text-overflow、word-wrap、word-break)
    使用gulp自动化打包合并前端静态资源(CSS、JS文件压缩、添加版本号)
    JS判断两个日期是否为同一周
    AES、DES加解密方法(Java和JS编程)
    Nodejs代理解决开发环境下跨域问题
    js的垃圾收集机制以及写代码如何处理
    手机端黑屏时定时器无法执行
  • 原文地址:https://www.cnblogs.com/qq952693358/p/5539675.html
Copyright © 2020-2023  润新知