当前位置:文档之家› 编程大赛试题 - 答案

编程大赛试题 - 答案

编程大赛试题 - 答案
编程大赛试题 - 答案

1:在一组数中,要求插入一个数,暗其原来的顺序插入,维护原来的排序方式

f u n c t i o n f u n c($a r r,$v a l)

{

$l e n=c o u n t($a r r);

i f($l e n==0)

$a r r=$v a l;

e l s e{

$i=0;

w h i l e($a r r[$i]==$a r r[$i+1])

$i++;

i f($a r r[$i]>$a r r[$i+1])

{

f o r($i=0;$a r r[$i]>$v a l;$i++);

f o r($j=$l e n;$j>=$i;$j--)

{

$a r r[$j]=$a r r[$j-1];

}

$a r r[$i]=$v a l;

}

e l s e

{

f o r($i=0;$a r r[$i]<$v a l;$i++);

f o r($j=$l e n;$j>=$i;$j--)

{

$a r r[$j]=$a r r[$j-1];

}

$a r r[$i]=$v a l;

}

}

r e t u r n$a r r;

}

$a r r=a r r a y(1,3,5,10,20);

$v a l=8;

v a r_d u m p(f u n c($a r r,$v a l));

?>

2:用二分法在一个数组中查找你所需元素

c l a s s C h i n a U n i x_U t i l

{

//{{{p r o p e r t i e s

//}}}

//{{{a r r a y_b i n a r y s e a r c h()

/**

*二分法查找

*

*@p a r a m i n t$n e e d l e

*@p a r a m a r r a y$h a y s t a c k

*

*@r e t u r n i n t$p o s

*/

p u b l i c s t a t i c f u n c t i o n a r r a y_b i n a r y s e a r c h(a r r a y$h a y s t a c k,$n e e d l e)

{

i f(e m p t y($h a y s t a c k)){

r e t u r n-1;

}

s o r t($h a y s t a c k);//升序排序整理

$s t a r t=0;

$e n d=c o u n t($h a y s t a c k)-1;

w h i l e($s t a r t<=$e n d){

$m i d=f l o o r(($s t a r t+$e n d)/2);

i f($h a y s t a c k[$m i d]<$n e e d l e){

$s t a r t=$m i d+1;

}e l s e i f($h a y s t a c k[$m i d]>$n e e d l e){

$e n d=$m i d-1;

}e l s e{

r e t u r n$m i d;

}

}

r e t u r n-1;

}

//}}}

}

//U s a g e:

$q u e u e=a r r a y(1,2,3,5,23,9,20,18,35,100);

$n e e d l e=23;

$p o s=C h i n a U n i x_U t i l::a r r a y_b i n a r y s e a r c h($q u e u e,$n e e d l e);

p r i n t_r($p o s);

e c h o P H P_E O L;

?>

3:打印一个杨辉三角

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

f u n c t i o n t r i a n

g l e($n){

f o r($i=0;$i<$n;$i++){

f o r($j=0;$j<=$i;$j++){

i f($j==0||$i==$j){

$a r r[$i][$j]=1;

}e l s e{

$a r r[$i][$j]=$a r r[$i-1][$j]+$a r r[$i-1][$j-1];

}

e c h o$a r r[$i][$j]."\t";

}

e c h o"";

}

}

t r i a n g l e(6);

?>

4:使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组

//冒泡排序(一维数组)

f u n c t i o n b u b b l e_s o r t($a r r){

$c o u n t=c o u n t($a r r);

i f($c o u n t<=0)r e t u r n f a l s e;

f o r($i=0;$i<$c o u n t;$i++){

f o r($j=$c o u n t-1;$j>$i;$j--){

i f($a r r[$j]<$a r r[$j-1]){

$t m p=$a r r[$j];

$a r r[$j]=$a r r[$j-1];

$a r r[$j-1]=$t m p;

}

}}

r e t u r n$a r r;

}

//使用实例

$_a r r a y=a r r a y('5','8','5','6','9','3','2','4');

$_a r r a y=b u b b l e_s o r t($_a r r a y);

p r i n t_r($_a r r a y);

?>

5:写一个二维数组排序算法函数,能够具有通用性

f u n c t i o n m u t i l S o r t($d a t a,$k e y,$s o r t='d e s c',$t y p e)

{

$t m p=a r r a y();

w h i l e(l i s t($k,$v)=e a c h($d a t a)){

$t m p[$k]=$v[$k e y];

}

i f($s o r t=='d e s c'){

i f($t y p e=="n u m"){

a r r a y_m u l t i s o r t($t m p,S O R T_D E S C,S O R T_N U M E R I C,$d a t a);

}e l s e{

a r r a y_m u l t i s o r t($t m p,S O R T_D E S C,S O R T_S T R I N G,$d a t a);

}

}e l s e{

i f($t y p e=="n u m"){

a r r a y_m u l t i s o r t($t m p,S O R T_A S C,S O R T_N U M E R I C,$d a t a);

}e l s e{

a r r a y_m u l t i s o r t($t m p,S O R T_A S C,S O R T_S T R I N G,$d a t a);

}

}

r e t u r n$d a t a;

}

$c h i A r r[]=a r r a y('n a m e'=>'好汉','c n t'=>1);

$c h i A r r[]=a r r a y('n a m e'=>'这个','c n t'=>2);

$c h i A r r[]=a r r a y('n a m e'=>'什么','c n t'=>3);

$c h i A r r[]=a r r a y('n a m e'=>'阿里','c n t'=>4);

$d a t a=m u t i l S o r t($c h i A r r,'c n t','d e s c','n u m');

p r i n t_r($d a t a);

?>

6:写一个function实现数组内每个元素之间加法的递代运算?

注:数组元素全部为自然数.

例:

$data=array(1,2,3);

程序要求打印出数组每个数组元素相互之间各种可能性加法(包括元素自已本身加法)

1+1=2,1+2=3,1+3=5,

2+2=4,2+3=5,

3+3=6

打印出以下结果

Array

(

[0] => Array

(

[0] => 2

[1] => 3

[2] => 4

)

[1] => Array

(

[1] => 4

[2] => 5

)

[2] => Array

(

[2] => 6

)

)

$d a t a=a r r a y(1,2,3);

$r e s=a r r a y();

c a l c($

d a t a,$r

e s u l t);

e c h o'

';

p r i n t_r($r e s u l t);

f u n c t i o n c a l c($d a t a,&$r e s)

{

i f(c o u n t($d a t a)<1)r e t u r n;

$i t e m=$d a t a[0];

f o r e a c h($d a t a a s$v)

{

$r e s[$i t e m-1][]=$i t e m+$v;

}

c a l c(a r r a y_s p l i c e($

d a t a,1),$r

e s);

}

?>

7:设有n 种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n 种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。

/*v i m:s e t e x p a n d t a b t a b s t o p=4s h i f t w i d t h=4f o l d m e t h o d=m a r k e r:*/

/**

*题:7:设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,

*今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。

*解:1.将物品按价值排序

*2.(最大载重量/最大价值物品重量),得最大价值物品的数量

*3.从物品中却除当前最大价值物品

*4.最大载重量=剩余载重量,重复2,3,直到最大载重量=0为止

*@c a t e g o r y C h i n a U n i x

*@p a c k a g e P H P编程大赛

*@a u t h o r a b a o w u

*@c o p y r i g h t a b a o w u

*@s i n c e C l a s s a v a i l a b l e s i n c e P H P5.1

*@v e r s i o n$L a s t C h a n g e d R e v i s i o n:1$

*@v e r s i o n S V N:$I d$

*/

c l a s s C h i n a U n i x_U t i l

{

//{{{p r o p e r t i e s

//}}}

//{{{g e t M a x V a l u e D a t a()

/**

*今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大

*

*

*@p a r a m a r r a y$d a t a n种物品数组s t r u c t a r r a y(a r r a y("i d"=>1,"w e i g h t"=>20,"v a l u e"=>5));

*@p a r a m i n t$m a x W e i g h t最大载重量

*@p a r a m b o o l e a n$i s S o r t e d D a t a是否已排序数据

*@p a r a m a r r a y$r e s u l t返回选中的物品清单

*

*@r e t u r n v o i d

*/

p u b l i c s t a t i c f u n c t i o n g e t M a x V a l u e D a t a(a r r a y $d a t a,$m a x W e i g h t,$i s S o r t e d D a t a=F A L S E,a r r a y&$r e s u l t)

{

i f($i s S o r t e d D a t a==F A L S E){

$d a t a=s e l f::a r r a y_o r d e r($d a t a,'v a l u e',S O R T_D E S C);//按价值排序

}

i f(e m p t y($d a t a)||$m a x W e i g h t==0){//已处理完成

r e t u r n;

}

$m a x V a l u e D a t a=a r r a y_s h i f t($d a t a);//取最大价值物品

$n u m=f l o o r($m a x W e i g h t/$m a x V a l u e D a t a["w e i g h t"]);//最大价值物品最多可取数量

i f($n u m<1){//当前取不到,到下一个取

s e l f::g e t M a x V a l u e D a t a($d a t a,$m a x W e i g h t,T R U E,$r e s u l t);

r e t u r n;

}

$m a x V a l u e D a t a["g e t n u m"]=$n u m;//登记该物品取到的数量

$s u m W e i g h t=$m a x V a l u e D a t a["w e i g h t"]*$n u m;//汇总重量

$s u m V a l u e=$m a x V a l u e D a t a["v a l u e"]*$n u m;//汇总价值

$m a x W e i g h t=$m a x W e i g h t-$s u m W e i g h t;//剩余最大重量

//登记结果

$r e s u l t["l i s t"][]=$m a x V a l u e D a t a;

i f(e m p t y($r e s u l t["s u m W e i g h t"])){

$r e s u l t["s u m W e i g h t"]=$s u m W e i g h t;

$r e s u l t["s u m V a l u e"]=$s u m V a l u e;

}e l s e{

$r e s u l t["s u m W e i g h t"]+=$s u m W e i g h t;

$r e s u l t["s u m V a l u e"]+=$s u m V a l u e;

}

//继续处理

s e l f::g e t M a x V a l u e D a t a($d a t a,$m a x W e i g h t,T R U E,$r e s u l t); }

//}}}

//{{{a r r a y_o r d e r b y()

/**

*二维数组排序

*

*@p a r a m a r r a y$a r r a y排序二维数组

*@p a r a m m i x e d$a r g1排序键名

*@p a r a m m i x e d$a r g2排序方式O p t i o n a l l y a n o t h e r a r r a y,o r s o r t o p t i o n s f o r t h e p r e v i o u s

*a r r a y a r g u m e n t: S O R T_A S C,S O R T_D E S C,S O R T_R E G U L A R,S O R T_N U M E R I C,S O R T_S T R I N G.

*

*@r e t u r n v o i d

*/

p u b l i c s t a t i c f u n c t i o n a r r a y_o r d e r()

{

$a r g s=f u n c_g e t_a r g s();

$d a t a=a r r a y_s h i f t($a r g s);

f o r e a c h($a r

g s a s$i n d e x=>$f i e l d){

i f(i s_s t r i n g($f i e l d)){

$t m p=a r r a y();

f o r e a c h($d a t a a s$k e y=>$r o w)

$t m p[$k e y]=$r o w[$f i e l d];

$a r g s[$i n d e x]=$t m p;

}

}

$a r g s[]=&$d a t a;

c a l l_u s e r_f u n c_a r r a y('a r r a y_m u l t i s o r t',$a r g s);

r e t u r n a r r a y_p o p($a r g s);

}

//}}}

}

//U s a g e:

$d a t a=a r r a y();

$d a t a[]=a r r a y("i d"=>1,"w e i g h t"=>20,"v a l u e"=>5);

$d a t a[]=a r r a y("i d"=>2,"w e i g h t"=>15,"v a l u e"=>25);

$d a t a[]=a r r a y("i d"=>3,"w e i g h t"=>30,"v a l u e"=>11);

$d a t a[]=a r r a y("i d"=>4,"w e i g h t"=>40,"v a l u e"=>15);

$d a t a[]=a r r a y("i d"=>5,"w e i g h t"=>10,"v a l u e"=>22);

$d a t a[]=a r r a y("i d"=>6,"w e i g h t"=>33,"v a l u e"=>20);

$d a t a[]=a r r a y("i d"=>7,"w e i g h t"=>18,"v a l u e"=>47);

$d a t a[]=a r r a y("i d"=>8,"w e i g h t"=>39,"v a l u e"=>45);

$d a t a[]=a r r a y("i d"=>9,"w e i g h t"=>29,"v a l u e"=>35);

$d a t a[]=a r r a y("i d"=>10,"w e i g h t"=>11,"v a l u e"=>35);

//最大载重

$m a x W e i g h t=320;

$r e s u l t=a r r a y();

C h i n a U n i x_U t i l::g e t M a x V a l u e

D a t a($d a t a,$m a x W e i g h t,F A L S E,$r e s u l t);

p r i n t_r($r e s u l t);

e c h o P H P_E O L;

?>

8:设随机抽到A的概率为0.1,B的概率为0.2,C的概率为0.3,D的概率为0.4,现在求按此概率随机抽出一个字母的算法,

/*v i m:s e t e x p a n d t a b t a b s t o p=4s h i f t w i d t h=4f o l d m e t h o d=m a r k e r:*/

/**

*题:8:设随机抽到A的概率为0.1,B的概率为0.2,C的概率为0.3,D的概率为0.4,现在求按此概率随机抽出一个字母的算法,

*

*解:1.按概率生成随机字母分布数列

*2.产生随机数,从数列中取对应字母

*

*

*@c a t e g o r y C h i n a U n i x

*@p a c k a g e P H P编程大赛

*@a u t h o r a b a o w u *@c o p y r i g h t a b a o w u

*@s i n c e C l a s s a v a i l a b l e s i n c e P H P5.1 *@v e r s i o n$L a s t C h a n g e d R e v i s i o n:1$

*@v e r s i o n S V N:$I d$

*/

c l a s s C h i n a U n i x_U t i l

{

//{{{p r o p e r t i e s

//}}}

//{{{g e t_r a n d_c h a r()

/**

*按指定随机概率获取字符

*

*@r e t u r n s t r i n g

*/

p u b l i c s t a t i c f u n c t i o n g e t_r a n d_c h a r()

{

$d a t a=s e l f::i n i t i a l_c h a r_q u e u e();

$i n d e x=m t_r a n d(1,c o u n t($d a t a))-1;

r e t u r n$d a t a[$i n d e x];

}

//}}}

//{{{g e t_a r r a y_s o r t_t y p e()

/**

*按概率生成字母分布数列

*P=P0.1+P0.2+P0.3+P0.4=1

*

*@r e t u r n a r r a y

*/

p u b l i c s t a t i c f u n c t i o n i n i t i a l_c h a r_q u e u e()

{

$d a t a=a r r a y();

f o r($i=0;$i<1;$i++){

$d a t a[]="A";

}

f o r($i=0;$i<2;$i++){

$d a t a[]="B";

}

f o r($i=0;$i<3;$i++){

$d a t a[]="C";

}

f o r($i=0;$i<4;$i++){

$d a t a[]="D";

}

s h u f f l e($d a t a);

r e t u r n$d a t a;

}

//}}}

}

//U s a g e:

$c h a r=C h i n a U n i x_U t i l::g e t_r a n d_c h a r();

p r i n t_r($c h a r);

e c h o P H P_E O L;

?>

9:一个小孩买了价值少于1美元的糖,并将1美元的钱交给售货员。售货员希望用数目最少的硬币找给小孩。假设提供了数目不限的面值为2 5美分、1 0美分、5美分、及1美分的

硬币,写一个算法让售货员用最少的硬币数找给小孩

/**

*程序说明:总钱数和花去的钱数可以修改,也可以从页面的输入获取。修改相应的值就可以。

*这里直接写的值,如果从页面获取可以用$_P O S T['t o t a l m o n e y']或者$_G E T['t o t a l m o n e y']

*这样的方式从提交页面获取总钱数和花去的钱数。

*最后通过计算后,用e c h o将结果输出到页面。

*/

$t o t a l m o n e y=100;//总钱数(美分)

$c o n s u m e m o n e y=11;//花去的钱

$c o m p l e t=f a l s e;//找钱完成

$c h a n g e=0;

//找零25,10,5,1美分钱的个数

$c h25=0;

$c h10=0;

$c h5=0;

$c h1=0;

f o r(;;){

i f($c o m p l e t)b r e a k;

$l e f t=$t o t a l m o n e y-$c o n s u m e m o n e y-$c h a n g e;//还没有找的钱

i f($l e f t<=0){

$c o m p l e t=t r u e;

}e l s e{

i f($l e f t>=25){//找25美分钱

$c h a n g e=$c h a n g e+25;

$c h25=$c h25+1;

}e l s e i f($l e f t>=10){//找10美分钱

$c h a n g e=$c h a n g e+10;

$c h10=$c h10+1;

}e l s e i f($l e f t>=5){//找5美分钱

$c h a n g e=$c h a n g e+5;

$c h5=$c h5+1;

}e l s e{//找1美分钱

$c h a n g e=$c h a n g e+1;

$c h1=$c h1+1;

}

}

}

e c h o"剩余零钱".($t o t a l m o n e y-$c o n s u m e m o n e y)."美分.";

e c h o"找25美分".$c h25."个。";

e c h o"找10美分".$c h10."个。";

e c h o"找5美分".$c h5."个。";

e c h o"找1美分".$c h1."个。";

?>

10:五只猴子采得一堆桃子,猴子彼此约定隔天早起后再分食。不过,就在半夜里,一只猴子偷偷起来,把桃子均分成五堆后,发现还多一个,它吃掉这桃子,并拿走了其中一堆。第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃掉这个桃子,并拿走了其中一堆。第三只,第四只,第五只猴子都依次如此分食桃子。那么桃子数最少应该有几个呢?

e c h o"s t a r t";

f o r($y=16;;$y+=4){

i f(($y-1)%5!=0)c o n t i n u e;

$x=$y;

f o r($i=4;$i>=1&&$x%4==0;$i--){

$x=($x/4)*5+1;

}

i f($i==0){

e c h o"桃子最少应该有:".$x;

b r e a k;

}

}

?>

11:公鸡3元每只,母鸡5元每只,小鸡1元3只,一百元钱买一百只鸡。请求出公鸡,母鸡和小鸡的数目。

//11:公鸡3元每只,母鸡5元每只,小鸡1元3只,一百元钱买一百只鸡。请求出公鸡,母鸡和小鸡的数目。

$t o t a l m o n e y=100;

$t o t a l c h i c k e n=100;

$c o c k n u m=i n t v a l($t o t a l m o n e y/3);//100元全买公鸡的数目

$h e n n u m=i n t v a l($t o t a l m o n e y/5);//100元全买母鸡的数目

$b i d d y n u m=100;//100元虽然能买300只小鸡,但因为题意是要买100只鸡。所以小鸡数最大为100

f o r($i=1;$i<$c o c k n u m;$i++){//公鸡数

f o r($j=1;$j<$h e n n u m;$j++){//母鸡数

f o r($k=1;$k<$b i d d y n u m;$k++){//小鸡数

$m o n e y=$i*3+$j*5+$k/3;

$t o t a l=$i+$j+$k;

i f(($m o n e y==$t o t a l m o n e y)&&($t o t a l==$t o t a l c h i c k e n)){

e c h o"公鸡:".$i."只,母鸡:".$j."只,小鸡:".$k."只。

";

}

}

}

}

?>

12:小猴第一天摘下若干枣子,当即吃掉了一半,不过瘾又多吃了一个;第二天吃了剩下的一半又多吃了一个;以后每一天都吃了前一天剩下的一半多一个。到第十天小猴再想吃时,见到只剩下一只枣子了。问第一天这堆枣子有多少?

//采用倒推算法。

f u n c t i o n

g e t T o t a l($d a y){

$t o t a l=0;

i f($d a y==1){//第一天只有一个

$t o t a l=1;

}e l s e{//以后每一天为前一天的两加上1个。

$t o t a l=2*(g e t T o t a l($d a y-1)+1);

}

r e t u r n$t o t a l;

}

//测试

e c h o g e t T o t a l(10);

?>

13:有一艘大船准备用来装载货物。所有待装货物都装在货箱中且所有货箱的大小都一样,但货箱的重量都各不相同。设第i 个货箱的重量为wi(1≤i≤n),而货船的最大载重量为c,如何在货船上装入最多的货物。

$a r r W=a r r a y(1=>W1,2=>W2,.....,n=>W n);//这个数组存放的是货物的重量(W1,W2,....W n 为具体数值)

$c=10000;//总装载量

f u n c t i o n s o r t A r r($a r r){

i f(s i z e o f($a r r)<2)r e t u r n$a r r;

//先将货物从轻到重排序。

f o r($i=1;$i<=s i z e o f($a r r);$i++){

f o r($j=$i+1;$j

i f($a r r[$i]>$a r r[$j]){

$t e m p=$a r r[$i];

$a r r[$i]=$a r r[j];

$a r r[$j]=$t e m p;

}

}

}

r e t u r n$a r r;

}

$a r r T e m p=s o r t A r r($a r r W);//排序

$a r r L o a d=a r r a y();

$j=0;

f o r($i=1;$i<=s i z e o f($a r r T e m p);$i++){

i f($a r r T e m p[$i]<$c){//还有可以装载的地方

f o r e a c h($a r r W a s$k e y=>$v a l u e){

i f($v a l u e==$a r r T e m p[$i]){//找到原始的箱号

$a r r L o a d[$j]=$k e y.":".$v a l u e;

b r e a k;

}

}

$j=$j+1;

$c=$c-$a r r T e m p[$i];//总装载量减少

}e l s e{

b r e a k;//已经没有可以装箱的地方

}

}

p r i n t_r($a r r L o a d);//这就是装箱的结果

?>

======有点错误========

14:小球从10米高处自由下落,每次弹起的高度是下落高度的70%,当小球弹起的高度不足原高度的千分之一时,小球很快会停止跳动,计算小球在整个弹跳过程中所经历的总路程(忽略弹起高度不足原高度千分之一的部分)。

/**

*参数:$f i r s t出师下落高度

*返回:总路程

*/

f u n c t i o n a l l L e n

g t h($f i r s t){

$h=$f i r s t;//初始下落高度

$s=0;//总路程

f o r(;;){

$l=0.7*$h;//弹起高度。

$s=$s+$h+$l;

$h=$l;//下次下落高度

i f($l<($f i r s t/1000)){//不足初始高度的1/1000时,退出

b r e a k;

}

}

r e t u r n$s;

}

//测试

$h o m e=10;

$t o t a l=a l l L e n g t h($h o m e);

e c h o"总路程是:".$t o t a l."米。";

?>

15、JS下有一个字符串var str = '1|2|3|4|5|6#1|2|3|4#1|2|3|4|5|6|7|8'; 请用“#”号将其分割为数组,再用“|”将其分割为2维数组。可以用例如ary[0][0]这样的各式取出数组中的每个元素。最后输出其中最长数组的编号(1,2,3这样的自然数),这个数组中元素的个数。以及大数组中每个元素。如图:

f u n c t i o n

g e t m a x($l i s t)

{

$m a x_s o_f a r=s i z e o f($l i s t[0]);

$i n d e x=-1;

f o r($i=1;$i

i f($m a x_s o_f a r

$i n d e x=$i;

$m a x_s o_f a r=s i z e o f($l i s t[$i]);

}

}

r e t u r n$i n d e x;

}

$s t r='1|2|3|4|5|6#1|2|3|4#1|2|3|4|5|6|7|8';

$a r r=e x p l o d e('#',$s t r);

$r e s=a r r a y();

$l e n g t h=a r r a y();

程序设计题答案

1.请编写函数fun,:计算并输出下列多项式的值: sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n! double fun(int n) { double s=1.0,t=1.0; int i; for(i=1;i<=n;i++) { t*=i; s+=1/t; } return s; } 2.函数fun:计算并输出下列多项式值: sn=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)1/2n). double fun(int n) { double s=0,k=1.0; int i; for(i=1;i<=2*n;i++) { s+=k/i; k=-k; } return s; } 3. double fun(int n) { double s=0,t=1.0; int i; for(i=1;i<=n;i++) { t*=i; s+=1/t; } return s;} 4.请编写函数fun: s=1+(1+2(0.5))+(1+2(0.5)+3(0.5))+…+(1+2 (0.5)+3(0.5)+…+n(0.5)) double fun(int n) { double s=0,t=0; int i; for(i=1;i<=n;i++) { t+=sqrt(i); s+=t; } return s;} 5.请编写函数fun:计算并输出当x<0.97时下列多项式的值,直到|sn-s(n-1)|<0.000001为止。 Sn=1+0.5x+0.5(0.5-1)/2!x(2)+…+0.5(0.5-1) (0.5-2)…..(0.5-n+1)/n!x(n) double fun(double x) { double s=0.0,s1=1.0,s0=0,p=1.0,t=1.0; int n=1; do { s0=s1; s+=s0; t*=n; p*=(0.5-n+1)*x; s1=p/t; n++; }while(fabs(s1-s0)>1e-6); return s; } 6.请编写函数fun:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。 double fun(int n) { int i; double sum=0.0; for(i=1;i<=n;i++) if(i%5==0 || i%9==0) sum+=1.0/i; return sum;= 7.请编写函数fun:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。 int fun(int n) {int s=0,i; for(i=2;i<=n-1;i++) if(n%i==0) s+=i; return s; } 8.请编写函数fun ,其功能是:计算并输出3到n之间所有素数的平方根之和。double fun(int n) { int m,k i;

C语言程序设计竞赛题及其答案

数学与统计学院 第三届计算机程序设计竞赛题 竞赛需知: 1、答案必须写在答题纸上。 2、程序采用C/JAVA/VB/VFP语言实现均可。 3、考虑到各种因素,程序的键盘输入和结果输出可以用伪代码或者自然语言表示。但是必 须说明输入变量和输出变量。 4、题目最好能用完整、正确的语言程序来解决问题,如确实无法编写完整语言程序的,可 以写出程序主要框架和流程,必要时可以用伪代码或者自然语言描述算法(程序)。 一、玫瑰花数(20分) 如果一个四位数等于它的每一位数的4次方之和,则称为玫瑰花数。例如: + + 1634+ =, 4^4 4^3 4^6 4^1 编程输出所有的玫瑰花数。 #include void main() { int i,j,k,l,m; for(i=999;i<=9999;i++) { j=i/1000; k=i%10; l=i/100-10*j; m=i/10-100*j-10*l; if(i==j*j*j*j+k*k*k*k+l*l*l*l+m*m*m*m) printf("%d\n",i); } } 二、菱形图案(20分) 对给定的奇数n,编程打印菱形图案。 输入样例: 7 输出样例: * *** ***** ******* ***** *** * #include #include void main() {

int i,j,k; int n; scanf("%d",&n); for(i=0;i #include void main() { int i,j,x,y; float r; int a,b,count=0; printf("请输入矩阵的行列i,j:"); scanf("%d%d",&i,&j); printf("请输入圆心的坐标点及半径x,y,r:"); scanf("%d%d%f",&x,&y,&r); for(a=0;a

程序设计比赛试题

程序设计比赛试题 最少钱币数: 【问题描述】 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 【要求】 【数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M (1<=M<=2000,整数),接着的一行中,第一个整数K(1<=K<=10)表示币种个数,随后是K个互不相同的钱币面值Ki(1<=Ki<=1000)。输入M=0时结束。 【数据输出】每个测试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。 【样例输入】 15 6 2 5 10 20 50 100 1 1 2 【样例输出】 2 Impossible

Feli的生日礼物 【问题描述】 Felicia的生日是11月1日(和Kitty是同一天生的哦)。于是Feli请来Kitty一起过生日。Kitty带来了最新款的“Kitty猫”玩具准备送给Feli,不过她说,这份礼物可不是白送的。Feli要帮她一个忙,才能够得到心仪已久的玩具。Kitty说,“Kitty猫”玩具已经卖出了n!个,n<=10^100*_*,Kitty想知道确切的数字,而不是无聊的“一个数加个感叹号”。Feli听了大吃一惊。要知道,算出n!是一个无比艰巨的任务。Feli告诉Kitty,就算Feli算出n!,Kitty也看不下去,因为当n=20时,计算机的长整型已经存不下了(Kitty只能接受1-9之间的数字)。于是Kitty说,你只要告诉我n!最后一位非0的数就可以了。Feli想了想,立刻动手写了个程序算出了正确的答案。现在,请你也试试看!注意哦,AC的男生将会得到一个“Hello Kitty”计算器(可编程,CPU 1THz,Mem 1TMB),AC的女生将会得到一个仿真“Hello Kitty”宠物(善解人意,无须喂养,智商1101,附带写情书功能)。 【要求】 【数据输入】每行一个n,直到输入数据结束 【数据输出】对应输入的n,每行输出一个答案 【样例输入】 1101 【样例输出】 8

程序设计大赛试题及答案

试题 1、数学黑洞(程序文件名maths.c/maths.cpp) 【问题描述】 任给一个4位正整数,其各位数位上的数字不全相同,将数字重新组合成一个最大的数与最小的数相减,重复这个过程,最多7步,必得6174。对任给的4位正整数(各位数位上的数字不全相同),编程输出掉进黑洞的步数。 【输入】 一行,一个4位正整数n(1000< n<9999) 【输出】 掉进黑洞的步数 输入 1234 输出 3 2、进制转换(程序文件名conver.c/conver.cpp) 【问题描述】 任给一个十进制整数n,及正整数m(m<=16且m≠10), 将n转换成m进制并输出。 【输入】 一行,两个整数n,m(0 ≤ n ≤ 500000,2 ≤ m ≤ 16,且m≠10),中间用一个空格隔开,其中n 表示十进制数。 【输出】 转换后的数 【输入输出样例】 输入 255 8 输出 377 3、分数线划定(程序文件名score.c/score.cpp) 【问题描述】 公务员选拔工作正在 A 市如火如荼的进行。为了选拔优秀人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名公务员,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。 【输入】 第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的人数。输入数据保证m*150%向下取整后小于等于n。 第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000 ≤ k ≤ 9999)和该选手的笔试成绩s(1 ≤ s ≤ 100)。数据保证选手的报名号各不相同。 【输出】 第一行,有两个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。 从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。 【输入输出样例】 输入 6 3 1000 90 3239 88 2390 95 7231 84 1005 95 1001 88

Python程序设计习题与答案

《Python程序设计》习题与参考答案 第1章基础知识 简单说明如何选择正确的Python版本。 答: 在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python 还是Python ,最高支持到Python 还是Python 。这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装和卸载上。同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。 尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 系列的最高版本(目前是Python )。 为什么说Python采用的是基于值的内存管理模式 答: Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。 >>> x = 3 >>> id(x) >>> y = 3 >>> id(y) >>> y = 5 >>> id(y) >>> id(x) 在Python中导入模块中的对象有哪几种方式 答:常用的有三种方式,分别为 import 模块名 [as 别名]

from 模块名 import 对象名[ as 别名] from math import * 使用pip命令安装numpy、scipy模块。 答:在命令提示符环境下执行下面的命令: pip install numpy pip install scipy 编写程序,用户输入一个三位以上的整数,输出其百位以上的数字。例如用户输入1234,则程序输出12。(提示:使用整除运算。) 答: 1)Python 代码: x = input('Please input an integer of more than 3 digits:') try: x = int(x) x = x else: print(x) except BaseException: print('You must input an integer.') 2)Python 代码: import types x = input('Please input an integer of more than 3 digits:') if type(x) != : print 'You must input an integer.' elif len(str(x)) != 4: print 'You must input an integer of more than 3 digits.' else: print xoin(map(str,result)) 2)Python 代码 x = input('Please input an integer less than 1000:') t = x i = 2 result = [] while True: if t==1:

市青少年计算机程序设计竞赛试题

‘96上海市青少年计算机程序设计竞赛试题 竞赛注意事项: 1.上机竞赛在2小时内完成,可以不经书编程,直接输入计算机调试。 2.试题一~五的程序完成后,分别以A、B、C、D、E文件名存入磁盘。 3.每完成一题后即填写完成时间,以备机器故障时给予处理。 4.竞赛的程序以运行结果作为主要评分依据,人为判断、直接打印者不给分。 5.测试数据将有多套,运行速度的快慢将作为评分依据之一。 一、如下图,有I种货物将存放在N个仓库里(I=N,I<=20)。假设各种货物由同一种车辆 运输,一种货物存放在一个仓库,而且每个仓库都足够大。现在已知货物1的存储量为M1吨,周转周期为D1天(即在D1天里,有M1吨货物1运进,并运出。),货物2的存储量为M2吨,周转周期为D2天,…,货物I的存储量为Mi吨,周转周期为Di天。问怎样安排仓库储存,可使运输的车公里数为最少?(15分) 原始数据由正文文件输入,文件第一行是一个数字I,表示I种货物,第二行为I种货物的存储量,第三行为I种货物的周转周期,同一行中各数字间以空格分隔。输入数据均不 需判错。 由屏幕打印运行结果,第一行是仓库的编号,第二行为对应货物的编号。 例对右图的正文文件,输入输出格式如下: Enter file name : TEST1-1.TXT TEST1-1.TXT 7 N1 N2 N3 N4 N5 N6 N7 12 7 38 109 64 580 1088 Ix Ix Ix Ix Ix Ix Ix 30 23 8 14 5 42 113 二、求N!的精确值(N<100。N!为1*2*3*4*5……*N)。(15分) 输入输出格式为: INPUT N = 23 23!= 25852016738884976640000 三、编写一个整理TURBO PASCAL源文件的程序,它先输入要整理的源文件标识符,然 后逐个字符读取该文件的所有内容,经适当改造后再存入目标文件标识符。程序应能自动地将源文件中的所有TURBO PASCAL 的保留字改成大写,将每个单词的首字母改成大写, 其余的改成小写。但不影响字符串和注释语句中的大小写。(20分) 程序运行时输入、输出格式: Enter source filename :源文件标识符 Enter target filename :目标文件标识符 输入数据均不需判错。 附TURBO PASCAL 52 个保留字: ABSOLUTE AND ARRAY BEGIN CASE CONST CONSTRUCTOR DESTRUCTOR DIV DO DOWNTO ELSE END EXTERNAL FILE FOR

C.语言程序设计试题试题与答案

C 语言程序设计试卷,C++语言程序设计试题及答案 一、单项选择题(每题1分,共20分) 1. C 语言规定:在一个源程序中, main 函数的位置(C). A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后 2. 下面四个选项中,均是合法浮点数的选项是 A. +1e+15e-9.403e2 B. -.6012e-4-8e5 C. 123e1.2e-.4+2e-1 D. -e3.8e-45.e-0 3.若a=-14,b=3,则条件表达式 avb?a:b+1的值为(A)。 A. -14 B.-13 C.3 D.4 4. 已知:intn,i=1,j=2; A.1,2B.1,3C.2,2D.2,3 5. 为了判断两个字符串s1和s2是否相等,应当使用(D) A.if(s1==s2) B.if(s 仁s2) C. if(strcm p( s1,s2)) D. if(strcm p( s1,s2)==0) 6. 以下正确的描述是(B) o (B)。 执行语句n=ivj?i++:j++; 则i 和j 的值是(c).

A. 函数的定义可以嵌套,但函数的调用不可以嵌套。 B. 函数的定义不可以嵌套,但函数的调用可以嵌套。 C. 函数的定义和函数的调用均不可以嵌套。 D. 函数的定义和函数的调用均可以嵌套。 7. 在C 语言中,下面对函数不正确的描述是 A. 当用数组名作形参时,形参数组值的改变可以使实参数组之值相应改变。 B. 允许函数递归调用。 C. 函数形参的作用范围只是局限于所定义的函数内。 D. 子函数必须位于主函数之前。 8. 如果在一个函数中的复合语句中定义了一个变量,则以下正确的说法是 A. 该变量只在该复合语句中有效 B. 该变量在该函数中有效 C. 该变量在本程序范围内均有效 D. 该变量为非法变量 9. 以下正确的函数形式是(D)。 A. doublefun(intx,inty){z=x+y;retum z;} B. fun(intx,y){int z; return z;} C. fun(x,y){intx,y;doublez;z=x+y;returnz;} D. doublefun(intx,inty){doublez;z=x+y;returnz;} 10. 以下程序的输出结果是(B)。 #includevstdio.h> (D)。 (A) o

第六届程序设计比赛题目与答案

一、鸡兔同笼 问题描述 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物 输入数据 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a (a < 32768)。 输出要求 n行,每行输出对应一个输入。输出是两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用空格分开。如果没有满足要求的情况出现,则输出2个0。 输入样例 2 3 20 输出样例 0 0 5 10 解题思路 这个问题可以描述成任给一个整数N,如果N是奇数,输出0 0,否则如果N是4的倍数,输出N / 4 N / 2,如果N不是4的倍数,输出N/4+1 N/2。这是一个一般的计算题,只要实现相应的判断和输出代码就可以了。题目中说明了输入整数在一个比较小的范围内,所以只需要考虑整数运算就可以了。 参考程序 1.#include 2.void main( ) 3.{ 4.int nCases, i, nFeet; //nCases 表示输入测试数据的组数,nFeet表示输入的脚数。 5.scanf("%d", &nCases); 6.for(i = 0; i < nCases; i++){ 7.scanf("%d", &nFeet); 8.if(nFeet %2 != 0) // 如果有奇数只脚,则输入不正确, 9.// 因为不论2只还是4只,都是偶数 10.printf("0 0\n"); 11.else if (nFeet%4 != 0) //若要动物数目最少,使动物尽量有4只脚 12.//若要动物数目最多,使动物尽量有2只脚 13.printf("%d %d\n", nFeet / 4 + 1, nFeet / 2); 14.else printf("%d %d\n", nFeet / 4, nFeet / 2); 15.} 16.}

VB程序设计试题及答案

VB程序设计试题及答案(三) 一、单选题 1. Visual Basic是一种面向对象的可视化程序设计语言,采取了 A 的编程机制。 (A) 事件驱动(B) 按过程顺序执行 (C) 从主程序开始执行(D) 按模块顺序执行 2. 若要使标签控件显示时不覆盖其背景内容,要对 D 属性进行设置。 (A) Backcolor (B) BorderStyle (C) Forecolor (D) Backstyle 3. 在Visual Basic中最基本的对象是 C ,它是应用程序的基石,是其他控件的容器。 (A) 文本框(B) 命令按钮 (C) 窗体(D) 标签 4. 要判断在文本框是否按下Enter键,应在文本框的 D 事件中判断。 (A) Change (B)KeyDown (C) Click (D)KeyPress 5. 数学表达式3≤x10 (C) x>=3 Or x<10 (D) x>=3 AND x<10 6. Rnd函数不可能为下列 B 值。 (A) 0 (B) 1 (C) 0.1234 (D) 0.0005 7. 赋值语句:a=123+Mid("123456",3,2)执行后,a变量中的值是 D 。 (A) "12334" (B) 123 (C) 12334 (D) 157 8. 对于语句If x=l Then y=l,下列说法正确的是 C 。 (A) x=l和y=l均为赋值语句 (B) x=l和y=l均为关系表达式 (C) x=l为关系表达式,y=l为赋值语句 (D) x=l为赋值语句,y=l为关系表达式 9. 下面程序段表示求两个数中的大数, D 不正确。 (A) Max=IIf(x>y,x,y) (B) If x>y Then Max=x Else Max=y (C) Max=x (D) Ify>=x Then Max=y If y>=x Then Max=y Max=x 10.当在文本框中输入“ABCD”4个字符时,窗体上显示的是 C 。 Private Sub Text1_Change( ) Print Text1; End Sub (A) ABCD (B) A (C) AABABCABCD (D) A B AB C ABC D ABCD 11.下列哪个程序段不能分别正确显示1!、2!、3!、4!的值 B 。 (A) For i=1 to 4 (B) For i=1 to 4 n=1 For j=1 to i

2014年7月程序设计试题和答案

2014年7月高等教育自学考试Visual Basic 程序设计试题 (课程代码 07759) 一、单项选择题(本大题共16小题,每小题1分,共16分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下列能从字符串“Microsoft”中直接取出子字符串“Micro”的函数是() A. Mid B. Left C. Instr D. String 2.下列不合法的Visual Basic变量名是() A. c_b B. andif C. cb6 D. _xyz 3.如果将布尔常量值True赋值给一个整型变量,则整型变量的值为() A. False B. True C. -1 D.1 4.在窗体上有一个名称为Text1的文本框,影响Text1的输入最大字符数量的属性是() A. Visible B. TabStop C. MaxLength D. SelLength 5.InputBox函数的返回值类型是() A.字符串型 B.变体型 C.数值型 D.数值或字符串型(视输入的数据而定) 6.设a=8,b=6,则执行x=IIf(b\a*a=10,0.-1)后,x的值为() A.1 B.0 C.使用错误 D.-1 7.当某个控件获得焦点时,将会触发的事件是() A. SetFocus B. GotFocus C. ReceiveFocus D.无事件触发 8.类模块文件的扩展名为() A. .cls B. .frx C. .bas D. .vbp 9.将CommonDialog通用对话框设置为“另存为”对话框,须选择的方法为() A. ShowOpen B. ShowColor C. ShowSave D. ShowFont 10.对窗体进行操作时,能实现将窗体装入内存和显示的方法是() A. Hide B. Unload C. Load D. Show 11.按照数据的编码方式,文件可以分为() A.程序文件和数据文件 B.顺序文件盒随机文件 C.ASCII文件盒二进制文件 D.磁盘文件和打印文件 12.在菜单项的属性中,能使该菜单项失效的属性是() A. Enabled B. Checked C. Visible D. Caption 13.要想从过程调用后返回一个整数型结果,则下列过程说明正确的是() A. Sub f1(Byval x As Single)As Integer B. Function f2(Byval x As Integer)As Single C. Sub f3(x As Integer)As Single

程序设计基础试题(附答案)

程序设计基础复习题 一、单选 1、一个完整的计算机系统应该包括() A、系统软件和应用软件 B、计算机及其外部设备 C、硬件系统和软件系统 D、系统硬件和系统软件 2、“裸机”的概念是指() A、正在进行设计还没有组装好的计算机 B、已经组装好但还没有安装任何软件的计算机 C、仅安装了操作系统的计算机系统 D、安装了文字处理软件但没有安装专用数据处理系统的计算机 3、世界上第一台电子数字计算机研制成功的时间是() A、1936年 B、1946年 C、1956年 D、1970年 4、CASE的含义是() A、计算机辅助设计 B、计算机辅助制造 C、计算机辅助教学 D、计算机辅助软件工程5、当前广泛使用的微型计算机是() A、第一代 B、第二代 C、第三代 D、第四代 6、当代计算机的体系结构称为是() A、冯·诺依曼机 B、非冯·诺依曼机 C、图灵机 D、比尔盖茨机 7、硬盘是() A、输入设备 B、输出设备 C、存储设备 D、计算设备 8、下面4句话中,最准确的表述是() A、程序=算法+数据结构 B、程序是使用编程语言实现算法 C、程序的开发方法决定算法设计 D、算法是程序设计中最关键的因素

9、计算机能直接执行的语言是() A、机器语言 B、汇编语言 C、高级语言 D、目标语言 10、解释程序的功能是() A、将高级语言程序转换为目标程序 B、将汇编语言程序转换为目标程序 C、解释执行高级语言程序 D、解释执行汇编语言程序 11、下面4种程序设计语言中,不是面向对象式语言的是() A、JAVA B、Object Pascal C、Delphi D、C 12、不是C语言的基本数据类型是() A、int B、double C、char D、bool 13、在C语言中,为了求两个整数相除之后得到的余数,可以使用运算符() A、/ B、% C、* D、++ 14、数据的逻辑结构分为() A、纯属结构和非线性结构 B、顺序结构和非顺序结构 C、树型结构和图型结构 D、链式结构和顺序结构 15、用链表表示纯属表的优点是() A、便于随机存取 B、便于插入和删除操作 C、花费的存储空间较顺序存储少 D、元素的物理顺序与逻辑顺序相同 16、栈的最主要特点是() A、先进先出 B、先进后出 C、两端进出 D、一端进一端出 17、下面4句结论只有一句是错误的,它是()

最新慈溪市小学生计算机程序设计竞赛复赛试题(定稿)

2012年慈溪市小学生计算机程序设计比赛 复赛试题 比赛时间:2012年12月23日上午8:30—10:30 题目概览 注意事项 1.每位选手都应先在E盘根目录下建立自己的答卷文件夹,该文件夹的名称为自己的考号;2.选手最终所提交的所有文件都必须存放在自己的考生文件夹中,凡错放及以书面形式提交的答卷一律视作无效; 3.每题提交的解答都必须包括以下二个文件,即源程序文件和经编译后生成的可执行文件,其名称必须与各题中所规定的相一致; 4.程序中必须采用文件读写的方法来实现数据的输入和结果的输出,即程序运行时所需输入数据应从题中指定的输入文件中读取(而不得采用键盘输入的方式),程序运行的结果应写入到题中指定的文件中(而不是输出到屏幕上)。 5.用于提供输入数据和记录输出结果的文件的名称都已在题中具体规定,选手程序在调用它们时不得为其指定任何特别的路径。 6.复赛用机房电脑C盘和D盘均已设置成开机还原保护,选手切勿把程序存放在C盘和D 盘中,否则如果重新开机后程序将不复存在。 7.比赛结束后请不要关机。

1.统计成绩(score.pas/exe) 【问题描述】 每次考试或测试后,老师们都要进行成绩统计。假如某次期末考试有语文、数学、英语三门课,现请你编程输出总成绩最高分以及每门学科的最高分。 【输入数据】 输入文件score.in:输入从文件中读取,输入共n+1行。 第1行是一个正整数n(1≤n≤100),表示学生人数,从1到n编号。 接下来n行,每行3个整数,依次表示每个学生的语文、数学、英语成绩(每门课成绩是0到100之间的整数,包括0和100)。 【输出数据】 输出文件score.out:结果输出到文件中,输出共1行,包含4个整数,分别表示三门课总成绩最高分,语文学科的最高分,数学学科的最高分,英语学科的最高分。 【输入输出样例】 【样例解释】 输入3个学生成绩,第1个学生语文、数学、英语三门课的成绩分别为80,67,96,第2个学生语文、数学、英语三门课的成绩分别为88,71,93,第3个学生语文、数学、英语三门课的成绩分别为90,95,80。第3个学生的总成绩最高,为265。语文学科的最高分是90分,数学学科的最高分95,英语学科的最高分96。 【数据范围约定】 所有的输入数据保证1≤n≤100,成绩在0到100分之间(包括0和100)。 2.最小的Y(miny.pas/exe) 【问题描述】 程序设计与数学密切相关,所以兴趣小组的辅导老师经常拿一些有趣的数学题来让大家思考。一次课上,辅导老师又拿出了一个有趣的数学问题,题目是这样的:给你两个正整数x和z,求最小的整数y,使得x×y以后再除以z的余数为0。 比如x=3,z=6,求最小的y。 题目一出,马上有同学说:最小的y是0。 老师说:是的,非常厉害,最小的y是0。那最小的正整数y是多少呢? 【输入数据】 输入文件miny.in:输入从文件中读取,输入共1行,两个正整数,分别表示x和z (1≤x≤2147483647, 1≤z≤2147483647)。 【输出数据】 输出文件miny.out:结果输出到文件中,输出共1行,表示使得x×y以后再除以z的

程序设计习题及答案

2011-2012年度第一学期“C语言程序设计”期末考试复习提纲一、考试题型 二、题例: (一)项目二数据类型、运算符和表达式 选择题: 1. 不合法的C语言整型常量是 A 。 A. –012 B. 0x35 C. 123L D. 8E2 2. 不合法的C语言实型常量是 A 。 A. E3 B. . 123 C. –6.2E4 D. 5.0 3. 不合法的C字符常量是 C 。 A. ’2’ B. ’\101’ C. ’AB’ D. ’\n’ 4.下列四组选项中,均是不合法的用户标识符的选项是 B 。 A. W P_0 do B. b-a goto int C. float la0 _A D. -123 abc TEMP 5.下列四组选项中,均是合法转义字符的选项是 A 。 A. ’\”’’\\’’\n’ B. ’\’’\017’’\”’ C. ’\018’’\f’’xab’ D. ’\\0’’\101’’xlf’ 6. 定义三个变量a、b、c,并分别赋初值为5。能实现该功能的语句是 C 。 A. int a=b=c=5; B. int a,b,c=5; C. int a=5,b=5,c=5; D. int a=5;b=5;c=5; 7. 若x,y,t均为int类型,则执行语句x=y=3;t=++x||++y;后,y的值是 D 。 A. 不定值 B. 4 C. 1 D. 3 8.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A. 4 B. 16 C. 32 D. 52 9.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A. float B. char C. int D. double

C语言程序设计大赛题目

C语言程序设计大赛题 目 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

1.角谷猜想 日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。 *问题分析与算法设计 本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。 题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。 *程序说明与注释 #include<> intmain() { intn,count=0; printf("Pleaseenternumber:"); scanf("%d",&n);/*输入任一整数*/ do{ if(n%2) { n=n*3+1;/*若为奇数,n乘3加1*/ printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n); } else { n/=2;/*若为偶数n除以2*/ printf("[%d]:%d/2=%d\n",++count,2*n,n); } }while(n!=1);/*n不等于1则继续以上过程*/

}

2.四方定理 数论中着名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。 请编程证此定理。 *问题分析与算法设计 本题是一个定理,我们不去证明它而是编程序验证。 对四个变量采用试探的方法进行计算,满足要求时输出计算结果。 #include<> #include<> intmain() { intnumber,i,j,k,l; printf("Pleaseenteranumber="); scanf("%d",&number);/*输入整数*/ for(i=1;i intmain() { inta,b,c,d; printf("Pleaseenteranumber:"); scanf("%d",&a);/*输入整数*/

C语言程序设计竞赛模拟试题

1、编写程序,从键盘上连续输入若干字符,直到回车换行符结束。统计并输出所输入的空 格、大写字母、小写字母,以及其他字符(不含回车换行符)的个数。 #include "" main() { char ch=' '; int i=0, j=0, k=0, m= ?1; do { if (ch>='a' && ch<='z') i++; else if (ch>='A' && ch<='Z') j++; else if (ch == ' ') m++; else k++; }while((ch=getchar())!='\n'); printf ("small letter = %d, capital letter = %d\n", i, j); printf ("space = %d, other = %d\n", m, k); } 2、编写程序,求100~999之间所有的水仙花数。所谓“水仙花数”,即是一个三位数, 它个位、十位、百位数字的立方和,恰好等于该数本身。 #include "" main() { int i, j = 1; int nf, ns, nt; for (i =100; i<=999; i++) { nf = i%10; ns = i/10%10; nt = i/100; nf = nf * nf * nf; ns = ns * ns * ns; nt = nt * nt * nt; if ((nf + ns + nt) == i) { printf ("The %d's number is %d\n", j, i); j++; } } 3、编写程序,求1-1/2+2/3-3/4+4/5-5/6+6/7….-99/100=

程序设计部分试题及答案

第1题/*------------------------------------------------ 【程序设计】 -------------------------------------------------- 功能:从键盘为一维整型数组输入10个整数,调用fun 函数找出其中最小的数,并在main函数中输出。 请编写fun函数。 -------------------------------------------------*/ #include "" void wwjt(); int fun(int x[],int n) { /**********Program**********/ /********** End **********/ } main() { int a[10],i,min; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%3d",a[i]); printf("\n"); min=fun(a,10); printf("%d\n",min); wwjt(); } void wwjt() {

FILE *IN,*OUT; int iIN[10],i; int iOUT,iCOUNT; IN=fopen("","r"); if(IN==NULL) { printf("Please Verify The Currernt Dir..it May Be Changed"); } OUT=fopen("","w"); if(OUT==NULL) { printf("Please Verify The Current Dir.. it May Be Changed"); } for(i=0;i<10;i++) { for(iCOUNT=0;iCOUNT<10;iCOUNT++) fscanf(IN,"%d",&iIN[iCOUNT]); iOUT=fun(iIN,10); fprintf(OUT,"%d\n",iOUT); } fclose(IN); fclose(OUT); } 参考答案 ---------------------- int min,i; min=x[0]; for(i=1;i

C程序设计试题及答案

20XX年lO月高等教育自学考试全国统一命题考试 C++程序设计试卷 (课程代码04737) 本试卷共8页,满分l00分,考试时间l50分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸。2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。3.第二部分为非选择题。必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。4.合理安排答题空间,超出答题区域无效。 第一部分选择题 一、单项选择题(本大题共20小题,每小题l分,共20分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。未涂、错涂或多涂均无分。 1.在编译指令中,宏定义使用的指令是 A.#include B.#define C.#if D.#else 2.基类中的protected成员,通过哪种派生,其在派生类中的可见性为protected? A.public和private B.public和protected C.protected和private D.仅protected 3.基类中的public成员,通过public派生,基在派生类中的可见性为 A.不可访问 B.private C.protected D.public 4.不同对象调用同名函数,但导致完全不同行为的现象称为 A.抽象 B.封装 C.继承 D.多态性 5.头文件扩展名为 A.cpp B.h C.ub D.ob 6.声明函数为内联使用的关键字为 A.const B.inline C.short D.signed 7.设类A中有静态数据成员x,两个A类对象a和b,若a.x=10,则b.x的值为 A.9 B.10 C.1l D.不能确定

文本预览