经典的C程序案例(2)_计算机等级指导/介绍

3.绘制圆

在屏幕上用“*”画一个空心的圆

*问题分析与算法设计

打印圆可利用图形的左右对称性。根据圆的方程:

RR=XX+Y*Y

可以算出圆上每一点行和列的对应关系。

*程序说明与注释

#include

#include

void main()

{

double y;

int x,m;

for(y=10;y>=-10;y--)

{

m=2.5sqrt(100-yy); /*计算行y对应的列坐标m,2.5是屏幕纵横比调节系数因为屏幕的

行距大于列距,不进行调节显示出来的将是椭圆*/

for(x=1;x<30-m;x++) printf(" "); /图形左侧空白控制/

printf("*"); /圆的左侧/

for(;x<30+m;x++) printf(" "); /图形的空心部分控制/

printf("* "); /圆的右侧/

}

}

4.歌星大奖赛

在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。

*问题分析与算法实现

这个问题的算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。

*程序说明与注释

#include

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 }

printf("Canceled max score:%d Canceled min score:%d ",max,min);

printf("Average score:%d ",(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个评委中找出最公平(即评分最接返平均分)和最不公平(即与平均分的差距最大)的评委,程序应该怎样实现?
求最大数
问555555的约数中最大的三位数是多少?
*问题分析与算法设计
根据约数的定义,对于一个整数N,除去1和它自身外,凡能整除N的数即为N的约数。因此,最简单的方法是用2到N-1之间的所有数去除N,即可求出N的全部约数。本题只要求取约数中最大的三位数,则其取值范围可限制在100到999之间。
*程序说明与注释
#include
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, ",i,j);
break;
}
}
*运行结果
输入:555555
输出:The max factor with 3 digits in 555555 is:777

Published At
Categories with 认证考试
Tagged with
comments powered by Disqus