c语言 求和1+1/2+1/3+...+1/n,但如果n是负数的话,需要重新输入

题目要求:输入一个n,求1+1/2+...+1/n的和如果n是负数,则输出“请输入一个正数:”然后重新开始最后输出为“总和为...”我主要不会第二部分。我是这样写的,但总... 题目要求:
输入一个n,求1+1/2+...+1/n的和
如果n是负数,则输出“请输入一个正数:” 然后重新开始
最后输出为 “总和为...”

我主要不会第二部分。
我是这样写的,但总有error

#include <stdio.h>
int main()
{
float n, sum=0;
printf ("输入一个数字计算:\n");
scanf ("%f",&n);
if (n < 0)
{ printf(“请输入一个正数: ");
scanf("%f",&n);

for (int i=1; i<=n; i++){
sum = sum + 1/i;}
printf("最后的和是: %f",sum);

}}
展开
 我来答
百度网友53ee9cb
推荐于2016-10-25
知道答主
回答量:30
采纳率:0%
帮助的人:14.5万
展开全部
知道你的意思了,你的错误,要我指出来的话,再追问
给出我的代码
#include <stdio.h>
int main()
{
int i,n; //n要改为int型,因为在循环里面,有i<n的表达式,保持类型一致
float sum=0;
printf ("输入一个数字计算:\n");
scanf ("%f",&n);

while (n < 0)
{ printf("请输入一个正数: ");
scanf("%f",&n);
}

for ( i=1; i<=n; i++)
{
sum = sum + (float)1/i; //这里要强制类型转换,不然1/i 的结果为0
}
printf("最后的和是: %f",sum);
return 0; //要给出返回值,因为你的main函数是int型

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名胖鸟
2014-09-13 · TA获得超过110个赞
知道答主
回答量:56
采纳率:0%
帮助的人:25.9万
展开全部
#include <stdio.h>
int main()
{
  float sum=0;
  int n;//严格要求自己,你该是整型
  printf ("输入一个数字计算:\n");
  scanf ("%d",&n);//对应修改为%d
  while(n < 0)//用while的意思是只要是负数就重输,if只能判断一次。
    { 
      printf(“请输入一个正数: ");
      scanf("%d",&n);
    }//while在这里结束
    
  for (int i=1; i<=n; i++){
    sum = sum + 1.0/i;}//之所以结果错误是因为1是整型,i也是整型,所以1/i是整数,导致结果不多,所以用1.0除才对。
    
   printf("最后的和是: %f",sum);

}

希望可以帮到你。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xyzprb
2014-09-13 · TA获得超过133个赞
知道答主
回答量:139
采纳率:0%
帮助的人:71.3万
展开全部
bool flag = true;
while (flag)
{
printf("输入一个数字计算:\n");

scanf("%f", &n);

if (n<0)

{ printf("请输入一个正数:");}

else

flag = false;

//如需考虑n=0的情况你自己酌情处理

}

... //其余部分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ymh060214
2014-09-13 · TA获得超过5834个赞
知道答主
回答量:164
采纳率:0%
帮助的人:38.8万
展开全部
1+1/(n+1)
循环n-1 次,
要循环, 找循环语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式