
这几道C语言题目你能帮忙做做吗?VC环境的
2.n阶方阵求逆。输入是一个n(n<256)阶方阵A,输出是它的逆矩阵,要求还要再将得到的逆矩阵与原来的矩阵相乘,验证其结果是单位矩阵。
3.大整数的四则运算。大整数指超过十位的十进制整数,这里为简便,假定不超过五十位。这类大整数在C语言系统中因超界溢出,是不能直接表达和计算的。可以用数组来表示大整数,在此基础上编写出实现大整数加、减、乘、除的程序,并努力加以优化。
4.设有任意正三角形ABC,其三条边BC、CA,AB上分别有一点A1、B1、C1,而且有AC1=2C1B,BA1=2A1C,CB1=2B1A。编制程序验证由线段AA1、BB1、CC1相交而成的三角形A2B2C2的面积是正三角形ABC的面积的七分之一。
5.对于任意的四边形ABCD,其对角线AC与BD的中点分别是M、N,AB、CD的延长线交于R。验证三角形RMN的面积是四边形ABCD面积的四分之一。
本人急需交作业啊!!希望能帮帮忙啊!!!我的积分不多·但我会全部都给出来的 !!!随便做出一道就行了!!谢谢了 展开
第一题:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
const int N = 3;
int i,j, K, II1, JF[2][1000];
float J[N+1][N+2], H[1000], UJ[2][1000];
void main()
{
void JBB(float *H, int &II1, int K, int N); //前代过程
void SBW(int N); //回代过程
JF[1][1] = 2;
II1 = 3;
for(i = 1; i <= N; i++) //输入系数及等号右边那数
for(j = 1; j <= N+1; j++)
scanf("%f", &J[i][j]);
for(K = 1; K <= N; K++)
{
for(i = 1; i<= N+1; i++)
H[i] = J[K][i];
JBB(&H[0], II1, K-1, N);
}
SBW(N);
for(i = 1; i <=N; i++)
printf("X%d = %f\n",i,H[i]);
}
void JBB(float *H, int &II1, int K, int N) //II1必须为引用
{
int M, NN, I, J, K1, ll;
float LL, S;
K1 = 0;
if(II1 != 3)
for(I = 1; I <= K; I++)
{
M = JF[1][I];
NN = JF[1][I+1] - 1;
for(J = M; J <= NN; J++)
{
LL = UJ[1][2*J];
ll = (int)LL;
H[ll] = H[ll] - H[I] * UJ[1][2*J-1];
}
}
K += 1;
S = H[K];
K1 = 0;
for(I = K + 1; I <= N+1; I++)
{
if(fabs(H[I]) < 1.0E-15)continue;
UJ[1][II1] = H[I] / S;
UJ[1][II1+1] = I;
K1 += 1;
II1 += 2;
}
if(II1 > 2000) printf("error\n");
JF[1][K+1] = JF[1][K] + K1;
}
void SBW(int N)
{
int I, J, K, K1, K2, l, ll;
float L,LL;
for(I = 1; I < 1000; I++)
H[I] = 0;
K1 = N;
for(I = K1; I >= 1; I--)
{
K = JF[1][I];
K2 = JF[1][I+1] - 1;
LL = UJ[1][2*K2];
ll = (int)LL;
if(ll != N+1 || K > K2)
K2 += 1;
else
H[I] = UJ[1][2*K2-1];
for(J = K; J <= K2 -1; J++)
{
L = UJ[1][2*J];
l = (int)L;
H[I] = H[I] - UJ[1][2*J-1]*H[l];
}
} //注意循环嵌套
}
例:见图