Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 这只能通过循环来解决吗?_C_Loops_For Loop_Printf - Fatal编程技术网

C 这只能通过循环来解决吗?

C 这只能通过循环来解决吗?,c,loops,for-loop,printf,C,Loops,For Loop,Printf,因为我是编程的初学者,所以我尽可能多地编程。我看到了一个关于整数数组如何保存字节的插图。我试着用c语言做这个例子,只是为了学习,我想知道是否有比我做的更好的方法 下面的代码独立工作,如果有更有效的方法,它仍然应该有相同的输出 我知道如果数组有100个整数,我的代码将非常具有挑战性 #include <stdio.h> int main() { int lange = 3; int c[lange]; c[0] = 3; c[1] = 1; c

因为我是编程的初学者,所以我尽可能多地编程。我看到了一个关于整数数组如何保存字节的插图。我试着用c语言做这个例子,只是为了学习,我想知道是否有比我做的更好的方法

下面的代码独立工作,如果有更有效的方法,它仍然应该有相同的输出

我知道如果数组有100个整数,我的代码将非常具有挑战性

#include <stdio.h>

int main() {
    int lange = 3;
    int c[lange];
    c[0] = 3;
    c[1] = 1;
    c[2] = 2;


    for (int i = 0; i < lange*4; i++) {
        printf("| ");
        if (i == 0) {
            printf("%d", c[0]);
        }
        else if (i==4) {
            printf("%d", c[1]);
        }
        else if (i==8){
            printf("%d",c[2]);
        }
    }
    return 0;
}
#包括
int main(){
int-lange=3;
INTC[lange];
c[0]=3;
c[1]=1;
c[2]=2;
对于(int i=0;i
通过将循环中的if树更改为

if ((i % 4) == 0)
    printf("%d", c[i/4]);
或者您可以通过执行以下操作打印每个字节

printf("%d", (c[i/4] >> (i%4 * 8)) & 0xff);

通过将循环中的if树更改为

if ((i % 4) == 0)
    printf("%d", c[i/4]);
或者您可以通过执行以下操作打印每个字节

printf("%d", (c[i/4] >> (i%4 * 8)) & 0xff);
你应该使用
#定义C#LEN 3
,并用它代替你的神奇数字3。您在每次迭代中循环打印出一个“|”,因此您的循环体不能真正简化,除了:

if(!(i % 4)) printf("%d", c[i/4]);
如果您只想打印0、4和8的内容,那么可以按4而不是1进行迭代,或者最好按1进行迭代(见下文)

输出为:

| 3| | | | 1| | | | 2| | |
如果这就是你想要的,我会写一份打印声明:

printf("| %d| | | | %d| | | | %d| | | ", c[0], c[1], c[2]);
或者,如果您希望一次在组上循环一次,只需迭代3次:

for (int i = 0; i < C_LEN; i++) {
  printf("| %d| | | ", c[i]);
}
for(int i=0;i
你应该使用一个
#定义C#LEN 3
并用它代替你的神奇数字3。您在每次迭代中循环打印出一个“|”,因此您的循环体不能真正简化,除了:

if(!(i % 4)) printf("%d", c[i/4]);
如果您只想打印0、4和8的内容,那么可以按4而不是1进行迭代,或者最好按1进行迭代(见下文)

输出为:

| 3| | | | 1| | | | 2| | |
如果这就是你想要的,我会写一份打印声明:

printf("| %d| | | | %d| | | | %d| | | ", c[0], c[1], c[2]);
或者,如果您希望一次在组上循环一次,只需迭代3次:

for (int i = 0; i < C_LEN; i++) {
  printf("| %d| | | ", c[i]);
}
for(int i=0;i
您似乎正在尝试以4的倍数打印数组的元素。

您可以通过创建任意大小的数组来概括程序,并使
for
循环如下:

int index = 0;

for (int i = 0; i < lange*4; i++) 
{
    printf("| ");
    if (i == 0) 
    {
        index = 0;
    }
    else if((i % 4) == 0) 
    {
        index = i/4;
    }
    else 
    {
        continue;
    }
    
    printf("%d",c[index]);
}
int索引=0;
对于(int i=0;i
您似乎正在尝试以4的倍数打印数组的元素。

您可以通过创建任意大小的数组来概括程序,并使
for
循环如下:

int index = 0;

for (int i = 0; i < lange*4; i++) 
{
    printf("| ");
    if (i == 0) 
    {
        index = 0;
    }
    else if((i % 4) == 0) 
    {
        index = i/4;
    }
    else 
    {
        continue;
    }
    
    printf("%d",c[index]);
}
int索引=0;
对于(int i=0;i
@EugeneSh。是吗d对我来说,这看起来像是“案例范例”…你能解释一下你的需求吗。您试图实现的内容不清楚。@AnttiHaapala oops。不是,对不起。仍然不清楚,请阅读关于模运算符的内容。@EugeneSh。是吗d对我来说,这看起来像是“案例范例”…你能解释一下你的需求吗。您试图实现的内容不清楚。@AnttiHaapala oops。不是,对不起。仍然不清楚,请阅读关于模运算符的内容。