C 不运行代码就读取代码

C 不运行代码就读取代码,c,C,因此,我有一段代码,我试图找出如何在不运行它的情况下阅读,但我似乎无法找到模式和方法。我希望有人能给我解释一下怎么读 #include <stdio.h> void mystery(int z[], int size); void main() { int i; int z[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (i = 0; i < 10; i++) printf("%d",

因此,我有一段代码,我试图找出如何在不运行它的情况下阅读,但我似乎无法找到模式和方法。我希望有人能给我解释一下怎么读

#include <stdio.h>

void mystery(int z[], int size);

void main()

{
    int i;
    int z[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    for (i = 0; i < 10; i++)
        printf("%d", z[i]);
    printf("\n\n");

    mystery(z, 10);

    for (i = 0; i < 10; i++)
        printf("%d", z[i]);
    printf("\n\n");

    mystery(z, 7);

    for (i = 10; i < 7; i++)
        printf("%d", z[i]);
    printf("\n\n");
}

void mystery(int z[], int n)
{
    int i, temp;

    for (i = 1; i < n / 2; i = i + 2)
    {
        temp = z[i];
        z[i] = z[n - 1 - i];
        z[n - 1 - i] = temp;
    }
    return;
}
#包括
虚空之谜(整数z[],整数大小);
void main()
{
int i;
intz[10]={1,2,3,4,5,6,7,8,9,10};
对于(i=0;i<10;i++)
printf(“%d”,z[i]);
printf(“\n\n”);
神秘(z,10);
对于(i=0;i<10;i++)
printf(“%d”,z[i]);
printf(“\n\n”);
神秘(z,7);
对于(i=10;i<7;i++)
printf(“%d”,z[i]);
printf(“\n\n”);
}
虚空之谜(整数z[],整数n)
{
int i,温度;
对于(i=1;i
当运行它时,代码读取

12345678910


1 9 3 7 5 6 4 8 2 10

关键在于你理解这个循环:

for (i = 1; i < n / 2; i = i + 2)
    {
        temp = z[i];
        z[i] = z[n - 1 - i];
        z[n - 1 - i] = temp;
    }
(i=1;i { 温度=z[i]; z[i]=z[n-1-i]; z[n-1-i]=温度; }
i+2
表示步骤(增量)。在这种情况下,步长是2而不是1,这意味着
i
将增加1、3、5、7。。。最多n/2。循环的内容只是切换边界的外部元素,即元素2和9的第一次迭代将切换位置


因为循环的开始是
i=1
(而不是
i=0
),所以第一个元素不受循环的影响。记住数组从0开始,所以第二个元素有索引1,循环从这里开始:在第二个元素。因为步骤是2,所以只有第二个元素会切换。我希望这能回答你的问题

关键在于你理解这个循环:

for (i = 1; i < n / 2; i = i + 2)
    {
        temp = z[i];
        z[i] = z[n - 1 - i];
        z[n - 1 - i] = temp;
    }
(i=1;i { 温度=z[i]; z[i]=z[n-1-i]; z[n-1-i]=温度; }
i+2
表示步骤(增量)。在这种情况下,步长是2而不是1,这意味着
i
将增加1、3、5、7。。。最多n/2。循环的内容只是切换边界的外部元素,即元素2和9的第一次迭代将切换位置


因为循环的开始是
i=1
(而不是
i=0
),所以第一个元素不受循环的影响。记住数组从0开始,所以第二个元素有索引1,循环从这里开始:在第二个元素。因为步骤是2,所以只有第二个元素会切换。我希望这能回答你的问题

我怎么知道n是什么?在你的程序中n被设置为10,如果你看调用,它会说数字10=n。对不起,我仍然有问题,举个例子,如果我从I=1开始。方程是z[1]=[10-1-8],因此1=1,还是i=2,它是z[2]=z[10-1-0],因此2=9?再次感谢,差不多了!对于
i=1
z[i]=z[10-1-1]=z[8]
,第二个元素将获得第九个元素的值。对于
i=2
z[i]=z[10-1-2]=z[7]
,第三个和第八个元素将切换,依此类推。请记住,索引从0开始,而不是1。非常感谢!最后一个问题,对不起,哈哈,为什么1=1而不是1=10?与3=3相同,而不是3=8,依此类推,我如何知道n是什么?在您的程序中,n设置为10,如果您查看调用,它会显示数字10=n。对不起,我仍然有问题,例如,如果我从I=1开始。方程是z[1]=[10-1-8],因此1=1,还是i=2,它是z[2]=z[10-1-0],因此2=9?再次感谢,差不多了!对于
i=1
z[i]=z[10-1-1]=z[8]
,第二个元素将获得第九个元素的值。对于
i=2
z[i]=z[10-1-2]=z[7]
,第三个和第八个元素将切换,依此类推。请记住,索引从0开始,而不是1。非常感谢!最后一个问题,对不起,哈哈,为什么1=1而不是1=10?与3=3相同,而不是3=8,依此类推