动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ C/C++教程 ]的信息

本月文章推荐
.C语言库函数(O类字母).
.C++类的分解,抽象类与纯虚函数的.
.编程实现盗2005 Beta2版QQ.
.数据结构学习(C++)之双向链表.
.C语言教程第七章:结构与联合.
.TQuery的参数设置.
.C++箴言:如何访问模板化基类中的.
.C++ STL编程轻松入门.
.C++引用计数的智能指针有效回收方.
.对C/C++中多维数组指针的理解.
.vb.net中windows服务的创建.
.如何编写用TCP/IP的通讯程序.
.C++ 语言基础(1).
.More Effective C++:自增和自减.
.用游戏串起程序员的基本功之三.
.新手入门:C/C++中的结构体.
.学数学也要学点偷懒的技术.
.用C++在WIN.INI中保存信息.
.C语言初学者入门讲座 第七讲 循环.
.详述C++语言的VxD与外界通讯的所.

C趣味编程百例(32)

发表日期:2008-3-8 |



96.选美比赛
97.满足特异条件的数列
98.八皇后问题



96.选美比赛
   在选美大奖赛的半决胜赛现场,有一批选手参加比赛,比赛的规则是最后得分越高,名次越低。当半决决赛结束时,要在现场按照选手的出场顺序公布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。例如:
   选手序号:         1,2,3,4,5,6,7
   选手得分:         5,3,4,7,3,5,6
   则输出名次为:     3,1,2,5,1,3,4
   请编程帮助大奖赛组委会完成半决赛的评分和排名工作。
*问题分析与算法设计
   问题用程序设计语言加以表达的话,即为:将数组A中的整数从小到大进行连续编号,要求不改变数组中元素的顺序,且相同的整数要具有相同的编号。
   普通的排序方法均要改变数组元素原来的顺序,显然不能满足要求。为此,引入一个专门存放名次的数组,再采用通常的算法:在尚未排出名次的元素中找出最小值,并对具有相同值的元素进行处理,重复这一过程,直到全部元素排好为止。
*程序与程序注释
#include<stdio.h>
#define NUM 7       /*定义要处理的人数*/
int a[NUM+1]={0,5,3,4,7,3,5,6};       /*为简单直接定义选手的分数*/
int m[NUM+1],l[NUM+1];    /*m:已编名次的标记数组   l:记录同名次元素的下标*/
void main()
{
   int i,smallest,num,k,j;
   num=1;                       /*名次*/
   for(i=1;i<=NUM;i++)       /*控制扫描整个数组,每次处理一个名次*/
      if(m[i]==0)     /*若尚未进行名次处理(即找到第一个尚未处理的元素)*/
      {
         smallest=a[i];     /*取第一个未处理的元素作为当前的最小值*/
         k=1;            /*数组l的下标,同名次的人数*/
         l[k]=i;        /*记录分值为smallest的同名次元素的下标*/
         for(j=i+1;j<=NUM;j++)   /*从下一个元素开始对余下的元素进行处理*/
            if(m[j]==0)            /*若为尚未进行处理的元素*/
               if(a[j]<smallest)    /*分数小于当前最小值*/
               {
                  smallest=a[j];    /*则重新设置当覵最小值*/
                  k=0;              /*重新设置同名次人数*/
                  l[++k]=j;         /*重新记录同名次元素下标*/
               }
               else if(a[j]==smallest)     /*若与当前最低分相同*/
                  l[++k]=j;               /*记录同名次的元素下标*/
         for(j=1;j<=k;j++)       /*对同名次的元素进行名次处理*/
            m[l[j>=num;
         num++;                  /*名次加1*/
         i=0;          /*控制重新开始,找下一个没排名次的元素*/
   }
   printf("Player-No score Rank\n");
   for(j=1;j<=NUM;j++)                 /*控制输出*/
      printf(" %3d      %4d      %4d\n",j,a[j],m[j]);
}

*运行结果
         Player-No         Score         Rank
            1                5             3
            2                3             1
            3                4             2
            5                7             5
            5                3             1
            3                5             3
            7                6             4

*思考题
   若将原题中的“名次连续编号,不用考虑同名次的选手人数”,改为”根据同名次的选手人数对选手的名次进行编号“,那么应该怎样修改程序。


97.满足特异条件的数列
   输入m和n(20>=m>=n>0)求出满足以下方程的正整数数列 i1,i2,...,in,使得:i1+i1+...+in=m,且i1>=i2...>=in。例如:
   当n=4, m=8时,将得到如下5 个数列:
         5 1 1 1      4 2 1 1      3 3 1 1      3 2 2 1      2 2 2 2
*问题分析与算法设计
   可将原题抽象为:将M分解为N个整数,且N个整数的和为M,i1>=i2>=...>=in。分解整数的方法很低多,由于题目中有"i1>=i2>=.....>=in,提示我们可先确定最右边in元素的值为1,然后按照条件使前一个元素的值一定大于等于当前元素的值,不断地向前推就可以解决问题。下面的程序答应用户选定M和N,输出满足条件的所有数列。
*程序与程序注释
#include<stdio.h>
#define NUM 10      /*答应分解的最大元素数量*/
int i[NUM];    

上一篇:C趣味程序百例(15) 人气:478
下一篇:C趣味编程百例(10) 人气:444
浏览全部C/C++的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-7 站长中国企业(公司)网站系统 v4.2
2008-9-7 PBDigg v2.0 Build 20080821
2008-9-7 玩玩小游戏FLASH系统 v2.1
2008-9-7 522QQ在线电视直播程序 v1.1
2008-9-7 Pcook cms 文章管理系统 (老Y CM
2008-9-7 仿代码小说小偷系统 v1.0
2008-9-7 百度一搜集成搜索管理系统
2008-9-7 小贤统计器 v1.0
2008-9-7 UCenter Home-中秋搏饼插件 v1.2
2008-9-7 iBlacklist通话黑名单汉化破解补
2008-9-7 EndlessWalls无尽壁纸 v1.0.4破解
2008-9-7 Dynolicious车载测量仪v1.1破解版
2008-9-7 iVoodoo巫毒娃娃1.0.1破解版
2008-9-7 iWallpape精品墙纸1.2破解版
2008-9-7 iChillout自然音效工具1.1破解版
2008-9-7 Todo计划提醒1.2破解版
2008-9-7 allRadio电台集合1.01破解版
2008-9-7 My Money个人理财1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵