C语言添加可视化界面


#include <stdio.h> 
#define N 20//最大物品数目
struct Stack //栈 
{                     
    int s[N]; 
    int top; 
}stack; 

void Initstack()
{
    int i;
    for(i=0;i<N;i++)  //初始化栈 
        stack.s[i]=0;
}

void solve(int T, int n)
{
    int w[N];
    int m,i,j=0,k=0; 
    for(m=0;m<n;m++)
        scanf("%d",&w[m]);        
    Initstack();
    stack.top=0; 
    do{ 
        while(T>0&&k<=n)
        { 
            if(T>=w[k])
            {                 //符合条件的背包进栈 
                stack.s[stack.top++]=k; 
                T-=w[k]; 
            } 
  
                k++;                //不符合则考察下一个背包 
        } 
        if(T==0)
        {                   //找到一种答案,输出 
            printf("第%d组答案:",j+1); 
            for(i=0;i<stack.top;i++)
            {
                printf("%d ",w[stack.s[i]]); 
            } 
                j++; 
                printf("\n"); 
        } 
        k=stack.s[--stack.top];            //找不到答案,则前一个入栈的背包出栈,继续考察下一个背包 
        stack.s[stack.top]=0; 
        T+=w[k]; 
        k++; 
        }while(!(stack.top==0&&k==n));    //当栈空且k==n时,所有可能的组合都考察完毕,退出循环 
}

int main()        //从N个物品(每个物品重w[k])中选取总重为T的背包,共有多少种选法 
{    
    int T,n;                     //总重                   
    printf("请输入背包总体积T:");
    scanf("%d",&T);
    printf("请输入物品个数:");
    scanf("%d",&n);
    while(n>20)
    {
        printf("物品最多为20个!请重新输入!\n");
        scanf("%d",&n);
    }
    printf("请输入每个物品的重量:");
    solve(T, n);
    return 0;
} 

怎样通过easyx库将其转换为可视化界面

问题是什么?

你这个怎么可视化

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7507024
  • 这篇博客你也可以参考下:C语言面试题总结
  • 你还可以看下c语言参考手册中的 c语言-字符串字面量
  • 除此之外, 这篇博客: C语言线程池中的 添加任务 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • void threadpoolAdd(threadpool*pool,void(*run)(void*),void*arg)
    {
        if(pool->shutdown)//线程池已经被关闭
        {
            return;
        }
        task*t=(task*)malloc(sizeof(task));
        t->arg=arg;
        t->run=run;
        t->next=NULL;
        pthread_mutex_lock(&pool->mutexpool);
        if(pool->first==NULL)//第一个任务
        {
            pool->first=t;
            pool->end=t;
        }
        else
        {
            pool->end->next=t;
            pool->end=t;
        }
        pool->tasksize++;
        pthread_cond_signal(&pool->notempty);//唤醒阻塞的线程
        pthread_mutex_unlock(&pool->mutexpool);
    }
    
  • 您还可以看一下 包东华老师的C语言贪吃蛇课程中的 添加方向按键小节, 巩固相关知识点