C语言 数学问题系列

求n以内的质数

#include"stdio.h"
int main()
    {int n,a,i;
        scanf("%d",&a);
        for(n=2;n<=a;n++)
            {for(i=2;i<n;i++)
                if(i>=n)
                printf("%d\t",n);
            }
        return 0;
    }

存款利息问题

有1000元,想存一年。有三种方法可选:
(1)活期,年利率为r1;
(2)一年期定期,年利率为r2;
(3)存两次半年定期,年利率为r3;
请分别计算出一年后按三种方法所得到的本息和。

#include<stdio.h>
int main()
{float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;
    p1=p0*(1+r1);
    p2=p0*(1+r2);
    p3=p0*(1+r3/2)*(1+r3/2);
    printf("p1=%f\np2=%f\np3=%f\n",p1,p2,p3);
    return 0;
}

解一元二次函数

运行该程序时,需要事先输入参数啊a,b,c的值
注意:在输入数据时,三个数之间要用空格分隔,最后按回车键

#include<stdio.h>
#include <math.h>//程序中要调用求平方根函数sqrt
int main ()
{
double a,b,c,disc,x1,x2,p,q;//disc用来存放判别式(b*b-4ac)的值
scanf("%lf%lf%lf",&a,&b,&c);//输入双精度变量的值要用格式声明“%lf”
disc=b*b-4*a*c;
if(disc<0)
printf("此方程无实根\n");
	  else
{
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);//输出方程的两个根
}
return 0;
}

求阶乘

#include<stdio.h>
#include <math.h>
int main()
{
   long i,t,a;
	t=1;
	i=2;
	scanf("%d",&a);
	while(i<=a)
	{
		t=t*i;
		i=i+1;}

printf("%d",t);
return 0;
}

求两个整数中的较大者

运行程序时用逗号“,”隔开两个变量

#include<stdio.h>
int main()
{
	int max(int x,int y);
	int a,b,c;
	scanf("%d,%d",&a,&b);
	c=max(a,b);
	printf("max=%d\n",c);
	return 0;
}
int max(int x,int y)
{
	int z;
	if(x>y) z=x;
	else z=y;
	return(z);
}

求两整数之和

#include<stdio.h>
int main()
{
int sum(int x,int y);
int a,b,c;
scanf("%d,%d",&a,&b);
c=sum(a,b);
printf("sum is%d\n",c);
return 0;
}
int sum(int x, int y)
{
int z;
z=x+y;
return (z);
}

三角形问题

给出三角形的边长,求三角形的面积。
假设给定的三个边符合构成三角形的条件;任意两边之和大于第三边。
解此的关键是要找到求三角形面积的公式。从数学只是已知求三角形面积的公式为area=√s(s-a)(s-b)(s-c)
其中,s=(a+b+c)/2.

#include<stdio.h>
#include<math.h>
int main ()
{
	double a,b,c,s,area;
	a=3.67;
	b=5.43;
	c=6.21;
	s=(a+b+c)/2;
	area=sqrt(s*(s-a)*(s-b)*(s-c));
	printf("a=%f\tb=%f\t%f\n",a,b,c);
	printf("area=%f\n",area);
	return 0;
}

求圆周率小数点后十万位

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<time.h>
long a=100000L;
void main()
{ FILE *fp;
long t1,t2;
char filename[40];
unsigned long c,d,e,i,j,ws;
unsigned long *f,*bb;
printf("位数=?");
scanf("%ld",&ws);
if(ws<1)return;
c=(ws+4)/05*17;
bb=f=(long*)malloc(04*c);
if(f==NULL)abort();
printf("将Pi存为: ");//提示输入数据文件名
scanf("%s",filename);//若打入NUL,则不存盘
fp=fopen(filename,"w");
if(fp==NULL)abort();
t1=time(NULL);
for(i=0;i<c-1;i++,bb++)
*bb=a/5;*bb=a/5;//这里并不错
for(e=0;c;c-=17,bb-=17,e=d%a)
{ static long group;
d=0;i=c;
j=c+c-1;
_asm mov eDI,bb
loopi:
_asm mov eax,[eDI]
_asm mul Dword ptr a
_asm mov ecx,edx
_asm mov ebx,eax
_asm mov eax,d
_asm mul dword ptr i
_asm add eax,ebx
_asm adc edx,ecx
_asm div dword ptr j
_asm mov d,eax
_asm mov [eDI],edx
_asm sub eDI,04
_asm dec dword ptr j
_asm dec dword ptr j
_asm dec dword ptr i
_asm jnz loopi
e += d/a;//这是为了避免重复计算
if(e>=100000)//这是一种糟糕情况
abort();//希望它最好不要发生
if(++group%200==0) //逢千位附近
printf( "%05lu\t",e);//显示五位
fprintf(fp,"%05lu",e);//写入磁盘
}
t2=time(NULL);
printf("%ld秒\n",t2-t1);
free(f);
fclose(fp);
}

最值问题

#include "stdio.h"
int main()
{
	int a,b,c,*pmax,*pmin;
	scanf("%d,%d,%d",&a,&b,&c);//输入的三个数值必须用逗号隔开
	if(a>b)
	{pmax=&a;pmin=&b;}
else
{pmax=&b;pmin=&a;}//指针变量pmax指向a,b中较大者
if(c>*pmax)pmax=&c;//指针变量pmax指向a,b,c中最大者
if(c<*pmin)pmin=&c;//指针变量pmain指向a,b,c中的最小者
printf("max=%d\nmin=%d\n",*pmax,*pmin);
return 0;
}

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值