用C语言编写一个求定积分的程序,用它分别求以下5个函数的定积分:

用C语言编写一个求定积分的程序,用它分别求以下5个函数的定积分:,第1张

#include<stdioh>

#include<mathh>

float f1(float x)

{

return(10+x);

}

float f2(float x)

{

return(20x+30);

}

float f3(float x)

{

return(exp(x)+1);

}

float f4(float x)

{

return(pow(1+x,2));

}

float f5(float x)

{

return(pow(x,3));

}

float fsimp(float a,float b,float (p)(float))

{

float c,s;

c=(a+b)/2;

s=(b-a)/6(p(a)+4p(c)+p(b));

return s;

}

int main()

{

float a,b;

printf("请输入积分下限a的值:");

scanf("%f",&a);

printf("请输入积分上限b的值:");

scanf("%f",&b);

printf("%f\n",fsimp(a,b,f1));

printf("%f\n",fsimp(a,b,f2));

printf("%f\n",fsimp(a,b,f3));

printf("%f\n",fsimp(a,b,f4));

printf("%f\n",fsimp(a,b,f5));

}

C语言程序:求1+3+5+…+99的方法:

int main()

{

int i,sum=0;

for(i=1;i<100;i+=2)

sum+=i;

printf("1+3+5+……+99=%d\n",sum);

return 0;

}

扩展资料:

C语言是普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,它具有自己独特的特点。具体体现在以下三个方面:

1、广泛性。

C 语言的运算范围的大小直接决定了其优劣性。C 语言中包含了34种运算符,因此运算范围要超出许多其它语言,此外其运算结果的表达形式也十分丰富。此外,C 语言包含了字符型、指针型等多种数据结构形式,因此,更为庞大的数据结构运算它也可以应付。

2、简洁性。

9类控制语句和32个KEYWORDS是C语言所具有的基础特性,使得其在计算机应用程序编写中具有广泛的适用性,不仅可以适用广大编程人员的 *** 作,提高其工作效率,同时还能够支持高级编程,避免了语言切换的繁琐。

3、结构完善。

C语言是一种结构化语言,它可以通过组建模块单位的形式实现模块化的应用程序,在系统描述方面具有显著优势,同时这一特性也使得它能够适应多种不同的编程要求,且执行效率高。

void fun (char s[][5]);

int main()

{

char s[5][5];

int i,j;

printf("请输入5行5列的矩阵:");

for(i=0;i<5;i++)

for(j=0;j<5;j++)

{

scanf("%d",&s[i][j]);

}

fun(s);

system("pause");

}

void fun (char s[][5])

{

long int sum=1, i,j;

for(i=0;i<5;i++)

for(j=i;j<5;j++)

{

sum=s[i][j];

}

printf("%ld",sum);

}

   

1、首先在电脑中,打开Dev-c++软件,点击“新建源代码”,如下图所示。

2、具体程序如下,如下图所示。

3、此次的程序最终目的是求出3x3的整型矩阵对角线元素之和,所以要向计算机输入3x3矩阵中的所有元素。

4、其次要对输入的矩阵的元素进行放置于相应的位置,以便于之后的计算其对角元素之和。

5、最后需要向计算机指出要计算机计算出哪些元素之和,和需要计算元素的具体位置在哪儿。

6、程序写完之后,点击运行即可求出所要求出的结果了。

#include<stdioh>

void main()

{

int a,b,c,d,e,s;

printf("请输入五个数以#结束:\n");scanf("%d",&a);scanf("%d",&b);scanf("%d",&c);scanf("%d",&d);scanf("%d",&e);s=abcde;printf("五个数乘积为%d",s);

}

如果需要精确计算16和27的阶乘需要编写大整数计算,至少要实现大整数加法,大整数乘以短整数,大整数除以短整数,大整数转换为字符串用于显示结果。当然如果不需要精确计算可以使用浮点数来计算。

#include <stdioh>

#include <stringh>

#include <malloch>

#include <ctypeh>

typedef int            BOOL;

typedef unsigned short LINT_B;

typedef unsigned long  LINT_B2;

typedef LINT_B        LINT;

typedef const LINT_B  CLINT;

#define TRUE           1

#define FALSE          0

#define BASE           0x10000ul

#define BASEDIV2       0x8000ul

#define BASEMINONE     0xFFFFul

#define DIGITLEN       64 // 当 DIGITLEN = 64 时可以实现200以内的阶乘

#define Max(a, b)      ((a) < (b)  (b) : (a))

#define Rmldzrs(l, h)  do {while((--h) == 0); ++h; h = Max(l, h);} while(0);

const int sBitperdgt = sizeof(LINT_B)  8;

// 复制大数

LINT copy(CLINT f, CLINT l, LINT x)

{

while(f != l) x++ = f++;

return x;

}

// 大数是否为0

inline BOOL isZero(CLINT l, CLINT h)

{

Rmldzrs(l, h);

return (l == h)  TRUE : FALSE;

}

// 调换字符串的顺序

void reverse(char s)

{

char t;

char sl = s;

char sh = sl + strlen(s);

while(sl < sh) {t = sl; sl++ = (--sh) ; sh = t;}

}

// 交换大数指针

void swapCLINT(CLINT a, CLINT b)

{

CLINT t;

t = a; a = b; b = t;

}

// 加法 C = A + B

LINT add(CLINT al, CLINT ah, CLINT bl, CLINT bh, LINT cl)

{

LINT_B2 carry = (LINT_B2)0;

LINT ch = cl;

if((ah - al) < (bh - bl)) swapCLINT(&al, &bl), swapCLINT(&ah, &bh); // 保证A的长度大于或等于B

// 两个数相加

while (bl < bh)

ch++ = (LINT_B)(carry = (LINT_B2)al++ + (LINT_B2)bl++ + (LINT_B2)(LINT_B)(carry >> sBitperdgt));

// 处理 A 比 B 多出的长度

while (al < ah)

{

if(carry >= BASE) ch++ = (LINT_B)(carry = (LINT_B2)al++ + (LINT_B2)(LINT_B)(carry >> sBitperdgt));

else ch++ = al++;

}

// 处理进位

if(carry & BASE) ch++ = (LINT_B)1;

return ch;

}

// 短乘法 C = A  b

LINT umul(CLINT al, CLINT ah, LINT_B b, LINT cl)

{

LINT     ch;

LINT_B2 pc;

CLINT    pa;

LINT_B2  carry, bv;

if(b == 0 || isZero(al, ah)) {if(cl) cl = 0; return cl;}

if(ah - al == 1) // A 的长度只有一个数字

{

pc  = (LINT_B2 )cl;

pc = (LINT_B2)al  (LINT_B2)b;

ch = cl + 2;

Rmldzrs(cl, ch);

return ch;

}

ch = cl;

pa = al;

carry = (LINT_B2)0, bv = (LINT_B2)b;

// 循环计算

while(pa < ah) ch++ = (LINT_B)(carry = bv  (LINT_B2)pa++ + (LINT_B2)(LINT_B)(carry >> sBitperdgt));

// 处理进位

ch++ = (LINT_B)(carry >> sBitperdgt);

Rmldzrs(cl, ch);

return ch;

}

// 短除 A = b  C + d

// cl 或 d 可以是空指针

LINT udiv(CLINT al, CLINT ah, LINT_B b, LINT cl, LINT d)

{

int lenA, lenC;

LINT    bufC = NULL, ch, pch;

LINT_B  c;

CLINT   pah;

LINT_B2 rdach, bv, rv;

// 处理特殊情况

if(b == 0)

{

printf("带余短除出现除以0错误");

if(d)  d  = 0;

if(cl) cl = 0; 

return cl;

}

lenA = ah - al;

if(lenA == 0) {if(d) d = 0; if(cl) cl = 0; return cl;} // 被除数等于0,结果商等于0,余数等于0

if(lenA == 1) // 被除数也只有1位

{

if(al < b) {if(d) d = al; if(cl) cl = 0;} // 被除数小于除数,商等于0,余数等于被除数

else

{

c = al / b;

if(cl) cl++ = c;

if(d)  d    = al - c  b;

}

return cl;

}

lenC = lenA - 1; // 计算长度

if(cl == NULL)

{

bufC = (LINT)malloc((lenC + 1)  sizeof(LINT_B)); // 申请内存,保证cl不为NULL

if(bufC == NULL)

{

printf("带余短除申请临时内存发生错误!\n");

if(d) d = 0;

return NULL;

}

cl = bufC;

}

ch = cl + lenC;

// 开始计算

pah = ah - 1;

pch = ch;

bv  = b, rv = 0;

while(al <= pah)

{

pch = (LINT_B)((rdach = ((rv << sBitperdgt) + (LINT_B2)pah--)) / bv);

rv   = (rdach - bv  (LINT_B2)pch--);

}

if(d) d = (LINT_B)rv;

if(bufC)

{

free(bufC);

return NULL;

}

return (ch == 0)  ch : ++ch;

}

// 大整数变成数字串

const char  LInt2Str(char  o, CLINT l, CLINT h, LINT_B base, BOOL uppercase)

{

const char  sVecUpper = "0123456789ABCDEF";

const char  sVecLower = "0123456789abcdef", Vec;

char po;

LINT_B x, t[DIGITLEN], ii[DIGITLEN];

LINT   th, tl, il, ih;

CLINT  xl, xh;

BOOL   flag = TRUE;

po  = o;

il  = ii;

ih  = copy(l, h, il);

Rmldzrs(il, ih);

if(isZero(il, ih))

{

o++ = '0';

o++ = 0;

return po;

}

Vec = uppercase  sVecUpper : sVecLower;

xl  = &x;

xh  = xl + 1;

th  = tl = t;

switch(base)

{

case 2: case 8: case 10: case 16: break;

default: base = 10;

}

while(1)

{

if(flag)

{

th   = udiv(il, ih, base, tl, &x);

flag = FALSE;

}

else

{

ih   = udiv(tl, th, base, il, &x);

flag = TRUE;

}

o++ = Vec[x];

if(th == tl || ih == il) break;

}

o++ = 0;

reverse(po);

return po;

}

// 阶乘,可以精确计算200以内的阶乘,定义更大的DIGITLEN可以实现更大数字的阶乘

LINT jiecheng(LINT l, LINT_B x)

{

LINT h = l + 1, tl, th;

LINT_B i = 1, t[DIGITLEN];

BOOL   flag = TRUE;

l = 1;

th = tl = t;

while(i <= x)

{

if(flag) {flag = FALSE; th = umul( l,  h, i++, tl);}

else     {flag =  TRUE; h  = umul(tl, th, i++,  l);}

}

if(!flag) h = copy(tl, th, l);

return h;

}

int main()

{

char buf[512];

LINT_B a[DIGITLEN], b[DIGITLEN], c[DIGITLEN], i = 5;

LINT al, ah, bl, bh, cl, ch;

ah = al = a, bh = bl = b, ch = cl = c;

while(i < 30)

{

printf("%d! ", i);

ch  = add(al, ah, bl, jiecheng(bl, i), cl);

ah  = copy(cl, ch, al);

i  += 11;

if(i < 30) printf("+ ");

}

printf("= %s\n", LInt2Str(buf, al, ah, 10, FALSE));

return 0;

}

以上就是关于用C语言编写一个求定积分的程序,用它分别求以下5个函数的定积分:全部的内容,包括:用C语言编写一个求定积分的程序,用它分别求以下5个函数的定积分:、C语言程序:求1+3+5+…+99、C语言编写程序求5行5列矩阵的上三角元素之积。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存