用选择法对N个学生的成绩按从大到小的顺序排序,N个学生的成绩整数用scanf 输入,输入的成绩在[0,100]之jian

李雨菲2022-10-04 11:39:541条回答

用选择法对N个学生的成绩按从大到小的顺序排序,N个学生的成绩整数用scanf 输入,输入的成绩在[0,100]之jian,排序完成后,输入一个成绩,要求用折半查找法找出该成绩是该组中第几个元素的值(即第几名).如果该成绩不在数组中,则输出“no this score!”.
要求:
1、把排序算法写成函数形式,在主函数中输入N个数据,然后调用排序函数排序.
2、在排序过程中尽量减少数据的交换和移动.
3、把查找算法写成函数形式,在主函数中输入1个数据,然后调用查找函数排序.
输入共有三行:第一行是一个数N(N < 50),表示学生的人数;
第二行输入N个学生的成绩;
第三行输入一个数m(你要查找的成绩)
Output
第一行输出N个已经排好序的成绩,每两个成绩之间有一个空格隔开,每10个数据换一行(由大到小排列).

已提交,审核后显示!提交回复

共1条回复
chengebj 共回答了16个问题 | 采纳率87.5%
#include
int soft(int a[],int n);
int search(int a[],int n,int key);
int main()
{
int a[50];
int n;
printf("请输入学生的总数:");
scanf("%d",&n);
printf("请输入所有学生的成绩(成绩在0~100之间):n");
for(int i=0;i=0)
printf("该成绩是第%d名",(k+1));
else printf("no this score!");
return 0;
}
int soft(int a[],int n)
{
bool flag=false;
int i,j,m;
for(i=0;i
1年前

相关推荐

随机产生10个介于0到100之间的整数,分别使用选择法和冒泡法对其进行升序排序
任天堂电玩1年前1
panlinbo1982 共回答了26个问题 | 采纳率88.5%
选择法:
Private Sub Form_Click()
Dim i%,j%,a%(1 To 10)
Randomize
For i = 1 To 10
a(i) = Int(101 * Rnd)
Next i
For i = 1 To 9
k = i
For j = i + 1 To 10
If a(j) < a(k) Then k = j
Next j
If k i Then t = a(i):a(i) = a(k):a(k) = t
Next i
For i = 1 To 10
Print a(i);
Next
End Sub
冒泡法:
Private Sub Form_Click()
Dim i%,j%,a%(1 To 10)
Randomize
For i = 1 To 10
a(i) = Int(101 * Rnd)
Next i
For i = 1 To 10
For j = 1 To 10 - i
If a(j) > a(j + 1) Then
k = a(j):a(j) = a(j + 1):a(j + 1) = k
End If
Next j
Next i
For i = 1 To 10
Print a(i);
Next
End Su
C语言程序编程5. 给定一个一维数组a有N个元素,求最大值。6. 用选择法对10个数按从小到大的顺序排列。7. 有一个3
C语言程序编程
5. 给定一个一维数组a有N个元素,求最大值。
6. 用选择法对10个数按从小到大的顺序排列。
7. 有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
8. 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。
9. 从键盘输入20个整数,统计其中正数、负数及零的个数。
10. 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33
11.10个学生,每个学生3门课成绩,要求计算出每个同学的平均成绩并输出。
12.编写函数void sort(int a[],int n),其功能是对a数组中前n个元素从小到大排序。要求:在main中输入a数组的10个元素,调用函数sort实现对a数组的排序。(10分)
13.输入一个不多于5位的正整数,将其各位数输出。
14.输入10个整数,找出其中的最大值、最小值。
15.编写一个函数int prime(int x),其功能是判断x是否为素数,如是返回1,否则返回0。在main函数中输入一个整数,判断其是否为素数。例如若输入17,则输出“17:yes”,若输入12,则输出“12:no”。
16.编程:求3*3的矩阵的主对角线之和。
17.编程:将一个数组中的数值按逆序重新存放。例如,原来顺序为8, 6, 5, 4, 1;要求改为1, 4, 5, 6, 8。
18. 编程:对于给定的一个百分制成绩,输出相应的五分制成绩,设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。
19.求分数序列 …的前20项之和
20.写一函数使给定的3*3的二维整型数组转置,在主函数中输出转置后的数组。如:a= 转置后b=
aiyuhua1年前1
莫惊 共回答了22个问题 | 采纳率95.5%
1:最大公约最小公倍
#include
int main()
{
int a(int,int);
int b(int,int,int);
int u,v,h,l;
scanf("%d%d",&u,&v);
h=a(u,v);
printf("最大公约:%dn",h);
l=b(u,v,h);
printf("最小公倍:%dn",l);
return 0;
}
int a(int u,int v)
{
int t,r;
if(v>u)
{t=u;u=v;v=t;}
while((r=u%v)!=0)
{
u=v;
v=r;}
return v;
}
int b(int u,int v,int h)
{
return u*v/h;
}
2: 有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,…,求这个数列的前20项和
#include
int main()
{
int i;
float a=2,b=1,t,s=0;
for(i=1;i='A'&&c='a'&&c='0'&&c
VB中用选择法将10个整数排序,从小到大排列在另外一个文本框中输出.
VB中用选择法将10个整数排序,从小到大排列在另外一个文本框中输出.
先从中选出最小的数与第1个数交换位置;后是除第一个数外,其余9个数中选最小的数与第2个数交换位置,以此类推,选择了9次后,这个数列已按升序排列.
老哇砂1年前1
lxd80120 共回答了20个问题 | 采纳率85%
Option Explicit
Private Sub Command1_Click()
Dim A(9) As Integer, i%, m%, t%, AA%
For i = 0 To 9
Randomize
A(i) = Int(Rnd * 90) + 10
Print A(i);
Next
Print
For i = 0 To 8
t = i
For m = i + 1 To 9
If A(m) < A(t) Then t = m
Next m
If t i Then AA = A(i): A(i) = A(t): A(t) = AA
Print A(i);
Next i
Print A(9)
End Su
程序设计C 排序查找Description用选择法对N个学生的成绩按从大到小的顺序排序,N个学生的成绩整数用cin 输入
程序设计C 排序查找
Description
用选择法对N个学生的成绩按从大到小的顺序排序,N个学生的成绩整数用cin 输入,输入的成绩在[0,100]之间。排序完成后,输入一个成绩,要求用逐个比较查找的方式找出该成绩是该组中第几个元素的值(即第几名)。如果该成绩不在数组中,则输出“no this score!”。 要求: 1、把排序算法写成函数形式,在主函数中输入N个数据,然后调用排序函数排序。 2、在排序过程中尽量减少数据的交换和移动。 3、把查找算法写成函数形式,在主函数中输入1个数据,然后调用查找函数查找。
Input
输入共有三行:第一行是一个数N(N < 50),表示学生的人数; 第二行输入N个学生的成绩; 第三行输入一个数m(你要查找的成绩)
Output
第一行输出N个已经排好序的成绩,每两个成绩之间有一个空格隔开,每10个数据换一行(由大到小排列)。 第二行输出你要查找的成绩的名次(如果成绩相同,则并列)。具体的见Sample Output。

Sample Input
15
23 32 43 54 65 65 78 87 98 87 76 76 76 55 65
87
23
32 43 54 89 89 78 89 78 55 65 76 87 87 87 65 65 89 86 65 78 54 57 54
86Sample Output
98 87 87 78 76 76 76 65 65 65
55 54 43 32 23
2
89 89 89 89 87 87 87 86 78 78
78 76 65 65 65 65 57 55 54 54
54 43 32
8
soho88181年前1
semigod 共回答了13个问题 | 采纳率92.3%
#include
#define NUM 10
void order(int ar[],int n); //排序函数
void check(int ar[],int mark);//查找函数
void main()
{
int grade[NUM];
int mark,i;
while(1){
printf("学生人数N(N
1、 用选择法对10个整数递增排序.10个整数用scanf函数输入
1、 用选择法对10个整数递增排序.10个整数用scanf函数输入
选择法:假设集合A有n个元素,按以下算法完成递增排序:
(1)x05以一个元素为基准,从一个方向开始扫描,比如以A[0]为基准,从左至右扫描;
(2)x05用A[0]右边的A[1]-A[n-1]与A[0]比较,找出最小的元素,将其与A[0]交换;
(3)x05将基准位置右移一位,即移到A[1],重复(1)和(2)动作,比如,以A[1]为基准,找出A[1]-A[n-1]中最小的,将其与A[1]交换.一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序).
会有奇迹吗1年前1
轻羽划风 共回答了28个问题 | 采纳率92.9%
2010-12-21 11:23 #include
using namespace std;
int main()
{
int a[10];
cout
VB语言随机产生10个10-99内的整数,分别用冒泡法和选择法将数据从大到小排序并显示结果
日出于海1年前1
hivking 共回答了22个问题 | 采纳率81.8%
Private Sub Form_click()
Dim A(1 To 10)
Randomize
For I = 1 To 10
A(I) = Int(Rnd * 90) + 10
Next I
For I = 1 To 9 '选择法
p = I
For J = I + 1 To 10
If A(J) < A(I) Then
p = J
End If
Next J
tem = A(I)
A(I) = A(p)
A(p) = tem
Next I
For I = 1 To 10
A(I) = A(11 - I)
Next I
For I = 1 To 9 '冒泡法
For J = 1 To 10 - I
If A(J) > A(J + 1) Then
tem = A(I)
A(I) = A(p)
A(p) = tem
End If
Next J
Next I
For I = 1 To 10
A(I) = A(11 - I)
Next I
End Sub
已经调试过
那道题我都看不懂 那两圆盘是干嘛的?怎么个选择法?要完整思路
iii11221年前2
wsj711 共回答了16个问题 | 采纳率93.8%
粒子在进入左边圆盘和到达右边圆盘这段时间内,粒子通过L,圆盘转过这么多度.