
1.在主程序中定义了矩阵A和B(比如C语言,A[50][67],B[73][49]),请写一个通用子程序完成矩阵相加,使得对于任何的子矩阵A与子矩阵B相加都能调用该子程序,用C或Fortran语言,比如,matradd(m,n,...,A,...,B,...,C)
#include<stdio.h>
int main(){
//m是行数,n是列数
int m,n;
scanf("%d,%d",&m,&n);
int a[m][n],b[m][n],sum[m][n];
//读入数组a
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
//读入数组b
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
scanf("%d",&b[i][j]);
}
}
//数组相加
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
sum[i][j]=a[i][j]+b[i][j];
}
}
//输出数组
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
printf("%d ",sum[i][j]);
if(j==n-1) printf("\n");
}
}
return 0;
}
2.设多项式,请给出计算
的方法并写出计算它的子程序。
#include<stdio.h>
#include<math.h>
int main(){
int n,x;
scanf("%d,%d",&n,&x);
int a[n];
for(int i=0;i<=n;i++){
scanf("%d",&a[i]);
}
int y=0;
for(int i=0;i<=n;i++){
y=y+a[i]*pow(x,i);
}
printf("%d",y);
return 0;
}
//为啥调试与打印值不一样??!
#include<stdio.h>
#include<math.h>
int Px(int a[],int n,int x){
int y=0;
for(int i=0;i<=n;i++){
y=y+a[i]*pow(x,i);
}
}
int main(){
int n,x;
scanf("%d,%d",&n,&x);
int a[n];
for(int i=0;i<=n;i++){
scanf("%d",&a[i]);
}
int y=0;
y=Px(a,n,x);
printf("%d",y);
return 0;
}
3.对任意给定的和
,用算法1写一个程序计算
。


#include<stdio.h>
#include<math.h>
int main(){
int x,n;
scanf("%d,%d",&x,&n);
int k=log(n)/log(2);
int a[k]={0};
int i=0;
while(n!=0){
a[i]=n%2;
n=n/2;
i++;
}
int y=1;
for(int i=0;i<=k-1;i++){
if(a[i]==1) y=y*x;
x=x*x;
}
y=y*x;
printf("%d",y);
return 0;
}