| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 392 人关注过本帖
标题:按大小输出学生成绩:排序的问题,希望帮到类似问题的童鞋们【原创】
只看楼主 加入收藏
NightSky
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2011-12-28
结帖率:66.67%
收藏
 问题点数:0 回复次数:0 
按大小输出学生成绩:排序的问题,希望帮到类似问题的童鞋们【原创】
#include<stdio.h>
int main()
{
    int d, i, j, m;
    printf("请输入学生人数:");
    scanf("%d", &d);
    int c[d];
    for(i = 0; i < d; ++i)
    {
        printf("第 %d 号学生的成绩为:", i+1);
        scanf("%d", &c[i]);
    }

    for(j = 0; j < d; ++j)
    {
        for(i = 1+j; i < d; ++i)//必须为i=1+j,否则会和前一个较大数比较后交换
        {
            if(c[j] < c[i])
            {
                m = c[j];
                c[j] = c[i];
                c[i] = m;
            }
        }
        printf("第 %d 名: %d \n", j+1, c[j]);
    }
    return 0;
}/*注意: 如果第17行写为for(i = 1; i < d; ++i), 再进行完j=0的第一轮循环后,\
          a[j]每次循环始终会和a[1]及a[1++]以后的数进行比较,因此再j>=2时a[j]\
          由于小于a[1]<由于j=1时执行完循环和if语句后a[1]就顺理成章成为了第\
          二大>由于第二大的数始终在【数组c且下标为j>=1】的数中,所以只要是从\
          数组下标为1(包括1)之后的数开始比较,那么以后打印出的每一个数都会因\
          为【行17的for的遍历与行20的if的交换】而被赋值为第二大的值,所以输\
          出结果除了c[0]为最大值外,其余不论是数组c的下标是多少<0除外>,其值\
          都为输入【数组中的第二大的值】*/


[ 本帖最后由 NightSky 于 2012-7-7 10:54 编辑 ]
搜索更多相关主题的帖子: include 
2012-07-07 10:52
快速回复:按大小输出学生成绩:排序的问题,希望帮到类似问题的童鞋们【原创】
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015385 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved