数学编程题
A. 数学编程 急!!!!!
mole NUMERICAL
implicit none
real*8, parameter :: zero=1.0d-14
contains
real*8 function newton(a,f,df)
implicit none
real*8 :: a
real*8, external :: f
real*8, external :: df
real*8 :: b
real*8 :: fb
b = a-f(a)/df(a)
fb= f(b)
do while( abs(fb) > zero )
a=b
b=a-f(a)/df(a)
fb=f(b)
end do
newton=b
return
end function newton
real*8 function func1(x)
implicit none
real*8 :: x
func1=4500d0*1.025d0**x-140d0*x-5000d0
return
end function func1
real*8 function dfunc1(x)
implicit none
real*8 :: x
dfunc1=4500d0*1.025d0**x*DLog(1.025d0)-140d0
return
end function dfunc1
real*8 function func2(x)
implicit none
real*8 :: x
func2=4500d0*1.025d0**x-4500d0*0.25d0
return
end function func2
real*8 function dfunc2(x)
implicit none
real*8 :: x
dfunc2=4500d0*1.025d0**x*DLog(1.025d0)
return
end function dfunc2
end mole NUMERICAL
program main
use numerical
implicit none
real*8 :: a
real*8 :: ans
write(*,*) "Please input the initial value for fun1 : "
read (*,*) a
ans=newton(a,func1,dfunc1)
write(*,"('x=',F17.14)") ans
write(*,*) "Please input the initial value for fun2 : "
read (*,*) a
ans=newton(a,func2,dfunc2)
write(*,"('x=',F18.14)") ans
stop
end program
Results :
Please input the initial value for fun1 :
20
x=27.19362751459992
Please input the initial value for fun2 :
-10
x=-56.14206905187746
B. c语言编程题 题目标题: 猜年龄 美国数学家维纳(N.Wiener)智力早熟,11岁就
c语言追求的是程序执行时间效率,题目给出立方之后是四位数,可以人为确定年龄范围在10-21岁,至于为什么不确定六位数再精确一点,个人觉得没什么必要。这个编程的核心在于如何分辨这10个数字不同,我定义了一个函数,用数组加循环判断。以下是具体代码。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
intsame(inta[10]);//判断10个数是否相等,相互不相等返回1
intmany(inta);//判断一个整型数是几位数
main()
{
inta[10],i,j,s,l;//a储存10个数字的数组,i年龄循环变量,j将数字存入数组,s储存四位数,l储存六位数
for(i=10;i<22;i++){
s=pow((double)i,3);
l=pow((double)i,4);
if(many(l)!=6)
continue;//如果不是六位数则退出当次循环
for(j=0;j<4;j++){
a[j]=s%10;
s=s/10;
}//存入四位数
for(j=4;j<10;j++){
a[j]=l%10;
l=l/10;
}//存入六位数
if(same(a))
printf("age=%d
",i);//输出
}
system("pause");
}
intmany(inta){
inti=0;
while(a>0){
a=a/10;
i++;
}
returni;
}
intsame(inta[10]){
inti,j,flag=1;
for(i=0;i<10;i++){
for(j=i+1;j<10;j++){
if(a[i]==a[j])
flag=0;
}
}
returnflag;
}
C. 关于离散数学的编程问题(数理逻辑部分)
主要是要把合式公式抽象出来,然后用穷举法每个赋值去试,如果合式公式为真值,这个赋值就满足条件。
D. VC++编程题:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
#include<iostream>
using namespace std;
int main()
{
double a[100];
double max=0,min=100,t;
int i;
for(i=0;i<100;i++)
{
cin>>a[i];
if(a[i]<0)
break;
else
{
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
}
cout<<"最大值是:"<<max<<endl;
cout<<"最小值是:"<<min<<endl;
return 0;
}
(4)数学编程题扩展阅读:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#include<math.h>//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。
E. C语言编程题目:输入一个三位数,输出各个数位上的数字及它们的和。
答案:
int Total;
scanf("%d", &Total);
//百位
int m = Total / 100;
int n = Total - m * 100;
n = n / 10;
int t = Total % 10;
//m n t分别为百位 十位 个位 求和
int nRet = m + n + t;
F. 编程题:某同学有三名同学参加数学竞赛,共10道题,答对一道得10分,答错一道
解:
小明:设小明答对了x道题,则答错了(10-x)道题
10x-3(10-x)=87
10x-(30-3x)=87
10x-30+3x=87
10x+3x=87+30
13x=117
x=9
王红:设王红答对y道题,则答错(10-y)道题
10y-3(10-y)=74
10y-(30-3y)=74
10y-30+3y=74
10y+3y=74+30
13y=104
y=8
张凯:设张凯答对a道题,则打错了(10-a)道题
10a-3(10-a)=48
10a-(30-3a)=48
10a-30+3a=48
10a+3a=48+30
13a=78
a=6 答:小明答对了9道,王红答对了8道,张凯答对了6道。
G. 编程题:编写函数fun,使其完成如下数学表达式的计算。sample10.c
#include<stdio.h>
#include<math.h>
doublefun(doublex)
{
doublek,t,m,n,s,r;
k=x*x+1;
t=x-1;
m=sin(x);
if(m<0)m=-m;
n=2*x-10*m;
s=cos(n);
r=t*s/k;
returnr;
}
main()
{
printf("fun(1.66)=%8.3f ",fun(1.66));
//getchar();
}
H. C++编程题 Problem B: 平面上的点——Point类 (II)
Append Code:
class Point{
int x, y;
public:
Point(int px=0,int py=0){
x=px; y=py;
cout <<"Point : (" <<x <<"," <<y <<") is erased.\n";
}
Point(const Point& pt){
x=pt.x; y=pt.y;
cout <<"Point : (" <<x <<"," <<y <<") is copied.\n";
}
~Point(){
cout <<"Point : (" <<x <<"," <<y <<") is erased.\n";
}
void show(){
cout <<"Point : (" <<x <<"," <<y <<")\n";
}
};
I. 编程题:编写函数fun,使其完成如下数学表达式的计算。sample11.c
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
doublefun(doublex)
{
if(x<10)
{
doublet=1-exp(-1*x);
if(t){
return1/t;
}
return0x8FFFFFFF;//无穷大
}
else
return(x+3)*sin(2*x);
}
intmain()
{
printf("%8.3lf ",fun(5.16));
printf("%8.3lf ",fun(16.32));
system("pause");
return0;
}
J. 关于离散数学的java编程题
/**
*@authormq
*Jun5,20184:02:53PM
*二元关系合成
*/
publicclassRelationOperate{
publicstaticvoidmain(String[]args){
//创建第一个关系R1:R1={<1,2>,<2,3>}
Map<Object,Object>r1=newHashMap<>();
r1.put("1","2");
r1.put("2","3");
//创建第二个关系R2:R2={<1,2>,<2,3>}
Map<Object,Object>r2=newHashMap<>();
r2.put("1","2");
r2.put("2","5");
//打印合成后的新关系R3的序偶对:R3:{<1,3>}
realtionOperate(r1,r2);
}
/**
*
*Jun8,20182:16:19PM
*mq
*二元关系合成
*@paramrelation1二元关系r1
*@paramrelation2二元关系r2
*/
(Map<Object,Object>relation1,
Map<Object,Object>relation2){
//创建新的Map<Object,Object>存储合成后的新关系
Map<Object,Object>newRelationship=newHashMap<>();
//合成新关系
for(Entry<Object,Object>entry1:relation1.entrySet()){
//获取第一个二元关系R1的序偶集合中每个序偶的Y集合元素valueOfR1Y
ObjectvalueOfR1Y=entry1.getValue();
for(Entry<Object,Object>entry2:relation2.entrySet()){
//获取第二个二元关系R2序偶集合中每个序偶的Y集合元素valueOfR2Y
ObjectvalueOfR2Y=entry2.getKey();
/*若valueOfR1Y=valueOfR2Y,则向合成后的新二元关系R3添加一个序偶元素(key1,value2)
*key1为entry1.getKey(),是第一个二元关系R1的序偶集合中valueOfR1Y所对应的序偶中X集合元素
*value2entry2.getValue(),是第二个二元关系R2的序偶集合中valueOfR2Y所对应的序偶中Z集合元素
*/
System.out.println(valueOfR1Y.equals(valueOfR2Y));
if(valueOfR1Y.equals(valueOfR2Y)){
newRelationship.put(entry1.getKey(),entry2.getValue());
}
}
}
//打印关系R3中序偶对
for(Entry<Object,Object>entry:newRelationship.entrySet()){
System.out.println("R1·R2合成的新关系R3中的序偶:"+"<"+entry.getKey()+","+entry.getValue()+">");
}
}
}