C语言 12个球称3次 找出其中一个坏球
2016-10-06 23:31
232 查看
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> /* 12个球 其中有一个球是坏球,坏球特征:可能较重,可能较轻,但是重量不与好球相等 请用if else 模拟天枰 称3次 找出这个坏球 */ int main() { time_t ts; unsigned int num = (unsigned int)time(&ts); srand(num); int a[12] = {-1}; int temp = rand() % 13; int number = rand() % 3; int ret = 1; for (int i = 0; i < 12; i++) //生产随机数 { a[i] = rand() % 1 + 1; } while (ret) //生成坏球随机数 { if (number != 1) { a[temp] = number; ret = 0; } else { number = rand() % 3; } } int x = 0; int y = 0; int z = 0; for (int i = 0, j = 12 / 3, k = (12 / 3) * 2; i < 12 / 3; i++, k++, j++) //分组 { x += a[i]; // A组 y += a[j]; // B组 z += a[k]; // C组 } printf("%d,%d,%d\n", x, y, z); for (int i = 0; i < 12; i++) { printf("%d ", a[i]); } printf("\n"); if (x > y) //1 2 3 4 > 5 6 7 8 假设 A组 大于 B组 { x -= (a[2] + a[3]); x += a[4] + a[5] + a[6]; // X组 1 2 5 6 7 y -= a[4] + a[5] + a[6]; y += z; // Y组 8 9 10 11 12 if (x > y) //分组后 X > Y 的话 说明 1 2为重球 或者 8号为轻球 { if (a[0] > a[1]) { printf("1号球是重球 重量为%d\n", a[0]); } else if (a[0] < a[1]) { printf("2号球是重球,重量为%d\n", a[1]); } else { printf("8号求是轻球,重量为%d\n", a[7]); } } else if (x == y) //如果相等 说明 问题出在 3 4号球 为重球 { if (a[2] > a[3]) { printf("3号球是重球 重量为:%d\n", a[2]); } else { printf("4号球是重球 重量为:%d\n", a[3]); } } else //如果 X < Y 说明 5 6 7 是轻球 { if (a[4] == a[5]) { printf("7号球是轻球 重量为:%d\n", a[6]); } else if (a[5] == a[6]) { printf("5号球是轻球 重量为:%d\n", a[4]); } else { printf("6号球是轻球 重量为:%d\n", a[5]); } } } else if (x < y) //1 2 3 4 < 5 6 7 8 不多说了 和上面的一样 { x -= (a[2] + a[3]); x += a[4] + a[5] + a[6]; // X组 1 2 5 6 7 y -= a[4] + a[5] + a[6]; y += z; // Y组 8 9 10 11 12 if (x > y) { if (a[4] > a[5]) { printf("5号球是重球 重量为%d\n", a[4]); } else if (a[4] < a[5]) { printf("6号球是重球 重量为%d\n", a[5]); } else { printf("7号球轻球 重量为%d\n", a[6]); } } else if (x < y) { if (a[0] > a[1]) { printf("2号球是轻球 重量为:%d\n", a[1]); } else if (a[0] < a[1]) { printf("1号球是轻球 重量为%d\n", a[0]); } else { printf("8号球是重球 重量为:%d\n", a[7]); } } else { if (a[2] > a[3]) { printf("4号球是轻球 重量为:%d\n", a[3]); } else { printf("3号球是轻球 重量为:%d\n", a[2]); } } } else { int text1 = 0, text2 = 0; text1 = a[0] + a[1] + a[2]; text2 = a[8] + a[9] + a[10]; if (text1 > text2) { if (a[8] == a[9]) { printf("11号球是轻球 重量为%d\n", a[10]); } else if (a[8] == a[11]) { printf("10号球是轻球 重量为%d\n", a[9]); } else { printf("9号球是轻球 重量为%d\n", a[8]); } } else if(text1 == text2) { if (a[0] > a[11]) { printf("12号球是轻球 重量为%d\n", a[11]); } else { printf("12号球是重球 重量为%d\n", a[11]); } } else { if (a[8] == a[9]) { printf("11号球是重球 重量为%d\n", a[10]); } else if (a[8] == a[11]) { printf("10号球是重球 重量为%d\n", a[9]); } else { printf("9号球是重球 重量为%d\n", a[8]); } } } system("pause"); return 0; }
相关文章推荐
- 有12个乒乓球,其中一个是坏的,请你用天枰称3次将坏球分辨出来。你会用什么方法呢?
- 一共有12个球,其中一个的重量与其他11个球不同。现在你有一个天平,并有3次机会(仅有3次),试着找出这个重量不同的球
- [ 面试] 12个小球用天平秤3次,找出其中一个重量不同的。
- [ 面试] 12个小球用天平秤3次,找出其中一个重量不同的。
- 12个球,其中有1个坏球和其他11个重量不一样,给你一个天平,称3次,找出不一样的那个
- 有12个球,其中有1个次品,但不知道次品比标准球重还是轻.问:怎样用一个天平只进行3次称量将这个次品选出?
- C语言:编这样一个程序,用户输入10个整数,程序找出其中的最大值和最小值
- 12个球,其中一个次品,用1个天平,称最少次数找出这个次品
- 12个球找出其中不同的一个想法
- 有12个球,形状大小一样,有一个重量不一样,只能用天平称3次,找出那个球,应该怎么称?
- 12个球,外形相同,其中有一个球重量与其余11球不同,如何使用天平尽量少次数的测量找出这个小球且判别它比正常球轻还是重
- 12个小球,有1个质量与其它不同,提供一个天平,要求称3次找出特别的小球是轻还是重
- C语言:编这样一个程序,用户输入10个整数,程序找出其中的最大值和最小值
- 一个全是32位整数的大数组,除了其中一个数字出现2次外,其余的数字都出现了3次。如何找出那个只出现了两次的数字?
- 12个球,有一个不同(不知是轻是重),称3次找出那个球
- 有12个球 其中有1个与其他11个质量不同 但不知道是重还是轻 给你一个天平用3次把那个球找出来
- 12个小球中,有一个小球质量M与其他11个小球不同,只能测试3次,怎么可以找出它?
- 12个外表一样的球,其中一个与另外11个质量不同.用天平称三次把这个球找出并说明其比其它球轻或重
- 数组中所有数都出现了3次,除了其中一个数,找出这个数