| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 634 人关注过本帖
标题:运行时“C2057、C2466、C2133中英文错误信息同步显示功能”
只看楼主 加入收藏
WeiDing
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2023-5-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
运行时“C2057、C2466、C2133中英文错误信息同步显示功能”

/* Note:Your choice is C IDE */
#include "stdio.h"
void combine_increase(int* arr,int start, int* result, int count, const int NUM, const int arr_len)
{
    int i = 0;
    for (i = start; i < arr_len + 1 - count; i++)
    {
        result[count-1] = i;
        if (count - 1 == 0)
        {
            int j;
            for (j = NUM - 1; j >= 0; j--)
            printf("%d\t",arr[result[j]]);
            printf("\n");
        }
        else
        combine_increase(arr,i + 1, result, count - 1, NUM, arr_len);
    }
}
int main()
{
    int arr[] = {1, 2, 3, 4, 5, 6};
    int num = 4;
    int result[num];
   
    combine_increase(arr, 0, result, num, num, sizeof(arr)/sizeof(int));
    printf("分界线\n");
    /*combine_decrease(arr,sizeof(arr)/sizeof(int),result,num,num);*/
    return 0;
}
搜索更多相关主题的帖子: result int count NUM sizeof 
2023-05-12 10:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:20 
不知所云,你想问什么?为什么在你的提问中连个问号都没有?

如果是指
int num = 4;
int result[num];
不能编译通过的话,那既然你用了VLA,就应该选用支持VLA的编译器 ------ 比如gcc、clang等等。
或者将代码改为
constexpr int num = 4;
int result[num];
然后选用支持C23标准的编译器 ------ 比如gcc14(编译参数添加-std=c2x)。

------------------------------------------------
欲实现的功能本身挺有意思的,我试着将使用者与算法本身分离

程序代码:
#include <stdio.h>
#include <stdbool.h>

struct combine
{
    const int* arr;
    const size_t arr_n;
    size_t* result;
    const size_t result_n;
};
bool combine_create( struct combine* cb )
{
    for( size_t i=0; i!=cb->result_n; ++i )
        cb->result[i] = i;
    return cb->result_n <= cb->arr_n;
}
bool combine_increase( struct combine* cb )
{
    for( size_t i=0; i!=cb->result_n; ++i )
    {
        size_t j = cb->result_n-1-i;
        if( cb->result[j] != cb->arr_n-1-i )
        {
            ++cb->result[j];
            for( ++j; j!=cb->result_n; ++j )
                cb->result[j] = cb->result[j-1] + 1;
            return true;
        }
    }
    return false;
}

int main( void )
{
    int arr[] = { 1, 2, 3, 4, 5, 6 };
    size_t result[4];

    const size_t arr_n = sizeof(arr)/sizeof(*arr);
    const size_t result_n = sizeof(result)/sizeof(*result);
    struct combine cb = { arr, arr_n, result, result_n };
    for( bool b=combine_create(&cb); b; b=combine_increase(&cb) )
    {
        for( size_t i=0; i!=result_n; ++i )
            printf( "%d%c", arr[result[i]], "\t\n"[i+1==result_n] );
    }

    return 0;
}
2023-05-12 12:29
快速回复:运行时“C2057、C2466、C2133中英文错误信息同步显示功能”
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017227 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved