C语言编写函数,利用指针做参数求解鸡兔同笼问题。 函数接口定义: int cocks_rabbits ( int heads,int foots,int *cocks,int *rab ); 裁判测试程序样例: #include <stdio.h> int cocks_rabbits ( int heads,int foots,int *cocks,int rab ); int main() { int h,f,c,r ; scanf("%d%d", &h, &f); if (cocks_rabbits (h ,f, &c,&r )) printf("cocks = %d\nrabbits = %d", c, r); else printf("No solution !"); return 0; } / 请在这里填写答案 */
时间: 2023-12-12 13:04:40 浏览: 136
下面是函数的实现代码:
```c
int cocks_rabbits(int heads, int foots, int *cocks, int *rab) {
int flag = 0;
for (int i = 0; i <= heads; i++) {
int j = heads - i;
if (2 * i + 4 * j == foots) {
*cocks = i;
*rab = j;
flag = 1;
break;
}
}
return flag;
}
```
函数的思路是通过枚举鸡的数量来求解兔子的数量,然后判断是否符合题目给定的头数和脚数,如果符合,就将鸡和兔子的数量通过指针返回,返回值为1表示有解,返回值为0表示无解。
相关问题
编写函数,利用指针做参数求解鸡兔同笼问题。 函数接口定义: int cocks_rabbits ( int heads,int foots,int *cocks,int *rab );c语言
函数实现如下:
```c
int cocks_rabbits(int heads, int foots, int* cocks, int* rabbits) {
int err = -1; // 没有解决方案的错误码
if (foots % 2 == 1 || foots < 2 * heads || foots > 4 * heads) {
// 若脚数为奇数、脚数不足或超出范围,返回错误码
return err;
}
*rabbits = (4 * heads - foots) / 2;
*cocks = heads - *rabbits;
if (*cocks < 0 || *rabbits < 0) { // 若鸡或兔子数量为负数,返回错误码
return err;
}
return 0;
}
```
该函数首先根据鸡和兔子的头数、脚数的限制条件,判断是否存在解决方案。如果存在,则根据数学公式计算出鸡和兔子的数量,并将结果存储在传入的指针变量中。如果计算出的鸡或兔子数量为负数,说明计算有误,返回错误码。若计算成功,则返回0表示无错误。
鸡兔同笼是中国古代的数学名题之一。 大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的: 今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?这四句话的意思是: 有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔? 本题要求编写函数,利用指针做参数求解鸡兔同笼问题。头和脚的数目从键盘输入。 函数接口定义: void fun ( int h,int f,int *p,int *q ); 其中h和f由主函数传入,代表头和脚的数目, (假定输入数据都合理)。 函数fun可求出鸡和兔的数目,并在主函数输出。 裁判测试程序样例: 在这里给出函数被调用进行测试的例子。例如: #include <stdio.h> void fun ( int h,int f,int *p,int *q ); int main() { int h,f,x,y ; scanf("%d%d", &h, &f); fun (h ,f, &x,&y ); //x、y代表鸡和兔的数目 printf("cocks=%d,rabbits=%d", x,y); return 0; } /* 您填写的代码将嵌入这里,注意无需写主函数,只需完成fun的设计 */ 输入样例: 35 94 输出样例: cocks=23,rabbits=12 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
下面是函数实现的示例代码:
```c
#include <stdio.h>
void fun(int h, int f, int *p, int *q) {
*p = (4 * h - f) / 2;
*q = h - *p;
}
int main() {
int h, f, x, y;
scanf("%d%d", &h, &f);
fun(h, f, &x, &y);
printf("cocks=%d,rabbits=%d", x, y);
return 0;
}
```
函数 `fun` 的实现比较简单,其中 `h` 和 `f` 分别表示头和脚的数目,`p` 和 `q` 是输出参数,分别表示鸡和兔的数目。根据鸡和兔的脚的数目是不同的,可以列出一个二元一次方程组:
```
2p + 4q = f
p + q = h
```
将上面的方程组化简,得到:
```
p = (4h - f) / 2
q = h - p
```
最后,输出鸡和兔的数目即可。注意,在 `fun` 函数中,需要使用指针来修改输出参数的值。
阅读全文