int main() {
int length, width, perimeter
printf("长:")
scanf("%d", &length)
printf("宽:")
scanf("%d", &width)
perimeter = 2 * (length + width)
printf("周长:%d\n", perimeter)
}
里面有 n*n 个 边长1(n-1) * (n-1) 个 边长2
(n-2) * (n-2)个边长3
所以一共有 1^2 + 2^2+ 3^2+...+n^2
根据数列求和公式 所以是 n(n+1)(2n+1)/6 个正方形
问题分为两步,1界面设计,就如上面所说的
用getchar()获得一个输入,再编一个switch语句,然后写四个case语句加一个default。根据输入的字符调用不同函数。退出就是exit(0)。
2函数设计
(1)这里牵扯到n阶数组,可用一维数组的指针,动态申请内存长度,
比如int *pp=(int)malloc(sizeof(int)*n*n)//申请n×n个int
然后一一赋值,在做加减乘的时候,加减比如好算,但乘的运算应该是p[i*n+j]=p1和第i行和p2的第j列分别相乘再相加的结果。比较复杂
还要考虑的问题是左边和右边两个数组的阶数是否一致
(2)程序的主要难度在于p1与p2两个数组相乘的算法,结果放在p中,则提供思路如下
for(int i=0i<ni++)
for(int j=0j<nj++)
{
int sum=0
for(int k=0k<nk++)
for(int l=0l<nl++)
sum+=p1(i*n+k)*p2(l*n+j)//把p1的第i行和p2的第j列相加
p[i*n+j]= sum
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)