论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

C趣味程序百例(02)

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:44:55


4.歌星大奖赛
5.求最大数
6.高次方数的尾数


4.歌星大奖赛
   
在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。
*问题分析与算法实现
    这个问题的算法十分简单,但是要注重在程序中判定最大、最小值的变量是如何赋值的。
*程序说明与注释
#include<stdio.h>
void main()
{
    int integer,i,max,min,sum;
    max=-32768;                  /*先假设当前的最大值max为C语言整型数的最小值*/
    min=32767;                   /*先假设当前的最小值min为C语言整型数的最大值*/
    sum=0;                       /*将求累加和变量的初值置为0*/
    for(i=1;i<=10;i++)
    {
        printf("Input number %d=",i);
        scanf("%d",&integer);          /*输入评委的评分*/
        sum+=integer;                  /*计算总分*/
        if(integer>max)max=integer;    /*通过比较筛选出其中的最高分*/
        if(integer<min)min=integer;    /*通过比较筛选出其中的最低分*/
    }
    printf("Canceled max score:%d\nCanceled min score:%d\n",max,min);
    printf("Average score:%d\n",(sum-max-min)/8);     /*输出结果*/
}
*运行结果
    Input number1=90
    Input number2=91
    Input number3=93
    Input number4=94
    Input number5=90
    Input number6=99
    Input number7=97
    Input number8=92
    Input number9=91
    Input number10=95
    Canceled max score:99
    Canceled min score:90
        Average score:92
*思考题
    题目条件不变,但考虑同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接返平均分)和最不公平(即与平均分的差距最大)的评委,程序应该怎样实现?

----------------------------------------------------------------

5.求最大数
    问555555的约数中最大的三位数是多少?
*问题分析与算法设计
    根据约数的定义,对于一个整数N,除去1和它自身外,凡能整除N的数即为N的约数。因此,最简单的方法是用2到N-1之间的所有数去除N,即可求出N的全部约数。本题只要求取约数中最大的三位数,则其取值范围可限制在100到999之间。
*程序说明与注释
#include<stdio.h>
void main()
{
    long i;
    int j;
    printf("Please input number:");
    scanf("%ld",&i);
    for(j=999;j>=100;
j--)
        if(i%j==0
)
        {
            printf("The max factor with 3 digits in %ld is:%d,\n",i,j);
            break;
        }
}
*运行结果
    输入:555555
    输出:The max factor with 3 digits in 555555 is:777

-------------------------------------------------------------------

6.高次方数的尾数
    求13的13次方的最后三位数
*问题分析与算法设计
    解本题最直接的方法是:将13累乘13次方截取最后三位即可。
    但是由于计算机所能表示的整数范围有限,用这种“正确”的算法不可能得到正确的结果。事实上,题目仅要求最后三位的值,完全没有必要求13的13次方的完整结果。
    研究乘法的规律发现:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关。利用这一规律,可以大大简化程序。
*程序说明与注释
#include<stdio.h>
void main()
{
    int i,x,y,last=1;    /*变量last保存求X的Y次方过程中的部分乘积的后三位*/
    printf("Input X and Y(X**Y):");
    scanf("%d**%d",&x,&y);
    for(i=1;i<=y;i++)                /*X自乘Y次*/

        last=last*x%1000;     /*将last乘X后对1000取模,即求积的后三位*/
    printf("The last 3 digits of %d**%d is:%d\n",x,y,last%1000); /*打印结果*/
}
*运行结果
    Input X and Y(X**Y):13**13
    The last 3 digits of 13**13 is:253
    Input X and Y(X**Y):13**20
    The last 3 digits of 13**20 is:801

上一篇:{实例}C趣味程序百例(01) 人气:5333
下一篇:{实例}C趣味程序百例(03) 人气:7246
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058