| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 669 人关注过本帖
标题:新手求指教,谢谢!
只看楼主 加入收藏
烟霭纷纷
Rank: 1
来 自:广东广州
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-11-5
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:7 
新手求指教,谢谢!
【习题5.042】m,n和s是系统定义的外部整型变量(不需要
自行定义)。编写程序,根据m的值求满足1+2+...+n<m的
最大n,并将1+2+...+n的结果存放到s。例如,若m=50,则
n=9,s=45。
**********/
void main()
{
       int i;
       for (i=1;s<m;i++)
       s=s+i;
       n=i-2;
       s=s-i+1;
}
请问为什么无法通过?

还有这个,求1-1/2+1/3-……-1/100:
#include<stdio.h>
int main()
{
float s=0;
int i,j,n;
scanf("%d",&n);
for(i=1,j=1;i<=n;i++)
{i=i*j;
j=(-1)*j;
s=s+1.0/i;}
printf("%f",s);
}
请问为什么无法通过?
真心感谢!

[ 本帖最后由 烟霭纷纷 于 2013-11-5 17:34 编辑 ]
搜索更多相关主题的帖子: 编写程序 include 
2013-11-05 17:29
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:10 
printf("%f",s);
???
貌似你的 S 定义的是整形吧,还有你的第一个程序不完整怎么编译通过...

三十年河东,三十年河西,莫欺少年穷!
2013-11-05 17:32
烟霭纷纷
Rank: 1
来 自:广东广州
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-11-5
收藏
得分:0 
回复 2楼 韶志
第一个是anyview系统给的题目,不必写出其他语句了,只需写出循环即可。
第二个我又重发了,还是无法输出结果

非淡泊无以明志,非宁静无以致远
2013-11-05 17:36
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:10 
回复 3楼 烟霭纷纷
   先说你的第二个程序...
j=(-1)*j;     这个,我理解你的想法,但是不能这样做
为什么呢?因为前面有这条语句--  i=i*j;   这样不仅会改变j的符号,i 的符号也会变得混乱,你想想如果 i 是负数,这个for循环还有意义吗?就会造成死循环...
正确写法应该是这样的
程序代码:
#include<stdio.h>
int main()
{
    float t,s=0;
    int i,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        if(i%2==0)
        t=-(1.0/i);
        else
        t=1.0/i;
        s=s+t;
    }
    printf("%.4f\n",s);
    return 0;
}


三十年河东,三十年河西,莫欺少年穷!
2013-11-05 19:20
shiner凡
Rank: 5Rank: 5
来 自:梦境
等 级:职业侠客
帖 子:92
专家分:355
注 册:2013-10-27
收藏
得分:0 
第一个题目要定义n=0

多多看书,多多学习。C++神马的,将来我也要很厉害。亲爱的自己,加油加油!!!!!
2013-11-05 19:31
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 3楼 烟霭纷纷
至于你的第一个问题,我给一个我写的让你看看吧,
我的这个小程序 m 的值是自己输入的,如果外部已经确定的话就不需要输入了
程序代码:
#include<stdio.h>
int m,n,s;
void main()
{
    int i=1;
    s=0;
    printf("请输入m的值:");
    scanf("%d",&m);
    while(s<m)
    {
        s+=i;
        i++;
    }
    n=i-2;
    s=s-i+1;
    printf("n=%d\ns=%d\n",n,s);
    return 0;
}


三十年河东,三十年河西,莫欺少年穷!
2013-11-05 19:31
shiner凡
Rank: 5Rank: 5
来 自:梦境
等 级:职业侠客
帖 子:92
专家分:355
注 册:2013-10-27
收藏
得分:0 
打错了,不是n,是s=0

多多看书,多多学习。C++神马的,将来我也要很厉害。亲爱的自己,加油加油!!!!!
2013-11-05 19:32
烟霭纷纷
Rank: 1
来 自:广东广州
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-11-5
收藏
得分:0 
回复 4楼 韶志
明白了,非常感谢!!!

非淡泊无以明志,非宁静无以致远
2013-11-05 22:48
快速回复:新手求指教,谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017709 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved