复习数组的运用作业

 数组排序题目描述对数组的元素按从小到大进行排序。

输入有两行第一行有一个整数n( 5 <= n <= 10 ) 第二行有n个整数输出输出更新后的数组

样例输入复制81 2 3 6 8 7 4 5

输出复制1 2 3 4 5 6 7 8

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[100];
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	} 
	for(int i=0;i<n-1;i++)
	{
		for(int j=0;j<n-1;j++)
		{
			if(a[j]>a[j+1])
			{
				swap(a[j],a[j+1]);
			}
		}
	}
	for(int i=0;i<n;i++)
	{
	    cout<<a[i];
	}

	
    return 0;
}

数字和排序题目描述输入n个不超过30000的整数(n≤10)。然后求出每个数的数字和,再按每个数的数字和由小到大排列输出。

输入第一行为整数n 第二行为n个整数

输出由小到大排列的每个数的数字和(每个数之间保留一个空格)

样例输入复制433 104 87 16

输出复制5 6 7 15

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[2010];
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int t;
		cin>>t;
		int s=0;
	    while(t!=0)
	    {
		    s=s+t%10;
		    t=t/10;
	    }
	    
	    a[i]=s;
	} 

	
	for(int i=0;i<n-1;i++)
	{
		for(int j=0;j<n-1-i;j++)
		{
			if(a[j]>a[j+1])
			{
				swap(a[j],a[j+1]);
			}
		}
	}
	for(int i=0;i<n;i++)
	{
	    cout<<a[i];
	}

	
    return 0;
}

个位排序题目描述输入n个不超过30000的整数(n≤10)。按每个数的个位大小,由小到大排列,如果个位相同,按照本身大小从小到大输出。

输入第一行为整数n 第二行为n个整数

输出按照要求由小到大排列的数,空格隔开

样例输入复制633 104 87 16 95 55

输出复制33 104 55 95 16 87

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[2010];
    int n=0;
	cin>>n;
	for(int i=0;i<n-1;i++)
	{
		for(int j=0;j<n-1-i;j++)
		{
			if(a[j]%10>a[j+1]%10)
			{
				swap(a[j],a[j+1]);
			}
			else if(a[j]%10==a[j+1]%10&&a[j]>a[j+1])
			{
				swap(a[j],a[j+1]);
			}
		}
	}
	
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<"   ";
	}

	
    return 0;
}

奇偶排序描述给定10个整数的序列,要求对其重新排序。排序要求:1.奇数在前,偶数在后;2.奇数按从大到小排序;3.偶数按从小到大排序。

输入输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。

输出按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[2000];
    int la;
    int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int t;
		cin>>t;
		if(t%2=+1)
		{
			a[la]=t;
			la++;
		}
	}
	for(int i=0;i<la-1;i++)
	{
		for(int j=0;j<j-1-i;j++)
		{
			if(a[j]>a[j+1])
			{
				swap(a[j],a[j+1]);
			}
		}
	}
	for(int i=0;i<la;i++)
	{
		if(i==la-1)
		{
			cout<<a[i];
		}
		else{
			cout<<a[i]<<",";
		}
	}
	return 0;
}

奇偶排序描述给定10个整数的序列,要求对其重新排序。排序要求:1.奇数在前,偶数在后;2.奇数按从大到小排序;3.偶数按从小到大排序。

输入输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。

输出按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开

#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{
	int a[2000];
	n=10;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	
	for(int i=0;i<n-1;i++)
	{
		for(int j=0;j<n-1-i;j++)
		{
			if(a[j]%2==0&&a[j+1]%2==1)
			{
				swap(a[j],a[j+1]);
			}
			else if(a[j]%2==1&&a[j+1]%2==1)
			{
				swap(a[j],a[j+1]);
			}
			else if(a[j]%2==0&&a[j+1]%2==0)
			{
				swap(a[j],a[j+1]);
			}
		}
	}
	for(int i=0;i<n;i++)
	{
		cout<<a[i]<<" ";
	}
	return 0;
}

寻找第K大数题目描述N个小朋友在一起做游戏。每个小朋友在自己的硬纸板上写一个数,然后同时举起来。接着,小y老师提一个问题,看哪个小朋友先抢答出来。问题是:在这N个数中,第K大的是哪个数?

输入输入文件的第一行为2个整数,依次为N和K( K <= N <= 1000 )。下面N行,每行为一个整数,表示从第1个小朋友到第N个朋友分别写的数。假设这些小朋友只知道-32768~32767之间的数。输出

输出文件只有一行,就一个数,为第K大的那个数。

样例输入复制4 31224

输出复制2

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[100];
	int n;
	cin>>n;
	int s;
	cin>>s;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	} 
	for(int i=0;i<n-1;i++)
	{
		for(int j=0;j<n-1;j++)
		{
			if(a[j]>a[j+1])
			{
				swap(a[j],a[j+1]);
			}
		}
	}
	for(int i=0;i<n;i++)
	{
	    cout<<a[s];
	}
	
	
    return 0;
}

求中位数题目描述中位数指的是一组数,如果按照大小排序排好后最中间的那个数的值,如果有偶数个元素,那么就是最中间两个数的平均数!比如:2 5 8 1 6,排序后的结果为1 2 5 6 8,那么这组数的中位数就是5!再比如:8 9 1 2 3 0,排序后的结果为0 1 2 3 8 9,那么这组书的中位数就是(2+3)/2=2.5

输入第一行:一个整数n代表有n个数(n≤100)第二行:n个数的值

输出中位数(结果保留1位小数)

样例输入复制52 5 8 1 6

输出复制5.0

#include<bits/stdc++.h>

using namespace std;

int main()

{

    int a[100];
    int n=0;
    int i,j;
    for(int i=0;i<n;i++
    {
        cin>>a[i];

    }

    for (i = 0; i < n - 1; i++)

    {

        for (j = 0; j < n - 1 - i; j++)

        {

             if (a[j] > a[j + 1])

             {

                 int temp = a[j];

                 a[j] = a[j + 1];

                 a[j + 1] = temp;

             }

        }

    }

    if (n % 2 == 1)
    {
        cout << a[n / 2] << endl;
    }

    else

    {

        cout << (double)(a[n / 2] + a[n / 2 - 1]) / 2 << endl;//

    }

    return 0;

}

优秀成绩的平均分题目描述期中考试结束了,老师想知道这次语文考试前5名同学的平均分是多少请你编程来帮老师计算一下!

输入第一行,一个整数n,代表本次考试的总人数(5<=n<=100)第二行n个整数,代表n个人的语文成绩(这n个人的分数是无序的)

输出语文成绩前5名同学的平均分(结果保留1位小数)

样例输入复制1098 98 100 96 99 90 91 87 80 100

输出复制99.0

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[100];
	int n;
	cin>>n;
	int s=0;
	int p=0;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	} 
	for(int i=0;i<n-1;i++)
	{
		for(int j=0;j<n-1;j++)
		{
			if(a[j]>a[j+1])
			{
				swap(a[j],a[j+1]);
			}
		}
	}
	for(int i=0;i<5;i++)
	{
	   s=s+a[i];
	}
	p=s/5;
	
	cout<<p; 
	
    return 0;
}

题目描述期末考试语文成绩出来了,老师在课堂上公布了每位同学的语文成绩,小明想查一下自己的成绩在班级能排到第几名。请你编写一个程序,根据给定的所有同学的语文成绩以及小明的语文成绩,计算出小明的排名。(假设所有人成绩都不相等)

样例输入复制598 100 99 80 8798

输出复制3

输入第一行一个整数n代表学生总人数(n<=100)第二行,有n个整数,代表n个语文成绩(这些成绩都是0~100之间的分数)第三行一个整数x代表小明同学的语文成绩输出一个整数,代表小明同学的名次

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[100];
	int n;
	cin>>n;
	int s=0;
	int p=0;
	cin>>s;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	} 
	a[n-1]=s;
	for(int i=0;i<n-1;i++)
	{
		for(int j=0;j<n-1;j++)
		{
			if(a[j]>a[j+1])
			{
				swap(a[j],a[j+1]);
			}
		}
	}
	
	
	for(int i=0;i<n;i++)
	{
		p++;
        if(a[i]=s)
        {
        	cout<<p;
		}
    } 
	
    return 0;
}

病人排队描述病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:

1.老年人(年龄>= 60岁)比非老年人优先看病。

2. 老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。

3.非老年人按登记的先后顺序看病。

输入第1行,输入一个小于100的正整数,表示病人的个数;后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。

输出按排好的看病顺序输出病人的ID,每行一个

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[100];
	int n;
	cin>>n;
	int s=0;
	int p=0;
	cin>>s;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	} 
	a[n-1]=s;
	for(int i=0;i<n-1;i++)
	{
		for(int j=0;j<n-1;j++)
		{
			if(a[j]>a[j+1])
			{
				swap(a[j],a[j+1]);
			}
		}
	}
	
	
	for(int i=0;i<n;i++)
	{
		p++;
        if(a[i]=s)
        {
        	cout<<p;
		}
    } 
	
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值