1、螺旋矩阵的简单实现
由左上角为1时的顺时针向中心螺旋
代码如下`#include <stdio.h>
int main(void)
{
int i, j, k, n, num = 1;
int a[10][10] = {1};
scanf("%d",&n);
for(k = 0;k < n/2;k++)
{
for(i = k;i <= n-k-1;i++)
{
a[k][i] = num++;
}
for(j = k + 1;j < n-k-1;j++)
{
a[j][n-k-1] = num++;
}
for(i = n-k-1;i > k;i--)
{
a[n-k-1][i] = num++;
}
for(j = n-k-1;j > k;j--)
{
a[j][k] = num++;
}
if(n%2 == 1)
a[(n-1)/2][(n-1)/2] = num;//N为奇数时中心的数为N*N
}
for(i = 0;i < n;i++)
{
for(j = 0;j < n;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
return 0;
} `
2、关于大精度整数加法的简单实现
#include <stdio.h>
#include <string.h>
#define maxlen 210
void change(char *a,int *b)
{
int len = strlen(a),j = 0;
for(int i = len-1;i >= 0;i--)
{
b[j++] = a[i] - '0';
}
}
int main(void)
{
int a[maxlen],b[maxlen],c[maxlen];
char str1[maxlen],str2[maxlen],str[maxlen];
scanf("%s %s",str1,str2);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
change(str1,a);
change(str2,b);
int len = strlen(str1) >= strlen(str2) ? strlen(str1):strlen(str2);
for(int i = 0;i <len;i++)
{
c[i] += a[i] + b[i];
c[i+1] = c[i]/10;
c[i] %= 10;
}
while(len >= 0 && c[len] == 0)
{
len--;
}
memset(str,0,sizeof(str));
int i = 0;
for(int j = len;j >= 0;j--)
{
str[i++] = c[j]+'0';
}
if(strlen(str) == 0)
{
str[0] = '0';
}
printf("%s",str);
return 0;
}
//引用字符串数组实现