校园安全事件2017:初学人请C高手请教!!求任意两个数之间奇数的和!

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 06:47:31
环境:VC++6.0;win2000;

#include <stdio.h>
void main()
{
int num1,num2,a,sum;
scanf("%d",&num1);
scanf("%d",&num2);
if(num1>num2&&num1%2!=0)
{
for(a=num1;a>=num2;a-=2)
printf("%d \n",a);
}
if(num1>num2&&num1%2==0)
{
for(a=num1-1;a>=num2;a-=2)
printf("%d \n",a);
}
if(num2>num1&&num2%2==0)
{
for(a=num2-1;a>=num1;a-=2)
printf("%d \n",a);
}
if(num2>num1&&num2%2!=0)
{
for(a=num2;a>=num1;a-=2)
printf("%d \n",a);
}
}

这里只能排出任意两个数之间奇数的序列,但是求和怎么求,我就不懂了,请高手指教一二,不胜感谢!!!
3楼您好,恁的程序我试过正确,但是我说我是初学者,刚学完循环,头文件你用了一个<stdlib.h>、还有init_ab(int *a,int *b),还有判断if(条件判断)后面为什么会带有a++,这个不是循环表达式才能带么?我都不懂啊,麻烦您能不能给点注释啊??

#include<stdio.h>
main()
{
int a,b,c;
c=0;
printf("输入两个数字求出它们之间奇数的和.请输入第一个: ");
scanf("%d",&a);
printf("输入第二个:");
scanf("%d",&b);
if(a<b)
{
if(a%2==0)a++;
for(;a<=b;a+=2)
c=c+a;
}
else
{
if(b%2==0)b++;
for(;b<=a;b+=2)
c=c+b;
}
printf("奇数和为:%d",c);
}
请指教,谢谢!
--------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a, b, c;
scanf("%d%d", &a, &b);
if(a>b) {a^=b; b^=a; a^=b;}
if(a%2!=1) ++a;
if(b%2!=1) --b;
if(a>b)
c=0;
else
c=(a+b)*(((b-a)>>1) + 1)>>1;
printf("%d", c);
system("PAUSE");
return 0;
}
--------------------------------------------------------------------------------
既然都用>>做除法了,干嘛不用&做取余数... if(a&1!=1)好了
--------------------------------------------------------------------------------
你这个办法有点浪费时间。
#include "stdio.h"
init_ab(int *a,int *b)
{
int p;
if(a>b)
{
p=*a;
*a=*b;
*b=p;
}
*a=(*a%2==0)?(*a+1):*a;
*b=(*b%2==0)?(*b-1):*b;
}
int cal(int a,int b)
{
int n=0;
n=(b-a)/2+1;
return(n*a+n*(n-1)); /*µÈ²îÊýÁÐÇóºÍ¹«Ê½*/
}
main()
{
int a=2,b=10;
init_ab(&a,&b);
printf("%d",cal(a,b));
getch();
}

你这样求奇数?
在打印奇数的序列前加SUM=SUM+A;
最后打印SUM