万年历运行,某个月格式出现问题,求解答

无论打印哪一年的日历,都有两个月份出现下面这样的问题,为什么呀

img

下面是部分关键代码

  1. img

  2. img

应该是打印月份日历代码那里有问题,把其他代码贴上来看看。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/346442
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:编写程序,要求根据用户输入的年月,打印出该月份的日历
  • 除此之外, 这篇博客: 纯C精备,哈夫曼树,考研就业,两者兼得,今日博文,诸君共享。中的 函数实现源代码 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include"Cx_330.h"
    void initHuffManTree(HuffmanTree *HT, int n)
    {
    	int m = 2 * n - 1;
    	*HT = (HuffmanTree)malloc((m + 1) * sizeof(HTnode));//创建m+1个HTnode空间是因为让下标从1开始
    	for (int i = 1; i <= m; i++) {
    		(*HT)[i].parent = 0;
    		(*HT)[i].lchild = 0;
    		(*HT)[i].rchild = 0;
    	}
    
    }
    
    void select(HuffmanTree* HT, int* min_1, int* min_2, int m) {
    
    	int minWeight = MINWEIGHT;
    	for (int i = 1; i < m; i++) {
    		if ((*HT)[i].weight < minWeight && (*HT)[i].parent == 0) {
    			minWeight= (*HT)[i].weight;
    			*min_1 = i;
    		}
    	}
    	minWeight = MINWEIGHT;
    	for (int i = 1; i < m; i++) {
    		if ((*HT)[i].weight < minWeight && (*HT)[i].parent == 0&&i!=(*min_1)) {
    			minWeight = (*HT)[i].weight;
    			*min_2 = i;
    		}
    	}
    }
    
    void creatHuffManTree(HuffmanTree* HT, int  n) {
    
    	int m = 2 * n - 1;
    	int min_1, min_2;
    	for (int i = n + 1; i <= m; i++) {
    
    		select(HT,&min_1,&min_2,i);
    		(*HT)[min_1].parent = i;
    		(*HT)[min_2].parent = i;
    		(*HT)[i].lchild = min_1;
    		(*HT)[i].rchild = min_2;
    		(*HT)[i].weight =(*HT)[min_1].weight+(*HT)[min_2].weight;
    	}
    }
    
    void creatHuffManCode(HuffmanTree HT, HuffmanCode* HC, int n) {
    	(*HC) = (HuffmanCode)malloc((n+1)*sizeof(char*));
    	char* ptr = (char*)malloc(n*sizeof(char));
    	ptr[n - 1] = '\0';
    	int c, f, start;
    	for (int i = 1; i <= n; i++) {
    		
    		start = n - 1;
    		c = i;
    		f = HT[c].parent;
    		while (f != 0) {
    			--start;
    			if (HT[f].lchild == c) {
    				ptr[start] = '0';
    			}
    			else {
    				ptr[start] = '1';
    			}
    			c = f;
    			f = HT[c].parent;
    		}
    		(*HC)[i] = (char*)malloc(n*sizeof(char));
    		strcpy((*HC)[i],&ptr[start]);
    	}
    	free(ptr);
    }
    
    void showHuffManCode(HuffmanCode HC, char* str, int n) {
    	char* p = NULL;
    	printf("\n-------------------------------------------------\n");
    
    	for (int i = 1; i <= n; i++) {
    		printf("[%c] 的哈夫曼编码:", str[i-1]);
    		p = HC[i];
    		puts(p);
    	}
    	printf("\n-------------------------------------------------\n");
    
    }
    
    void show_HuffManTree(HuffmanTree HT,int n) {
    	printf("-------------------------------------------------\n");
    	printf("下标  权重  双亲下标  左孩子下标  右孩子下标\n");
    	for (int i = 1; i <= 2*n-1; i++) {
    		printf(" [%d]  \t%d  \t%d  \t%d  \t\t%d\n",i,HT[i].weight, HT[i].parent, HT[i].lchild, HT[i].rchild);
    	}
    	printf("-------------------------------------------------\n");
    }
    
    void show_Str(char* str, int  n)
    {
    	for (int i = 0; i < n; i++)
    	{
    		printf("%c ",str[i]);
    	}
    	printf("\n");
    }
    
  • 您还可以看一下 纪佳琪老师的机器学习之支持向量机理论与代码实践课程中的 拉格朗日乘子法求等式约束条件下函数极值小节, 巩固相关知识点