Chinaunix首页 | 论坛 | 博客
  • 博客访问: 140071
  • 博文数量: 45
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 495
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-21 20:14
文章分类
文章存档

2012年(2)

2007年(43)

我的朋友
最近访客

分类: C/C++

2007-08-22 17:48:14

二.问题求解 (每题5分,共10分)

 

1.         一个家具公司生产桌子和椅子。现在有113个单位的木材。每张桌子要使用20个单位的木材,售价是30元;每张椅子要使用16个单位的木材,售价是20元。使用已有的木材生产桌椅(不一定要把木材用光),最多可以卖        元钱。

 

2.         75名儿童到游乐场去玩。他们可以骑旋转木马,坐滑行铁道,乘宇宙飞船。已知其中20人这三种东西都玩过,55人至少玩过其中的两种。若每样乘坐一次的费用是5元,游乐场总共收入700,可知有       名儿童没有玩过其中任何一种。

 

 

三.阅读程序 (每题8分,共32分)

 

1#include

int main(){

  int a = 79, b = 34, c = 57, d = 0, e = -1;

  if (a < c || b > c) d = d + e;

  else if (d + 10 < e) d = e + 10;

  else d = e - a;

  printf("%d\n", d);

  return 0;

}

输出:          

 

2#include

int main(){

    int i, j;

    char str1[] = "pig-is-stupid";

    char str2[] = "clever";

    str1[0] = 'd'; str1[1] = 'o';

    for (i = 7, j = 0; j < 6; i++, j++)

str1[i] = str2[j];

    printf("%s\n", str1);

    return 0;

}

输出:              

 

3#include

int main(){

  int u[4], a, b, c, x, y, z;

  scanf("%d %d %d %d",&(u[0]), &(u[1]), &(u[2]), &(u[3]));

  a = u[0] + u[1] + u[2] + u[3] - 5;    

  b = u[0] * (u[1] - u[2] / u[3] + 8);   

  c = u[0] * u[1] / u[2] * u[3];       

  x = (a + b + 2) * 3 - u[(c + 3) % 4];   

  y = (c * 100 - 13) / a / (u[b % 3] * 5);   

 if ((x + y) % 2 == 0) z = (a + b + c + x + y) / 2;

  z = (a + b + c – x - y) * 2;

  printf("%d\n", x + y - z);

  return 0;

}

输入:2 5 7 4

输出:     

 

4#include

char c[3][200];

int s[10], m=3, n=10;

void numara(){

  int i, j, cod, nr;

  for (j = 0; j < 10; j++){

     nr = 0; cod = 1;

     for (i = 0; i < 3; i++){

         if (c[i][j] == '1'){

            if (!cod){cod = 1; s[nr]++; nr = 0;}

         }

         else{

            if (cod){nr = 1; cod = 0;}

            else nr++;

         }

     }

     if (!cod) s[nr]++;

  }

}

int main(){

  int i;

  scanf("%d %d\n", &m, &n);

  for (i = 0; i < m; i++) gets(c[i]);

  numara();

  for (i = 1; i <= m; i++)

if (s[i] != 0) printf("%d %d ", i, s[i]);

  return 0;

}

输入:

3 10

1110000111

1100001111

1000000011

输出:            

 

四、完善程序 (4空,每空2分,后5空,每空4分,共28)

 

1.三角形内切圆的面积

题目描述:

给出三角形三边的边长,求此三角形内切圆(如下图所示,三角形的内切圆是和三角形三边都相切的圆)的面积。

输入:

三个正实数abc(满足a+b>cb+c>ac+a>b, 表示三角形三边的边长。

输出:

三角形内切圆的面积,结果四舍五入到小数点后面2位。

输入样例:

3 4 5

输出样例:

3.14

程序:

#include

#include

int main(){

    float a, b, c, r, s, t;

    scanf("%f %f %f", &a, &b, &c);

    s = (  ) / 2;

    t =     (s * (s - a) * (s - b) * (s - c));

    r = t / s;

    printf("  (3)   \n", 3.1415927 * r *     );

    return 0;

}

 

2Joseph

题目描述:

原始的Joseph问题的描述如下:有n个人围坐在一个圆桌周围,把这n个人依次编号为1n。从编号是1的人开始报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m个人又出列,,如此反复直到所有的人全部出列为止。比如当n=6m=5的时候,出列的顺序依次是546231

现在的问题是:假设有k个好人和k个坏人。好人的编号的1k,坏人的编号是k+12k。我们希望求出m的最小值,使得最先出列的k个人都是坏人。

输入:

仅有的一个数字是k0 < k <14)。

输出:

使得最先出列的k个人都是坏人的m的最小值。

输入样例:

4

输出样例:

30

程序:

#include

long k, m, begin;

int check(long remain){

    long result = (          ) % remain;

    if (          ){

       begin = result; return 1;

    }

    else return 0;

}

int main(){

    long i, find = 0;

    scanf("%ld", &k);

    m = k;

    while(  ③      ) {

       find = 1; begin = 0;

       for (i = 0; i < k; i++)

           if (!check(  ④     )){

              find = 0; break;

           }

       m++;

    }

    printf("%ld\n",   ⑤     );

    return 0;

}

 
阅读(521) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~