资源描述
实验3 数组的建立和使用
实验目的
1.掌握C语言中数组的类型定义。
2.掌握数组的建立和使用的特点。
实验内容
程序1
在计算机上以字符串的形式输入了两个任意长的整数,编写求这两个整 数的积的程序。
程序2
若矩阵Am´n中的某个元素aij是第i行的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。假设以二维数组存储矩阵Am´n,试编写求出矩阵中所有马鞍点的算法。
============================================================================
部分参考程序
============================================================================
程序1
#include <string.h>
#define Maxsize 200
int main()
{ int i,j,temp,carry, l,la,lb;
char a[Maxsize]=" ",
b[Maxsize]=" ";
static int c[2*Maxsize]={0};
printf( "请输入A的值:"); /*a[0]为最高位*/
scanf("%s",&a);
la=strlen(a); // 字符个数
printf("请输入B的值:");
scanf("%s",b);
lb=strlen(b);
for(i=0; i<la; i++) /*字符型数据转化为整型,例如:字符1的ASCII码为49*/
a[i]=a[i]-48;
for(i=0; i<la/2; i++)
{temp=a[i]; a[i]=a[la-1-i]; a[la-1-i]=temp; }
for(j=0; j<lb; j++) b[j]=b[j]-48;
for(j=0; j<lb/2; j++)
{temp=b[j]; b[j]=b[lb-1-j]; b[lb-1-j]=temp; }
for(i=0; i<la; i++)
{for(j=0; j<lb; j++)
{c[i+j]=c[i+j]+a[i]*b[j]; }
}
l=0; temp=0; carry=0;
do
{temp=c[l]+carry;
c[l]=temp%10;
carry=temp/10;
l++;
}while(l<=(lb+la));
for(i=la+lb; c[i]==0; i--);
printf("A与B的积是:");
for(;i>=0;i--)
{printf("%d",c[i]);}
}
程序2
#include "stdio.h"
#define m 3
#define n 4
void minmax(int A[m][n])
{int i,j,have=0,row,col;
int min[m],max[n];
for(i=0;i<m;i++)
{min[i]=A[i][0];
for(j=1;j<n;j++)
if(A[i][j]<min[i]) min[i]=A[i][j]; /*本行最小元素*/
}
for(j=0;j<n;j++)
{max[j]=A[0][j];
for(i=1;i<m;i++)
if (A[i][j]>max[j]) max[j]=A[i][j]; /*本列最大元素*/
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(min[i]==max[j])
{row=i+1;col=j+1;
printf("(%d,%d):%d\n",row,col,A[i][j]);
have=1;
}
if(!have) printf("没有鞍点\n");
}
展开阅读全文