永发信息网

求找错C程序

答案:2  悬赏:0  手机版
解决时间 2021-04-03 16:14
  • 提问者网友:富士山上尢
  • 2021-04-02 15:19
求找错C程序
最佳答案
  • 五星知识达人网友:大漠
  • 2021-04-02 16:15
这种题,直接用递归好啦,还有就是,你的代码风格太差了,这个要改!
 
 

代码如下,格式跑了,不管~~
#include "stdio.h"
long function(int in)

{
 if (in >= 0)
 {
  return 5 * in - 10000;
 }
 else 
 {
  return function(function(-in));
 }
}
 
int main(int argc, char* argv[])

{
 int count   = 0;
 long number = 0;
 long result = 0;
 
 scanf("%d", &count);

 while(count > 0)
 {
  scanf("%d", &number);
  result = function(number);

  printf("%d
", result);  count--;
 }
 return 0;
}
 
 
 
追问谢谢你。。。不过我是刚学一个月的新生,你程序再好没用,没学过。。。。交上去就露馅开。。。。所以我不求新程序,只求改错。。。。还是谢谢你。。。

全部回答
  • 1楼网友:有你哪都是故乡
  • 2021-04-02 16:51
你的程序可以运行但好像结果不对,可能因为你的和题意不一样,题是只有当x大于0时才进行一次5*x-10000然后才输出,但你的事只判断一次就输出了。应该加一个循环,当x>=0时结束循环然后进行一次5*x-10000然后输出。我也不太清楚,这样可能就对了,如果错了见谅,我没学多久
#include
int main()
{
int b,n;
long x,y;
scanf("%d",&n);
b=1;
while(b<=n)
{
scanf("%ld",&x);
while(x<0)
{
x=5*(-x)-10000;
}
printf("%ld\n",y=5*x-10000);
b++;
}
return 0;
}追问谢谢你的详细回答。但是1我的程序是同时计算几个y的,但你的不是2即使不考虑一,当x小于0时,如果再次的出的x仍是负数,显然是不能代入算的,而应再次取相反数。。3我们学校给出的结果是运行错误而不是答案错误。。还是很谢谢你,话说我也刚开始学,一起加油吧。。。谢谢
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯