void main()
{
int a[5][5],i,j
printf("输入距阵数:\n")
for(i=0i<5i++)
for(j=0j<=ij++)
scanf("%d",&a[j][i])
for(i=0i<5i++)
{
for(j=0j<5j++)
if(i>=j)
printf("%5d",a[j][i])
else
printf(" C")
printf("\n")
}
}
typedef int ElemType// 定义矩阵元素类型ElemType为整型# include "stdlib.h" // 该文件包含malloc()、realloc()和free()等函数
# include "iomanip.h" // 该文件包含标准输入输出流cout和cin及控制符setw()
# define N 10
void Enter(ElemType A[],int n)
{
int i
for(i=0i<n*(n+1)/2i++)
cin>>A[i]
}
void Add(ElemType A[],ElemType B[],ElemType C[],int n)
{
int i
for(i=0i<n*(n+1)/2i++)
C[i]=A[i]+B[i]
}
void Mult(ElemType A[],ElemType B[],ElemType D[][N],int n)
{
int i,j,k,p,q,sum
for(i=0i<ni++)
for(j=0j<nj++)
{
sum=0
for(k=0k<nk++)
{
if(i>=k) p=i*(i+1)/2+k
else p=k*(k+1)/2+i
if(j>=k) q=j*(j+1)/2+k
else q=k*(k+1)/2+j
sum=sum+A[p]*B[q]
}
D[i][j]=sum
}
}
void Print(ElemType A[],int n)
{
int i,j
for(i=0i<ni++)
{
for(j=0j<nj++)
if(i>=j) cout<<setw(2)<<A[i*(i+1)/2+j]
else cout<<setw(2)<<A[j*(j+1)/2+i]
cout<<endl
}
}
void main()
{
ElemType A[N],B[N],C[N],D[N][N]
int i,j,n
cout<<"请输入矩阵的阶数:"
cin>>n
cout<<"请输入矩阵A:"<<endl
Enter(A,n)
cout<<"请输入矩阵B:"<<endl
Enter(B,n)
cout<<"矩阵A为:"<<endl
Print(A,n)
cout<<"矩阵B为:"<<endl
Print(B,n)
Add(A,B,C,n)
cout<<"矩阵C为:"<<endl
Print(C,n)
Mult(A,B,D,n)
cout<<"矩阵D为:"<<endl
for(i=0i<ni++)
{
for(j=0j<nj++)
cout<<setw(5)<<D[i][j]
cout<<endl
}
}
函数 fun() 计算上三角所有元素之和。参数1是数组,参数2是n*n数组大小n.返回 上三角元素之和。
调用方法: fun(&a[0][0],n)
程序如下:
#include<stdio.h>
#include<stdlib.h>
float fun(float *a, int n){
int i,j
float sum=0
for (j=0j<nj++)
for (i=ji<ni++)sum = sum + a[j*n+i]
return sum
}
main(){
float a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}
int n=4
printf("%g",fun(&a[0][0],n))
return 0
}
算例输出: 70