1 条题解

  • 0
    @ 2025-4-7 21:29:27

    C :

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct _node{
    	int num;
    	int grade;
    	struct _node *next;
    }NODE;
    
    int main(int argc,char* argv[])
    {
    	NODE *head=NULL;
    	int n,m;
    	scanf("%d%d",&n,&m);
    	int input_num,input_grade;
    	int i;
    	for (i=0;i<m+n;i++)
    	{
    		scanf("%d%d",&input_num,&input_grade);
    		NODE *p=(NODE*)malloc(sizeof(NODE));
    		p->num=input_num,p->grade=input_grade,p->next=NULL;
    		NODE *last=head;
    		if (last)
    		{
    			while (last->next)
    			{
    				last=last->next; 
    			}
    			last->next=p;
    		}
    		else
    		{
    			head=p;
    		}
    	}
    	NODE *head_result=NULL;
    	/*排序*/
    	int cnt;
    	int max_num,max_grade;
    	NODE *sort=head;
    	for (i=0;i<m+n;i++)
    	{
    		if (i==0) max_num=sort->num,max_grade=sort->grade;
    		else if (sort->num>max_num) max_num=sort->num,max_grade=sort->grade;
    		sort=sort->next;
    	}
    	int last_min_num=-1;
    	for (cnt=0;cnt<m+n;cnt++)
    	{
    		sort=head;
    		int min_num=max_num,min_grade=max_grade;
    		for (i=0;i<m+n;i++)
    		{
    			if (sort->num<min_num && sort->num>last_min_num) min_num=sort->num,min_grade=sort->grade;
    			sort=sort->next;
    		}
    		NODE *p=(NODE*)malloc(sizeof(NODE));
    		p->num=min_num,p->grade=min_grade,p->next=NULL;
    		NODE *last=head_result;
    		if (last)
    		{
    			while (last->next)
    			{
    				last=last->next;
    			}
    			last->next=p;
    		}
    		else
    		{
    			head_result=p;
    		}
    		last_min_num=min_num;
    	}
    	/*打印链表*/
    	NODE *print=head_result;
    	while (print)
    	{
    		printf("%d %d\n",print->num,print->grade);
    		print=print->next;
    	}
    	return 0;
    }
    

    C++ :

    #include<iostream>
    #include<vector>
    using namespace std;
    int main()
    {
    	int a, b;
    	cin >> a >> b;
    	vector<int>studentnumber(0);
    	vector<int>studentsource(0);
    	for (int i = 0; i < a + b; i++)
    	{
    		int current;
    		cin >> current;
    		studentnumber.push_back(current);
    		cin >> current;
    		studentsource.push_back(current);
    	}
    	for (int i = 0; i < studentnumber.size();i++)
    	for (int j = studentnumber.size() - 1; j>0;j--)
    	if (studentnumber[j] < studentnumber[j - 1])
    	{
    		int current = studentnumber[j];
    		studentnumber[j] = studentnumber[j - 1];
    		studentnumber[j - 1] = current;
    		current = studentsource[j];
    		studentsource[j] = studentsource[j - 1];
    		studentsource[j - 1] = current;
    	}
    	for (int i = 0; i < studentnumber.size(); i++)
    		cout << studentnumber[i] << " " << studentsource[i] << endl;
    	return 0;
    }
    
    • 1

    C语言程序设计教程(第三版)课后习题11.8

    信息

    ID
    1536
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者