C语言的简单函数题?

我写了的运行超时,不知怎么搞了,帮我看看吧,我一新手不懂啊,题目如下
幼儿园给 p 位小朋友发 q 颗糖。结果发现:
若每人发 a 颗,则多 b 颗;
若每人发 c 颗,则差 d 颗。
请问:p、q 各为多少?
函数原型
// 剩余不足问题
int SurplusShortage(int *p, int *q, int a, int b, int c, int d);
说明:若问题有解,则将小朋友和糖的数量保存到 p 和 q 所指示的变量中,函数值为1(真);否则不改变 p 和 q 所指示的变量,函数值为0(假)。
裁判程序
#include <stdio.h>

// 剩余不足问题
int SurplusShortage(int *p, int *q, int a, int b, int c, int d);

int main()
{
int a, b, c, d, p, q;
scanf("%d %d %d %d", &a, &b, &c, &d);
if (SurplusShortage(&p, &q, a, b, c, d))
{
printf("%d %d\n", p, q);
}
else
{
printf("None\n");
}
return 0;
}

/* 你提交的代码将被嵌在这里 */
输入格式
a b c d
输出格式
p q
输入样例1
6 8 8 6
输出样例1

7 50

我写的
int SurplusShortage(int *p, int *q, int a, int b, int c, int d){
int x=0;
while((a*x+b)==(c*x-d)){
x++;
}
*p=x;
*q=a*x+b;
}

#include<stdio.h>


// 剩余不足问题

int SurplusShortage(int *p, int *q, int a, int b, int c, int d);


int main()

{

int a, b, c, d, p = 0, q = 0;

scanf("%d %d %d %d", &a, &b, &c, &d);

if (SurplusShortage(&p, &q, a, b, c, d))

{

printf("%d人 分 %d颗 糖\n", p, q);

printf("%d - (%d * %d) = %d\n", q, p, a, b);

printf("%d - (%d * %d) = -%d\n\n\n\n", q, p, c, d);

}

else

{

printf("None\n");

}

return 0;

}


int SurplusShortage(int *p, int *q, int a, int b, int c, int d)

{

int x = 0;

do

{

x++;

} while((a*x+b) != (c*x-d) && x <= 9999);


// p = 5

// q = 22

// 4 2

// 5 3


*p=x;

*q=a*x+b;


if(*p != 0 && *p <= 9999)

{

return 1;

}

else

{

return 0;

}

}


追问

还有一个地方不知道怎么办啊,就是输入a b c d,要输出,p q

追答

printf("%d人 分 %d颗 糖\n", p, q);

这一行不是已经打印了p q吗,大哥

你把我的代码直接复制到代码编译器,跑一下,看看能不能跑。我是vc++6的环境

追问

你的输出是none,可我的题目是要输出 p q对的

不知道怎么搞了

我好像看错了,没事了😂

谢谢了,pta的题目就是有点奇怪

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-23
传值调用。
在函数中改变形参(z)的值, 不会影响实参值(a)
于是a还是初始值38本回答被提问者采纳