| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1057 人关注过本帖, 1 人收藏
标题:这段用标记法的程序谁来讲解一下啊,看不懂啊
取消只看楼主 加入收藏
snailqiu
Rank: 2
等 级:论坛游民
帖 子:59
专家分:45
注 册:2007-9-26
结帖率:100%
收藏(1)
已结贴  问题点数:15 回复次数:4 
这段用标记法的程序谁来讲解一下啊,看不懂啊
输入一个数组,输入结束时打印出排序,如输入的数组为98 82 2 73 80    则输出为
 98     1
 82     2
 2      5
 73    4
 80    3
以下是正解:
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
#define MIN 0
int main(void)
{
    int score[MAX+1]={0};
    int juni[MAX+2]={0};
    int count=0,i;
    do
        {
       printf("输入分数,-1结束:");
       scanf("%d", &score[count++]);
    }
        while(score[count-1]!=-1);
    count--;
    for(i=0;i<count;i++)
        juni[score[i]]++;
    juni[MAX+1]=1;
    for(i=MAX;i>=MIN;i--)
        juni[i]=juni[i]+juni[i+1];
    printf("得分\t排行\n");
    for(i=0;i<count;i++)
        printf("%d\t%d\n",score[i],juni[score[i]+1]);
    return 0;
}


搜索更多相关主题的帖子: include count 
2013-07-16 15:22
snailqiu
Rank: 2
等 级:论坛游民
帖 子:59
专家分:45
注 册:2007-9-26
收藏
得分:0 
刚好你注释的那些我都看得懂,
for(i=0;i<count;i++)
         juni[score[i]]++;
     juni[MAX+1]=1;
     for(i=MAX;i>=MIN;i--)
         juni[i]=juni[i]+juni[i+1];
就是这几句不懂。
比如我输入了5项(不包括-1)score[0]=5,score[1]=2,score[2]=1,score[3]=3,score[4]=0,这时count=5
然后for(i=0;i<count;i++)
         juni[score[i]]++;
之后,juni[5]=1;juni[2]=1;juni[1]=1;juni[3]=1;juni[0]=1;为什么又让juni[101]=1,
然后 for(i=MAX;i>=MIN;i--)
         juni[i]=juni[i]+juni[i+1]; 是什么意思?我好像试了几个数都对不上啊
2013-07-16 17:11
snailqiu
Rank: 2
等 级:论坛游民
帖 子:59
专家分:45
注 册:2007-9-26
收藏
得分:0 
回复 4楼 love云彩
我用了个笨方法,把程序改了一下:
#include<stdio.h>
 #include<stdlib.h>
 #define MAX 100
 #define MIN 0
 int main(void)
 {
     int score[MAX+1]={0};
     int juni[MAX+2]={0};
     int count=0,i;
     do
         {
        printf("输入分数,-1结束:");
        scanf("%d", &score[count++]);
     }
         while(score[count-1]!=-1);
     count--;
     for(i=0;i<count;i++)
         juni[score[i]]++;
     juni[MAX+1]=1;
     for(i=MAX;i>=MIN;i--)
         juni[i]=juni[i]+juni[i+1];
         
     for(i=0;i<=100;i++)
        printf("score[%d]=:%d\tjuni[%d]=:%d\n",i,score[i],i,juni[i]);   
        
     printf("    得分\t      排行\n");
     for(i=0;i<count;i++)
         printf("score[%d]=:%d\tjuni[%d]=:%d\n",i,score[i],i,juni[score[i]+1]);     
   
     return 0;
 }
把结果输出,然后一项一项对照,终于看懂了。
我真的很佩服想出来的人,我觉得最后输出的 得分 和 排行 中score[]和juni[]的那几项中并没有很明显的规律,解题者是怎么想到它们之间的对应关系就是一个score[i]对应一个juni[score[i]+1])呢?我头都想破了都没有想出来。这是有什么固定的方法吗?
2013-07-16 22:42
snailqiu
Rank: 2
等 级:论坛游民
帖 子:59
专家分:45
注 册:2007-9-26
收藏
得分:0 
回复 10楼 love云彩
兄弟,你的服务态度真是太好了。灰常感谢。
2013-07-17 20:22
snailqiu
Rank: 2
等 级:论坛游民
帖 子:59
专家分:45
注 册:2007-9-26
收藏
得分:0 
回复 11楼 love云彩
云彩兄,我还不至于理解能力这么差。
你讲的太过于详细了。让您受累了。
其实我觉得像8楼那样讲一下我就明白了。
还是要灰常灰常的感谢你。
2013-07-17 20:27
快速回复:这段用标记法的程序谁来讲解一下啊,看不懂啊
数据加载中...
 
   



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

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