宏定义的有关问题
宏定义的问题
为什么下面程序"printf"里的"N"不会被替换成"10"?
如何才能做到这一点?
#include <stdio.h>
#define N 10
void main()
{
int a[N][N]={1},i,j,k=0,m,n;
printf("Enter n (n<N): \n");
scanf("%d",&n);
if (n%2==0) m=n/2;
else m=n/2+1;
for (i=0; i<m; i++)
{
for (j=i; j<n-i; j++)
{
k++;a[i][j]=k;
}
for (j=i+1; j<n-i; j++)
{
k++;a[j][n-i-1]=k;
}
for (j=n-i-2; j>=i; j--)
{
k++;a[n-i-1][j]=k;
}
for (j=n-i-2; j>=i+1; j--)
{
k++;a[j][i]=k;
}
}
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
------解决方案--------------------
包含在" "里面的东西,如果没有转义或其它特殊规定,都会认为是字符串
------解决方案--------------------
因为是字符串,不是变量~自动替换的只有变量~
为什么下面程序"printf"里的"N"不会被替换成"10"?
如何才能做到这一点?
#include <stdio.h>
#define N 10
void main()
{
int a[N][N]={1},i,j,k=0,m,n;
printf("Enter n (n<N): \n");
scanf("%d",&n);
if (n%2==0) m=n/2;
else m=n/2+1;
for (i=0; i<m; i++)
{
for (j=i; j<n-i; j++)
{
k++;a[i][j]=k;
}
for (j=i+1; j<n-i; j++)
{
k++;a[j][n-i-1]=k;
}
for (j=n-i-2; j>=i; j--)
{
k++;a[n-i-1][j]=k;
}
for (j=n-i-2; j>=i+1; j--)
{
k++;a[j][i]=k;
}
}
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
------解决方案--------------------
包含在" "里面的东西,如果没有转义或其它特殊规定,都会认为是字符串
------解决方案--------------------
因为是字符串,不是变量~自动替换的只有变量~