本人初学C语言 发现循环满繁琐 有一题不解
计算1-3+5-7+...-99+101的值我是这样编的 但是不对啊。。。
main()
{
int a,b;
b=0;
while(fabs(a)<=101)
{
b=b+a;
a=fabs(a)+2;
a=-1*a;
}
printf("%d",b);
}
{
int a,b=1,i;
for(i=2;i<=50;i++)
{
if(i%2==0)
b=b+(-1*2*i);
else
b=b+2*i;
}
printf("%d",b)
}
我是这样的
但是不知道是否正确
可以参考
这个简单
把原式写成 (1+5+9+...+101)- (3+7+11+...+99)#include <stdio.h>
int main()
{
int i, total1=0, total2=0, total;
for (i=1;i<=101;i+=4)
total1+=i;
for (i=3;i<=99;i+=4)
total2+=i;
total=total1-total2;
printf("%d\n", total);
return 0;
}
结果是51 [code]/*******************************************************************************
计算1-3+5-7+...-99+101的值
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我是这样写的,谨供参考。
*******************************************************************************/
#include<stdio.h>
int main(void)
{
int i,j=0,k=1;
for(i=1;i<102;i+=2,k++)
{
if(k%2) j+=i;
else j-=i;
}
printf("%d\n",j);
getch();
}
[/code] 你最开始未对a初始化 本人学java的也试一下(语法上可能有错不要介意啊!)
计算1-3+5-7+...-99+101的值
main(){
int a=1,b=1,t=0,sum=0;
for(a=1;a<=101;a++){
t=a*b;
sum+=t;
a+=2;
b=-b;
}
printf("%d\n",sum);
} #include <stdio.h>
int calc( int n )
{
int sum=0;
if ((n-1)%4==0)
sum=(n+1)/2;
else
sum=-(n+1)/2;
return sum;
}
main()
{
int n,sum;
while(1)
{
scanf("%d",&n);
if(n%2==0 || n<0)
printf("Please input odd number!\n");
else
break;
}
sum=calc(n);
printf("sum=%d",sum);
getch();
}
这是我写的,没有用循环,只是对这一串数字分析了下,找了规律
还请大家指教 [quote][bo][un]mark0289[/un] 在 2008-8-2 10:56 的发言:[/bo]
#include
int calc( int n )
{
int sum=0;
if ((n-1)%4==0)
sum=(n+1)/2;
else
sum=-(n+1)/2;
return sum;
}
main()
{
int n,sum;
while(1)
{
scanf("%d",&n);
if(n%2==0 || ... [/quote]
while(){} 不是循环?
[[it] 本帖最后由 he20041987 于 2008-8-2 13:40 编辑 [/it]] [quote][bo][un]he20041987[/un] 在 2008-8-2 13:39 的发言:[/bo]
while(){} 不是循环? [/quote]
你强!别人说的是算法没有循环。 这个可以拿去参考一下
main()
{int sum,sign,i,term;
sum=1,sign=1,i=3;
while(i<=101)
{sign=-sign;
term=sign*i;
sum+=term;
i+=2;
}
printf("%d",sum);
} 算出来结果是51 a=fabs(a)+2;/*这里计算出来的a是一个正值*/
a=-1*a;/*经过计算后a的值始终是一个负值,所以后面的b的值也始终是一个负值*/ 输入最后一项的绝对值 NUM
[quote][font=新宋体][size=2][color=#008000]/*******************************************************************
** HighlightCodeV3.2 software by yzfy(雨中飞燕) [url=http://yzfy.org/c]http://yzfy.org/c[/url] **
*******************************************************************/
[/color][color=#ff0000]#include <stdio.h>
[/color][color=#ff0000]#define[/color][color=#ff00ff] N ( (num-1)/2 + 1 )
[/color][color=#0000ff]int [/color][color=#ff0000]main[/color]([color=#0000ff]void[/color])
[color=#800000]{
[/color][color=#0000ff]int [/color]num ;
[color=#0000ff]if[/color]( ![color=#ff0000]scanf[/color]( [color=#ff00ff]"%d" [/color], &num ) || !(num%[color=#8000c0]2[/color]) )
[color=#800000]{
[/color][color=#ff0000]printf[/color]([color=#ff00ff]"Input error!!!\n"[/color]);
[color=#0000ff]return [/color]-[color=#8000c0]1 [/color];
[color=#800000]}
[/color][color=#ff0000]printf[/color]([color=#ff00ff]"Result: %d\n" [/color], ( [color=#800080]N[/color]%[color=#8000c0]2 [/color]) ? [color=#800080]N [/color]: -[color=#800080]N [/color]) ;
[color=#0000ff]return [/color][color=#8000c0]0 [/color];
[color=#800000]}[/color][/size][/font][/quote]
[[it] 本帖最后由 死了都要C 于 2008-8-3 02:40 编辑 [/it]] 楼主的a 没赋初值啊?
还没加math头文件
[[it] 本帖最后由 kissmahao 于 2008-8-4 16:15 编辑 [/it]] main()
{
int a=1,b;
b=0;
while(abs(a)<=101)
{
b=b+a;
a=abs(a)+2;
a=-1*a;
}
printf("%d",b);
}
页:
[1]
