今日练习:
48、猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩下一个桃子了。求第1天共摘了多少个桃子。
49、两个乒乓球队进行比赛,各出3个人。甲队为 A, B, C3人,乙对为 X, Y, Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单, A 说他不和 X 比赛, C 说他不和 x, z 比赛,请编程程序找出3对赛手的名单。
50、选择法对10个数排序
猴子吃桃问题。求第1天共摘了多少个桃子。
猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩下一个桃子了。
运行代码
int main()
{int day = 9;int day_1 = 0;int day_2 = 1;while (day > 0){day_1 = (day_2 + 1) * 2;day_2 = day_1;day--;}printf("第一天共摘了%d 个桃子\n", day_1);return 0;
}
运行结果
两个乒乓球队进行比赛,各出3个人。甲队为 A, B, C3人,乙对为 X, Y, Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单, A 说他不和 X 比赛, C 说他不和 x, z 比赛,请编程程序找出3对赛手的名单。
运行代码
int main()
{char i = '0';char j = '0';char k = '0';//i是a的对手,j是b的对手,k是c的对手for (i = 'x'; i <= 'z'; i++){for (j = 'x'; j <= 'z'; j++){if (i != j){for (k = 'x'; k <= 'z'; k++){if (i != k && j != k){if (i != 'x' && k != 'x' && k != 'z'){printf("A 的对手是 %c \nB 的对手是 %c \nC 的对手是 %c \n", i, j, k);}}}}}}return 0;
}
运行结果
选择法对10个数排序
解题思路
设有十个元素(arr[0]--arr[9]),将arr[0]与arr[1]--arr[9]进行比较,若arr[0]比arr[1]--arr[9]都小,则不进行交换,若arr[1]--arr[9]中有一个以上比arr[0]小,则将其中最大的一个与arr[0]交换,此时arr[0]中存放了10个中最小的数,依此类推共进行9轮比较
运行代码
int main()
{int i = 0;int j = 0;int min = 0;int temp = 0;int arr[11];printf("输入数据:\n");for (i = 1; i <= 10; i++){printf("arr[%d]=", i - 1);scanf("%d", &arr[i]);}printf("\n");printf("原样输出:\n");for (i = 1; i <= 10; i++){printf("%5d", arr[i]);}printf("\n");for (i = 1; i <= 9; i++){min = i;for (j = i + 1; j <= 10; j++){if (arr[min] > arr[j]){min = j;}}temp = arr[i];arr[i] = arr[min];arr[min] = temp;}printf("排序输出:\n");for (i = 1; i <= 10; i++){printf("%5d",arr[i]);}printf("\n");return 0;
}
运行结果
求一个3 * 3的整型矩阵对角线元素之和
运行代码
int main()
{int arr[3][3];int sum = 0;int i = 0;int j = 0;printf("输入数据:\n");for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){scanf("%3d", &arr[i][j]);}}for (i = 0; i < 3; i++){sum = sum + arr[i][i];}printf("sum=%d\n", sum);return 0;
}