鱼C论坛

 找回密码
 立即注册
查看: 1095|回复: 7

[已解决]输出直接通过问题

[复制链接]
发表于 2023-5-8 13:45:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#define max 1024
int main(){
        //定义
        int t;
        int n,m;
        int arr[max][max];
        //输入
        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[t][j]=n;
            }
        }
        for(int i=0;i<t;i++){
            for(int j=0;j<2;j++){       
                    printf("%d",arr[i][j]);
            }
        }
        //测试
       
        //存入
       
        //判断
       
        return 0;
       
}
最佳答案
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[max][2];

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

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

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

    // 测试

    // 存入

    // 判断

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[max][2];

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

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

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

    // 测试

    // 存入

    // 判断

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[max][2];
        //输入
        printf("请输入你所需分的黄金堆数:");
        scanf("%d",&t);
       
        printf("请输入这堆黄金的块数,并且可分的黄金堆包含的块数");
        for(int i=0;i<t;i++){
            for(int j=0;j<2;j++){       
                scanf("%d",&n);
                    arr[i][j]=n;
            }
        }
       
        //测试
        int k=0;
        int c;
        int num[max];
                //测试次数
                for(int i=0;i<t;i++){
                for(int b=1;b<arr[i][0];b++){
                        c=arr[i][0]-b;
                        if(c%2==b){
                                num[k]=c;
                                k++;
                            }else if(b%2==c){
                                    num[k]=c;
                                    k++;
                                }
                    }
            }
             
        for(int h;h<sizeof (num)/sizeof (num[0]);h++){
                printf("%d",num[h]);
        }
       
        //存入
       
        //判断
       
        return 0;
}
//大神,这个nun[max]的数组输出也有些问题,是数据接收有问题还是输出有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-8 23:24:59 | 显示全部楼层
啊这啧啧啧 发表于 2023-5-8 23:21
#include
#define max 1024
int main(){

[b]你把你的代码放到代码块里,不然有 [i] 的地方会变成斜体,[i] 会不见[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-8 23:26:41 | 显示全部楼层
isdkz 发表于 2023-5-8 23:24
你把你的代码放到代码块里,不然有 ] 的地方会变成斜体,] 会不见

有点不理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-8 23:35:38 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-8 23:36:12 | 显示全部楼层
#include <stdio.h>
#define max 1024
int main(){
        //定义
        int t;
        int n,m;
        int arr[max][2];
        //输入
        printf("请输入你所需分的黄金堆数:");
        scanf("%d",&t);
        
        printf("请输入这堆黄金的块数,并且可分的黄金堆包含的块数");
        for(int i=0;i<t;i++){
            for(int j=0;j<2;j++){        
                scanf("%d",&n);
                    arr[i][j]=n;
            }
        }
        
        //测试
        int k=0;
        int c;
        int num[max];
                //测试次数
                for(int i=0;i<t;i++){
                for(int b=1;b<arr[i][0];b++){
                        c=arr[i][0]-b;
                        if(c%2==b){
                                num[k]=c;
                                k++;
                            }else if(b%2==c){
                                    num[k]=c;
                                    k++;
                                }
                    }
            }
              
        for(int h;h<sizeof (num)/sizeof (num[0]);h++){
                printf("%d",num[h]);
        }
        
        //存入
        
        //判断
        
        return 0;
        
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-8 23:43:03 | 显示全部楼层

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

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

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

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

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

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

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

    // 存入

    // 判断

    return 0;

}

现在,代码应该能够正常输出num数组的元素。注意,我在输出部分添加了空格。如果您希望每个元素之间换行,可以将 printf("%d ", num[h]); 替换为 printf("%d\n", num[h]); 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 01:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表