C语言:编写一个程序,要求输入一个整数,输出其阶乘

C语言:编写一个程序,要求输入一个整数,输出其阶乘,第1张

程序如下:

#include "stdioh"

int main(void)

{

int i;

int acc=1;//用于存放阶乘

printf ("请输入一个整数i=");

scanf ("%d",&i);

for(;i>0;i--)

{

acc=i;

}

printf("该数的阶乘为acc=%d\n",acc);

return 0;

}

运用for循环来求阶乘。

运行结果:

如求十的阶乘

python的字符串类型有一个属性isdigit可以判断是否为数字假设设置了一个变量a,则选择把a转换成字符串,再判断代码如下:a=123print(str(a)isdigit())如果变量a是数字,则返回True,否则返回False

var a,i,s:integer;

function fen(n:integer):integer;

var i:integer;

begin

i:=2;

while (n mod i<>0)and(i<=n) do i:=i+1;

if (n<>1) and (i<=n) then begin write('+',i);s:=s+i;fen:=fen(n div i);end;

end;

begin

readln(a);

i:=2;

while a mod i<>0 do i:=i+1;

write(i);

s:=i;

fen(a div i);

writeln('=',s);

end

#include <stdioh>

#include <stdlibh>

#define stack_init_size 100

#define stackincrement 10

typedef struct

{

int base;

int top;

int stacksize;

}sqstack;

int initstack(sqstack s)

{

s->base=(int )malloc(stack_init_sizesizeof(int));

if(!s->base)

exit(-1);

s->top=s->base;

s->stacksize=stack_init_size;

return 1;

}

int push(sqstack s,int e)

{

if(s->top-s->base>=s->stacksize)

{

s->base=(int )realloc(s->base,(s->stacksize+stackincrement)sizeof(int));

if(!s->base)

exit(-1);

s->top=s->base+s->stacksize;

s->stacksize+=stackincrement;

}

s->top++=e;

return 1;

}

int pop(sqstack s,int e,int i)

{

if(s->top==s->base)

return -1;

else

{

e=--s->top;

printf("%d",e);

}

return 1;

}

int stackempty(sqstack s)

{

if(s->top==0)

return 1;

else

return 0;

}

void main()

{

int n,i,e=0;

sqstack s;

initstack(&s);

printf("输入要转换的十进制数:\n");

scanf("%d",&n);

printf("输入要转换进制(2或8或16):\n");

scanf("%d",&i);

printf("%d转换为%d进制的结果为:\n",n,i);

while(n)

{

push(&s,n%i);

n=n/i;

}

while(!stackempty(&s))

pop(&s,e,i);

}

这是我写进制转换,可以把十进制的书转换成2,8,16进制,但是转换16进制时有点小问题,不影响二进制的,用栈写的不知道你写过没

思路:求一个正整数n的位数可以先定义一个变量num,并初始化为0,依次把该整数n除以10,直到其为0为止,并且每除一次10,变量num的个数就自加1,最后num的值就是该整数n的位数。

参考代码:

#include <stdioh>

int main()

int n,num=0;

scanf("%d",&n);

while(n){

num++;

n/=10;

}

printf("%d\n",num);

    return 0;

}

/

输出:

123456

6

/

可以用YALMIP工具箱解整数规划

定义变量:

sqdvar()实型

intvar()整型

binvar()0-1型

设定目标函数 :

f=目标函数

设定限定条件:

F=set(限定条件)

多个限定条件用加号相连:

F=set(限定条件)+set(限定条件1)+set(限定条件2)……

求解: solvesdp(F,f)

这里解得是F条件下目标函数f的最小值,要求最大值f前面加个负号

求解之后查看数值 :

double(f) double(变量)

intvar(m,n):生成整数型变量;

sdpvar(m,n):生产变量;

solvesdp(F,f):求解最优解(最小值),其中F为约束条件(用set连接),f为目标函数

double:显示求解的答案

有个例子:

已知非线性整数规划为:

Max z=x1^2+x2^2+3x3^2+4x4^2+2x5^2-8x1-2x2-3x3-x4-2x5

st

0<=xi<=99(i=1,2,,5)

x1+x2+x3+x4+x5<=400

x1+2x2+2x3+x4+6x5<=800

2x1+x2+6x3<=800

x3+x4+5x5<=200

matlab中输入

>> x=intvar(1,5);

f=[1 1 3 4 2](x'^2)-[8 2 3 1 2]x';F=set(0<=x<=99);

F=F+set([1 1 1 1 1]x'<=400)+set([1 2 2 1 6]x'<=800)+set(2x(1)+x(2)+6x(3)<=800);

F=F+set(x(3)+x(4)+5x(5)<=200);solvesdp(F,-f);

max=double(f)

sx=double(x)

Starting YALMIP integer branch & bound

Lower solver : fmincon-standard

Upper solver : rounder

Max iterations : 300

Warning : The relaxed problem may be nonconvex This means

that the branching process not is guaranteed to find a

globally optimal solution, since the lower bound can be

invalid Hence, do not trust the bound or the gap

Node Upper Gap(%) Lower Open

1 : -8020E+004 003 -8025E+004 2

2 : -8020E+004 003 -8025E+004 1

3 : -8020E+004 000 -8020E+004 2

+ 3 Finishing Cost: -80199

max =

80199

sx =

53 99 99 99 0

#include<stdioh>

int sort1(int a[],int n)//参数n数组长度

{

int t;

for(int i=0;i<n-1;i++)

for(int j=i+1;j<n;j++)

if(a[i]<a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

int sort2(int a[],int n,int x)//参数n数组长度,x要插入的数

{

a[n]=x;

int t;

for(int i=0;i<n;i++)

for(int j=i+1;j<n+1;j++)

if(a[i]<a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

int main()

{

int n,a[111],x;

scanf("%d",&n);

for(int i=0;i<n;i++)

scanf("%d",&a[i]);//输入n个数

scanf("%d",&x);//要插入的数

sort1(a,n);//调用函数选择排序

for(int i=0;i<n;i++)

printf("%d ",a[i]);//输出第一次排序的结果

printf("\n");

sort2(a,n,x);//调用函数先插入一个数,然后排序

for(int i=0;i<n+1;i++)

printf("%d ",a[i]); //输出第二次排序的结果

return 0;

}

以上就是关于C语言:编写一个程序,要求输入一个整数,输出其阶乘全部的内容,包括:C语言:编写一个程序,要求输入一个整数,输出其阶乘、python 程序 求助 编写确定输入整数是否为整数的程序(、分解正整数的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/10080215.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存