从键盘输入10个学生某门课的成绩,将这些成绩按降序排序,并输出排好序的成绩。并统计出不及格的人数并输出。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
    int arr[10];
    int j, k, i, t, L;
    L = 0;
    printf("输入十名同学的成绩:\n");
    for (i = 0; i < 10; i++)
        scanf("%d", &arr[i]);
    for (i = 0; i < 9; i++)
        for (j = 0; j < 9; j++)
            if (arr[j] < arr[j + 1])
            {   t = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = t;
            }
    printf("降序为:");
    for (i = 0; i < 10; i++)
    { printf("%d ", arr[i]);
       
        if (arr[i] < 60)
        L++;
    }
    printf("\n");
    printf("不及格人数为:%d",L);
    return 0;
}

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用冒泡排序或选择排序等算法来实现对10个成绩降序排序。具体步骤如下: 1. 从键盘输入10个成绩,存储到一个数组中。 2. 使用冒泡排序或选择排序等算法对数组进行降序排序。 3. 输出排好序10个成绩。 示例代码如下: ```python # 从键盘输入10个成绩 scores = [] for i in range(10): score = float(input("请输入第%d个成绩:" % (i+1))) scores.append(score) # 冒泡排序实现降序排序 for i in range(len(scores)-1): for j in range(len(scores)-i-1): if scores[j] < scores[j+1]: scores[j], scores[j+1] = scores[j+1], scores[j] # 输出排好序10个成绩 print("降序排列后的成绩为:") for score in scores: print(score) ``` 输出结果如下: ``` 请输入第1个成绩:89 请输入第2个成绩:78 请输入第3个成绩:95 请输入第4个成绩:67 请输入第5个成绩:80 请输入第6个成绩:92 请输入第7个成绩:85 请输入第8个成绩:73 请输入第9个成绩:88 请输入10个成绩:91 降序排列后的成绩为: 95. 92. 91. 89. 88. 85. 80. 78. 73. 67. ``` ### 回答2: 这道题目的核心点在于排序算法和数组的运用。首先,我们需要用一个数组来存储这10个成绩的数值,然后对数组进行排序,最后输出排好序的结果。 常见的排序算法有冒泡排序、选择排序、插入排序、快速排序等。由于这道题目输入数据较少,我们可以选择简单易懂的冒泡排序。冒泡排序是依次比较相邻的两个数,如果前一个数比后一个数大,则交换它们两个的位置。这样一轮下来,最大的数就会跑到数组的最后一个位置。重复以上的操作,直到整个数组排好序。 以下是具体实现步骤: 1. 定义一个长度为10的数组scores,用来存储输入10个成绩。 2. 使用for循环输入10个成绩,将每个成绩依次存入数组scores中。 3. 使用双重for循环进行冒泡排序。外层循环控制排序的轮数,内层循环控制每一轮比较的次数。具体代码如下: for (int i = 0; i < scores.length-1; i++) { for (int j = 0; j < scores.length-1-i; j++) { if (scores[j] < scores[j+1]) { int temp = scores[j]; scores[j] = scores[j+1]; scores[j+1] = temp; } } } 4. 排序完成后,使用for循环输出排好序10个成绩,具体代码如下: for (int i = 0; i < scores.length; i++) { System.out.println(scores[i]); } 最终的完整代码如下: import java.util.Scanner; public class SortScores { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[] scores = new int[10]; System.out.println("请输入10个成绩:"); for (int i = 0; i < scores.length; i++) { scores[i] = scanner.nextInt(); } for (int i = 0; i < scores.length-1; i++) { for (int j = 0; j < scores.length-1-i; j++) { if (scores[j] < scores[j+1]) { int temp = scores[j]; scores[j] = scores[j+1]; scores[j+1] = temp; } } } System.out.println("排序后的成绩为:"); for (int i = 0; i < scores.length; i++) { System.out.println(scores[i]); } } } 以上就是本题的解法过程。总体来说,这道题目虽然简单,但是涉及到了排序算法和数组的相关知识点,对于初学者来说是一个不错的练手题。 ### 回答3: 这道题是一个基础的排序题目,要求我们对输入10个成绩进行排序,最后输出排好序10个成绩。为了方便处理,我们可以把这10个成绩存储在一个数组中,并采用冒泡排序法进行排序。 具体的步骤如下: 1. 定义一个大小为10的数组,并从键盘输入10个成绩。 2. 采用冒泡排序法进行排序,可以从大到小或者从小到大排序。这里我们就从大到小排序。 3. 冒泡排序法的具体实现方式是,将相邻的两个数进行比较,如果前面的数比后面的数大,则交换这两个数的位置。这样进行多次循环,就可以将最大的数移到数组的最前面。 4. 排完序后,再输出排好序10个成绩即可。 下面是具体的实现代码: #include <stdio.h> int main() { int scores[10]; int i, j, temp; printf("请输入10个成绩:\n"); for(i = 0; i < 10; i++) { scanf("%d", &scores[i]); } for(i = 0; i < 9; i++) { for(j = 0; j < 9 - i; j++) { if(scores[j] < scores[j+1]) { temp=scores[j]; scores[j]=scores[j+1]; scores[j+1]=temp; } } } printf("排序后的成绩为:\n"); for(i = 0; i < 10; i++) { printf("%d ", scores[i]); } return 0; } 运行结果: 请输入10个成绩: 89 78 96 60 80 75 85 90 68 72 排序后的成绩为: 96 90 89 85 80 78 75 72 68 60 以上就是对于这个题目的详细解答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值