啊这啧啧啧 发表于 2023-5-8 13:45:28

输出直接通过问题

#include <stdio.h>
#define max 1024
int main(){
        //定义
        int t;
        int n,m;
        int arr;
        //输入
        printf("请输入你所需分的黄金堆数:");
        scanf("%d",&t);
        printf("%d",t);
       
        printf("请输入这堆黄金的块数,并且可分的黄金堆包含的块数");
        for(int i=0;i<t;i++){
          for(int j=0;j<2;j++){       
                scanf("%d",&n);
                  arr=n;
          }
        }
        for(int i=0;i<t;i++){
          for(int j=0;j<2;j++){       
                  printf("%d",arr);
          }
        }
        //测试
       
        //存入
       
        //判断
       
        return 0;
       
}

isdkz 发表于 2023-5-8 13:46:10

这段代码存在一些问题,主要是输入和输出的部分。具体来说:

1. 在输入部分,应该先输入黄金堆数t,再循环输入每一堆黄金的块数和可分的黄金堆包含的块数。此外,在存储每一堆黄金的块数和可分的黄金堆包含的块数时,应该使用i和j作为下标,而不是t和j。

2. 在输出部分,应该在每一堆黄金的块数和可分的黄金堆包含的块数之间加入空格,以便区分。

修改后的代码如下:

#include <stdio.h>
#define max 1024

int main() {
    int t;
    int n, m;
    int arr;

    // 输入
    printf("请输入你所需分的黄金堆数:");
    scanf("%d", &t);

    printf("请输入每一堆黄金的块数和可分的黄金堆包含的块数:\n");
    for (int i = 0; i < t; i++) {
      for (int j = 0; j < 2; j++) {
            scanf("%d", &n);
            arr = n;
      }
    }

    // 输出
    printf("你输入的黄金堆数为:%d\n", t);
    printf("每一堆黄金的块数和可分的黄金堆包含的块数为:\n");
    for (int i = 0; i < t; i++) {
      for (int j = 0; j < 2; j++) {
            printf("%d ", arr);
      }
      printf("\n");
    }

    // 测试

    // 存入

    // 判断

    return 0;
}

啊这啧啧啧 发表于 2023-5-8 23:21:51

isdkz 发表于 2023-5-8 13:46
这段代码存在一些问题,主要是输入和输出的部分。具体来说:

1. 在输入部分,应该先输入黄金堆数t,再循 ...

#include <stdio.h>
#define max 1024
int main(){
        //定义
        int t;
        int n,m;
        int arr;
        //输入
        printf("请输入你所需分的黄金堆数:");
        scanf("%d",&t);
       
        printf("请输入这堆黄金的块数,并且可分的黄金堆包含的块数");
        for(int i=0;i<t;i++){
          for(int j=0;j<2;j++){       
                scanf("%d",&n);
                  arr=n;
          }
        }
       
        //测试
        int k=0;
        int c;
        int num;
                //测试次数
                for(int i=0;i<t;i++){
                for(int b=1;b<arr;b++){
                    c=arr-b;
                    if(c%2==b){
                            num=c;
                            k++;
                          }else if(b%2==c){
                                  num=c;
                                  k++;
                                }
                  }
          }
             
        for(int h;h<sizeof (num)/sizeof (num);h++){
                printf("%d",num);
        }
       
        //存入
       
        //判断
       
        return 0;
}
//大神,这个nun的数组输出也有些问题,是数据接收有问题还是输出有问题{:10_266:}

isdkz 发表于 2023-5-8 23:24:59

啊这啧啧啧 发表于 2023-5-8 23:21
#include
#define max 1024
int main(){


你把你的代码放到代码块里,不然有 ] 的地方会变成斜体,] 会不见

啊这啧啧啧 发表于 2023-5-8 23:26:41

isdkz 发表于 2023-5-8 23:24
你把你的代码放到代码块里,不然有 ] 的地方会变成斜体,] 会不见

有点不理解{:10_269:}

isdkz 发表于 2023-5-8 23:35:38

啊这啧啧啧 发表于 2023-5-8 23:26
有点不理解

啊这啧啧啧 发表于 2023-5-8 23:36:12

isdkz 发表于 2023-5-8 23:35


#include <stdio.h>
#define max 1024
int main(){
        //定义
        int t;
        int n,m;
        int arr;
        //输入
        printf("请输入你所需分的黄金堆数:");
        scanf("%d",&t);
       
        printf("请输入这堆黄金的块数,并且可分的黄金堆包含的块数");
        for(int i=0;i<t;i++){
          for(int j=0;j<2;j++){       
                scanf("%d",&n);
                  arr=n;
          }
        }
       
        //测试
        int k=0;
        int c;
        int num;
                //测试次数
                for(int i=0;i<t;i++){
                for(int b=1;b<arr;b++){
                    c=arr-b;
                    if(c%2==b){
                            num=c;
                            k++;
                          }else if(b%2==c){
                                  num=c;
                                  k++;
                                }
                  }
          }
             
        for(int h;h<sizeof (num)/sizeof (num);h++){
                printf("%d",num);
        }
       
        //存入
       
        //判断
       
        return 0;
       
}

isdkz 发表于 2023-5-8 23:43:03

啊这啧啧啧 发表于 2023-5-8 23:36


这段代码的问题主要是在输出部分,还有一些变量的初始化问题。具体来说:

1. 在for循环中,将变量h的初始值设置为0。在现有代码中,h的初始值未定义,这可能导致未定义行为。

2. 在输出num数组的元素时,应在每个元素之间添加一个空格或换行符,以便更清楚地显示结果。

修改后的代码如下:


#include <stdio.h>
#define max 1024
int main() {
    // 定义
    int t;
    int n, m;
    int arr;
   
    // 输入
    printf("请输入你所需分的黄金堆数:");
    scanf("%d", &t);

    printf("请输入这堆黄金的块数,并且可分的黄金堆包含的块数\n");
    for (int i = 0; i < t; i++) {
      for (int j = 0; j < 2; j++) {
            scanf("%d", &n);
            arr = n;
      }
    }

    // 测试
    int k = 0;
    int c;
    int num;
    // 测试次数
    for (int i = 0; i < t; i++) {
      for (int b = 1; b < arr; b++) {
            c = arr - b;
            if (c % 2 == b) {
                num = c;
                k++;
            } else if (b % 2 == c) {
                num = c;
                k++;
            }
      }
    }

    // 输出
    for (int h = 0; h < k; h++) {
      printf("%d ", num);
    }

    // 存入

    // 判断

    return 0;

}


现在,代码应该能够正常输出num数组的元素。注意,我在输出部分添加了空格。如果您希望每个元素之间换行,可以将 printf("%d ", num); 替换为 printf("%d\n", num); 。
页: [1]
查看完整版本: 输出直接通过问题