0:
#include <stdio.h>
void func1(int, int);
void func2(int, int);
int global_var1 = 520;
int global_var2 = 888;
static int var1 = 1;
static int var2 = 2;
void func1(int param1, int param2)
{
static int var1 = 7;
static int var2 = 17;
printf("addr of func1_param1: %#010x\n", ¶m1);
printf("addr of func1_param2: %#010x\n", ¶m2);
printf("addr of func1_static_var1: %#010x\n", &var1);
printf("addr of func1_static_var2: %#010x\n", &var2);
}
void func2(const int param1, const int param2)
{
int var1 = 1;
int var2 = 2;
printf("addr of func2_const_param1: %#010x\n", ¶m1);
printf("addr of func2_const_param2: %#010x\n", ¶m2);
printf("addr of func2_var1: %#010x\n", &var1);
printf("addr of func2_var2: %#010x\n", &var2);
}
int main()
{
char string1[] = {"I love you"};
char string2[] = {"Forever"};
int param1 = 1;
int param2 = 2;
func1(param1, param2);
func2(param1, param2);
printf("addr of func1: %#010x\n", &func1);
printf("addr of func2: %#010x\n", &func2);
printf("addr of string1: %#010x\n", &string1);
printf("addr of string2: %#010x\n", &string2);
printf("addr of global_var1: %#010x\n", &global_var1);
printf("addr of global_var2: %#010x\n", &global_var2);
printf("addr of file_static_var1: %#010x\n",&var1);
printf("addr of file_static_var2: %#010x\n",&var2);
return 0;
}
1:
#include <stdio.h>
int main(void)
{
int i, j, k, m, n;
int num;
printf("请输入一个奇数: ");
scanf("%d",&num);
// 检测是否为奇数
if (num != 1 && num % 2 == 0){
printf("请输入奇数!!!");
}
int sum[num][num]; // 矩阵
// 初始化
for (i = 0; i < num; i++){
for (j = 0; j < num; j++){
sum[i][j] = 0;
}
}
k = 1;
// i 为列, j 为行
for (i = num / 2, j = 0; i < num, j < num; i++,j--){
if (i == num){ // 最后一列时回转
i = 0;
}
if (j < 0){ // 最后一行时回转
j = num - 1;
}
if (sum[i][j] == 0){
sum[i][j] = k;
} else { // 当规定的位置有数时,行数减一,列数不变。
j = n + 1;
i = m;
sum[i][j] = k;
}
if (k == num * num){
break;
}
k++;
m = i; // 记录行列
n = j;
}
for (i = 0; i < num; i++){
for (j = 0; j < num; j++){
printf("%3d ",sum[j][i]);
}
putchar('\n');
}
return 0;