#include<conio.h>
#include<string.h>
#include<iostream.h>
#include<stdlib.h>
#include<math.h>
#define max 100void inputstyle(int *) //输入函数
void input(int **,int) //输入函数
long danx(int **,int)
int sgnx(int)
void martx(int **,int)int main(void)
{
int style=0,i=0
int matrix[max][max],*p[max]
for(i=0i<maxi++)*(p+i)=matrix[i] //*(p+i)是指针,指向第i个字符串
char exit1=' '
while(exit1!='E'&&exit1!='e'){ printf("求n阶矩阵的逆\n") inputstyle(&style)
input(p,style)
printf("原矩阵为:\n")
for(i=0i<stylei++){
for(int j=0j<stylej++){
printf("%4d",matrix[i][j])
}
printf("\n")
}
martx(p,style)
printf("\n")
printf("Exit=e Continue=Press any key\n")
cin>>exit1
fflush(stdin)
printf("\n\n")}
return(0)
} void input(int **p,int n){
for(int i=0i<ni++){
for(int j=0j<nj++){
printf("输入矩阵(%d行,%d列)元素:",j+1,i+1)
*(*(p+j)+i)=0
scanf("%d",*(p+j)+i)
fflush(stdin)
}
}
}void inputstyle(int *style){
do{
printf("输入矩阵n*n阶数n(0<n<%d):",max)
fflush(stdin)
scanf("%d",style)
fflush(stdin)
}while(*style<=0 &&*style>max)
}long danx(int **p,int n){
int i=0,j1=0,k1=0,j2=0,k2=0
long sum=0
int operate[max][max],*po[max]
for(i=0i<maxi++)*(po+i)=operate[i]if(n==1)return *(*(p+0)+0)
else{
for(i=0i<ni++){
for(j1=1,j2=0j1<nj1++,j2++){
k1=-1k2=-1
while(k2<n-1){
k1++
k2++
if(k1==i)k1++
*(*(po+j2)+k2)=*(*(p+j1)+k1)
}
}
/*for(int i1=0i1<n-1i1++){
for(int h1=0h1<n-1h1++){
printf("(%d,%d)%d ",i1,h1,*(*(po+h1)+i1))
}
printf("\n")
}*/
sum+=*(*(p+0)+i) * sgnx(1+i+1) * danx(po,n-1)
}
return sum
}
}int sgnx(int i){
if(i%2==0)return(1)
else return(-1)
}void martx(int **p,int n){
int i=0,j=0,j1=0,k1=0,j2=0,k2=0,num=0
int tramform[max][max]
int operate[max][max],*po[max]
for(i=0i<maxi++)*(po+i)=operate[i]
num=danx(p,n)
if(num==0)printf("矩阵不可逆\n")
else{
if(n==1)printf("矩阵的逆为: 1/%d\n",num)
else{
printf("矩阵的逆为: 系数 1/%d *\n",num)
for(i=0i<ni++){
for(j=0j<nj++){
j1=-1j2=-1
while(j2<n-1){
j1++j2++
if(j1==j)j1++ k1=-1k2=-1
while(k2<n-1){
k1++
k2++
if(k1==i)k1++
*(*(po+j2)+k2)=*(*(p+j1)+k1)
}
}
tramform[i][j]=sgnx(2+i+j) * danx(po,n-1)
}
}
for(i=0i<ni++){
for(j=0j<nj++){
printf("%4d",tramform[i][j])
}
printf("\n")
}
}
}
}
//运行结果//希望对你有帮助
学习C语言,我想应当首先手头有一本入门教材,如果有条件用计算机的话,在计算机上安装TC程序。前面的基本内容我想你自己会学好学会的,关键就是在指针以后的内容比较复杂抽象,需要下一番功夫才行呀。
如果有什么问题可以在网上线我留言。QQ360795604
#include <stdio.h>// double u μ 正态分布的均值
// double g σ2=g2 正态分布的方差
// double * r指向随机数种子
// double grn1() 返回一个均值u 方差g2 正态分布 的随机数
double grn1(double u,double g,double * r)
{ int i,m
double s,w,v,t
s=65536.0w=2053.0v=13849.0
t=0.0
for (i=1i<=12i++)
{ *r=(*r)*w+vm=(int)(*r/s)
*r=*r-m*st=t+(*r)/s
}
t=u+g*(t-6.0)
return(t)
}
int main()
{
double u,g,r
r=5.0u=1.0g=1.5
printf("\n")
for(int i=0i<=9i++){
for(int j=0j<=4j++){
printf("%10.7lf", grn1(u,g,&r))
}
printf("\n")
}
printf("\n")
}
运行结果:
1.2386322-1.1779938 0.5128021 1.9047699 1.5916595
1.1672211-0.7747955 1.8593597 1.6634369 1.7311859
0.6563568-1.4673004-0.0460358-0.9860992 0.3062592
3.9247894-0.5367584 3.5153656-0.3250885 0.0356293
0.1912689 0.2355804 0.2623138 0.3652191 3.6380463
1.1745453 2.0684662 0.4135590 2.3035736 4.8322601
-0.9066315 0.1806488 2.1878510 2.2087250 1.8370209
-0.3335114 3.2908783 0.8039398 1.2994232-1.1289215
4.1126556 0.6179047 0.4805756 0.7944183-1.3468170
1.6506195 2.3804779 2.4365082 1.9124603 0.9020844
参考 常用算法程序集(c语言描述)第三版
第三章 随机数的产生
3.5 产生任意均值与方差的正态分布的一个随机数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)