C语言编程高手请进~

计算X的Y次方,其中Y为整数(可以是负整数或0),X为实型(不得使用pow函数计算)。自己瞎编了下,希望能指出其中的错误~谢谢咯~#include<stdio.h>int... 计算X的Y次方,其中Y为整数(可以是负整数或0),X为实型(不得使用pow函数计算)。
自己瞎编了下,希望能指出其中的错误~谢谢咯~

#include<stdio.h>

int main (void)

{
int i, y;
float x, t, ss;

printf("Input x, y:");
scanf("%d, %d", &x, &y);
t = x;

if (y > 0)
{
for (i = 1; i <= y; i++)
{
if (y != i)
{
t = t * x;
}
else
{
return 0;
}

}
printf("%-6f^%d=%-6f", x, y, t);

}

if (y < 0)
{
for(i = 1; i <= (- y); i ++)
{
if (( - y) != i)
{
t = t * x;
ss = 1 / t;
}
else
{
return 0;
}
}

printf("%-6f^%d=%-6f", x, y, ss);

}
if (y == 0 && x == 1)
{
printf("%-6f^%d=%-6f", x, y, 1);
return 0;
}

}
展开
 我来答
匿名用户
2010-01-30
展开全部
虽然本人不是什么c语言高手,不过对于lz的程序,本人还是有些许拙见要向lz说明的:
首先是语法错误:程序中的x变量是float型的,但scanf中读入的x却是整型的,应改为scanf("%f, %d", &x, &y)比较好。
其次是算法有问题:lz是不是每次运行都得不到结果呢??原因是程序中滥用了return 0。例如:
if (y > 0)
{
for (i = 1; i <= y; i++)
{
if (y != i)
{
t = t * x;
}
else
{
return 0;
}

}
printf("%-6f^%d=%-6f", x, y, t);

}
其中if (y != i)……else本人是看了好几遍也不知道lz有何用意,而且for循环的最后一次循环一定会有y==i,于是会导致循环进入了else语句中执行return 0,那结果都返回了还怎么执行printf("%-6f^%d=%-6f", x, y, t)语句呢??下面的也差不多是这个问题了!!!
最后也就是一楼提到的语句简洁问题,我就有点不明白楼主为什么那么喜欢在if………语句中都用到printf("%-6f^%d=%-6f", x, y, t),其实这个句子最后统一再用也行,当然这个也只是小问题了!!!主要的还是前两个问题使楼主的程序不能正确运行!!
下面是我写的程序,基本上也是秉承了lz的算法,只是有些改动。
int main(void)
{
int i, y;
float x,t=1;

printf("Input x, y:");
scanf("%f, %d", &x, &y);

if (y > 0)
for (i = 1; i <= y; i++)t=t*x;
else if (y < 0)
{
for(i = 1; i <= - y; i ++)t=t*x;
t=1/t;
}
printf("%-6f^%d=%-6f", x, y, t);
return 0;
}
匿名用户
2010-01-30
展开全部
ls的回答不错

即指明了错误的方向原因

又给余了lz自己寻找改正的空间

恩, 向上顶
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友95f304509
2010-01-29
知道答主
回答量:9
采纳率:0%
帮助的人:1.1万
展开全部
问题大概有3个,读错,有的条件重复,注意语句的简洁。

首先提醒下,scanf要读的是两个不同的型,而不是%d,%d

后面的就交给你自己了……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式