C语言:编写函数计算某两个自然数之间所有自然数的和,主函数调用求1~50、50~100的和?

C语言:编写函数计算某两个自然数之间所有自然数的和,主函数调用求1~50、50~100的和?,第1张

#include <stdioh>

unsigned long func(unsigned long a,unsigned long b)

{

    unsigned long sum;

    for(sum=0;a<=b;++a)

        sum+=a;

    return sum;

}

int main()

{

    printf("%lu\n",func(1,50));

    printf("%lu\n",func(50,100));

    return 0;

}

还有OS,两两之间的和就用两个相邻的数,x和x+1

解出来貌似是个4102取值范围

有几个重复的数字就除以几的阶乘

比如求1、2、2组成的不同3位数的个数 =3!/2! =(1×zhi2×3)/(1×2) =3 

再比如求1、1、1、2、3组成的不同5位数的个数 =5!/3! =(1×2×3×4×5)/(1×2×3) =4×5 =20 

如果只是有2个数字重复,就直接在排列数的基础上除以。

扩展资料:

组合的定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。

其他排列与组合公式 从n个元素中取出m个元素的循环排列数=A(n,m)/m=n!/m(n-m)! n个元素被分成k类,每类的个数分别是n1,n2,nk这n个元素的全排列数为 n!/(n1!×n2!××nk!) k类元素,每类的个数无限,从中取出m个元素的组合数为C(m+k-1,m)。

参考资料来源:百度百科-排列组合

分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:

环境:VC++60;win2000;

#include <stdioh>

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);

}

}

这里只能排出任意两个数之间奇数的序列,但是求和怎么求,我就不懂了,请高手指教一二,不胜感谢!!!

解析:

#include<stdioh>

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 <stdioh>

#include <stdlibh>

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 "stdioh"

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(na+n(n-1)); /µÈ²îÊýÁÐÇóºÍ¹«Ê½/

}

main()

{

int a=2,b=10;

init_ab(&a,&b);

printf("%d",cal(a,b));

getch();

}

一年级数学两个数之间有多少个数用减法计算。算法:大数-小数-1。

举例说明如下:10到17之间有6个数。

(1)列举法:把10到17的自然数写出来,从10到17的自然数有:10,11,12,13,14,15,16,17。再一个个数,得10到17之间有:11,12,13,14,15,16。共6个数字。

(2)算式法:17-10-1=7-1=6。减去1的原因是减掉17本身。

扩展资料:

整数加减法的运算:

1、相同数位对齐;

2、从个位算起;

3、加法中满几十就向高一位进几;减法中不够减时,就从高一位退1当10和本数位相加后再减。

减法的性质

1、一个数连续减去几个数,等于从这个数中减去这几个数的和。

a-b-c-d=a-(b+c+d)

2、一个数减去几个数的和,等于从这个数中连续减去这几个数。

a-(b+c+d)=a-b-c-d

3、加、减混合运算去括号的性质,注意去括号时加减符号的变化。

a+(b-c)=a+b-c;a-(b+c)=a-b-c;a-(b-c)=a-b+c

第一题,程序代码如下,供参考:
#include <stdioh>
void main(void){
int H_sum(int,int);
int x,y,num;
printf("请输整数x:"); //负数亦可,但要保证输入整数
scanf("%d",&x);
printf("请输整数y:");
scanf("%d",&y);
if(x>y){
num=x;
x=y;
y=num;
}
printf("\n\n两数之间的所有数之和为:%d\n\n",H_sum(x,y));
}
int H_sum(int x,int y){
int sum=0;
for(int i=x+1;i<y;i++)
sum+=i;
return sum;
}
第二题,程序代码如下,供参考:
#include "stdioh"
#include "stringh"
void main(){
char mima[]={"1234567"};
char s[7];//设定密码为输入字符的前七位
printf("请输入密码:");
for(int i=0;i<3;i++){
scanf("%s",s);
if(strcmp(mima,s)==0){
printf("\nWelcome\n\n");
break;
}
else{
printf("\nSorry\n\n");
if(i<2)
printf("请再一次输入密码:");
}
}
if(i==3)
printf("输入次数已达3次,不允许再输入!\n\n");
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12988135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存