今日练习:
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;}