目录
一、猴子吃桃问题。
二、两个乒乓球队进行比赛,各出3个人。甲队为A,B,C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比赛,C说他不和X,Z比赛,请编程程序找出3对赛手的名单
三、选择法对 10 个数排序
一、猴子吃桃问题。
猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩下一个桃子了。求第1天共摘了多少个桃子。
根据题目描述,我们可以知道:
- 第10天早上剩下1个桃子。
- 第9天早上剩下的桃子数量是(第10天剩下的桃子数量+1)*2,因为第10天猴子吃了一半多一个。
- 以此类推,我们可以逆向推算出第1天猴子摘了多少个桃子。
代码如下:
#include <stdio.h>
int main()
{
int day=10;
int last=1;
int i;
while(day>1)
{
last=(last+1)*2;
day--;
}
printf("%d",last);
return 0;
}
运行结果:
二、两个乒乓球队进行比赛,各出3个人。甲队为A,B,C3人,乙队为X,Y,Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比赛,C说他不和X,Z比赛,请编程程序找出3对赛手的名单
代码如下:
#include <stdio.h>
int main()
{
char A, B, C;
for (A = 'X'; A <= 'Z'; A++)
{
for (B = 'X'; B <= 'Z'; B++)
{
if (A != B)//确保不将同一队的队员配对
{
for (C = 'X'; C <= 'Z'; C++)
{
if (A != C && B != C)//确保不将同一队的队员配对
{
if (A != 'X' && C != 'X' && C != 'Z')//A不和X比赛,C不和X、Z比赛
{
printf("A vs %c\n", A);
printf("B vs %c\n", B);
printf("C vs %c\n", C);
}
}
}
}
}
}
return 0;
}
运行结果如下:
三、选择法对 10 个数排序
选择排序的题已经出现了很多,详情可以查看C语言日常练习 Day6
代码如下:
#include <stdio.h>
void selection_sort(int arr[],int n)
{
int i,j,temp,max;
for(i=0;i<n-1;i++)
{
max=i;
for(j=i+1;j<10;j++)
{
if(arr[j]>arr[max])
{
max=j;
}
}
temp=arr[max];
arr[max]=arr[i];
arr[i]=temp;
}
}
int main()
{
int i,n;
int arr[10]={0};
for(i=0;i<10;i++)
{
scanf("%d",&arr[i]);
}
n=sizeof(arr)/sizeof(arr[0]);
selection_sort(arr,n);
for(i=0;i<10;i++)
{
printf("%4d",arr[i]);
}
return 0;
}