编程练习小程序
非递归函数的递归求解 摘要: 1: #include <stdio.h> 2: #include <math.h> 3: #include <stdlib.h> 4: #define STACK_INIT_SIZE 20 5: #define STACKINCREMENT 10 6: 7: typedef int ElemType; 8: typedef struct { 9: ElemT...
阅读全文
数据结构趣题——判断完全二叉树 摘要: 1: #include "stdio.h" 2: 3: typedef struct BiTNode { 4: char data; /*结点的数据域*/ 5: struct BiTNode *lchild , *rchild; /*指向左孩子和右孩子*/ 6: } BiTNode , *BiTree; 7: 8: /*创建一棵二叉树*/ 9: void CreatBiTree(BiTree *...
阅读全文
数据结构趣题——动态双向链表的使用 摘要: 1: #include <stdio.h> 2: #include <stdlib.h> 3: 4: typedef struct node { 5: int data; 6: int freq; 7: struct node *prior; 8: struct node *next; 9: } dbLNode, *dbLinkList; 10: 11: /*创建一个双向...
阅读全文
数据结构趣题——语言翻译 摘要: 1: #include <stdio.h> 2: #include <stdlib.h> 3: #define STACK_INIT_SIZE 20 4: #define STACKINCREMENT 10 5: 6: typedef char ElemType; /*将char类型定义为ElemType*/ 7: typedef struct { /*定义一个栈类型*/ ...
阅读全文
数据结构趣题——括号匹配 摘要: 1: #include <stdio.h> 2: #include <stdlib.h> 3: #define STACK_INIT_SIZE 20 4: #define STACKINCREMENT 10 5: 6: typedef char ElemType; /*将char类型定义为ElemType*/ 7: 8: typedef struct{ /*定义一个栈类型*...
阅读全文
数据结构趣题——二进制/八进制转换 摘要: 1: #include <stdio.h> 2: #include <math.h> 3: #include <stdlib.h> 4: #define STACK_INIT_SIZE 20 5: #define STACKINCREMENT 10 6: 7: typedef char ElemType; 8: typedef struct { 9: Elem...
阅读全文
数据结构趣题——约瑟夫环 摘要: 1: #include <stdio.h> 2: #include <stdlib.h> 3: 4: /*链表结点定义*/ 5: typedef struct node { 6: int number; /*编号*/ 7: int psw; /*个人密码*/ 8: struct node *next; 9: } LNode, *LinkList; 10: 11: 12:...
阅读全文
数据结构趣题——在原表空间进行链表的归并 摘要: 1: #include <stdio.h> 2: #include <stdlib.h> 3: 4: /*定义int为ElemType类型*/ 5: typedef int ElemType; 6: 7: /*定义链表的结点类型*/ 8: typedef struct node { 9: ElemType data; /*数据域*/ 10: struct node *ne...
阅读全文
动态数列排序 摘要: 1: /******************************************Dynamic Sort*************************************************/ 2: #include <string.h> 3: #include <stdio.h> 4: #include <malloc.h> 5: 6:...
阅读全文
数据结构趣题——顺序表就地逆置 摘要: 利用原表的存储空间将顺序表(a1,a2,……,an)逆置为(an,an-1,………a1)。
阅读全文
数学趣题——选美比赛 摘要: 1: #include "stdio.h" 2: 3: struct player { 4: int num; 5: int score; 6: int rand; 7: } ; 8: 9: // 根据对选手的得分排序 10: void sortScore(struct player psn[], int n) 11: { 12: int i, j; 13: struct player ...
阅读全文
数学趣题——汉诺塔 摘要: 1: #include <stdio.h> 2: 3: void move(int n, char x, char y, char z) 4: { 5: if(n == 1) 6: printf("%c-->%c/n", x, z); 7: else 8: { 9: move(n - 1, x, z, y); 10: printf("%c-->%c/n", x, z); ...
阅读全文
数学趣题——递归法求幂 摘要: 1: #include "stdio.h" 2: 3: unsigned long myPow(int m, int n) 4: { 5: unsigned long tmp; 6: 7: if(n == 0) return 1; 8: 9: if(n == 1) return m; 10: 11: if(n % 2 == 0) { 12: tmp = myPow(m, n / 2); 13...
阅读全文
数学趣题——计算组合数 摘要: 1: #include "stdio.h" 2: 3: int cnr(int m, int n) 4: { 5: if(m == n || n == 0) 6: return 1; 7: else 8: return cnr(m - 1, n) + cnr(m - 1, n - 1); 9: } 10: 11: int main() 12: { 13: int m, n; 14: pri...
阅读全文
数学趣题——渔夫抓鱼问题 摘要: A,B,C,D,E合伙抓鱼,全都睡着了。A第一个起来,将鱼分成5份,把多余的一条扔回河里,拿走自己一份走了。B第二个起来,又把鱼分成5份,把多余的一条扔回河里,拿走自己一份走了。接着,C,D,E都同样做。问渔夫们一共至少抓了多少条鱼?
阅读全文
数学趣题——马克思手稿中的数学题 摘要: 1: #include "stdio.h" 2: 3: void Marx() 4: { 5: int x,y,z; 6: for(x=1;x<30;x++) 7: for(y=1;y<30;y++) 8: for(z=1;z<30;z++) 9: { 10: if(3*x+2*y+z==50 && x+y+z==30) 11: printf("%5d %5d...
阅读全文
数学趣题——三重回文数字 摘要: 找出11——999之间的所有三重回文数字,就是a的a,a平方,a立方都是回文
阅读全文
数学趣题——寻找同构数 摘要: 1、题目 正整数n若是它平方数的尾部,则称n为同购数。例如6是36的同构数 找出1000以内的 2、源码
阅读全文
数学趣题——递归法寻找最小值 摘要: 1、题目 从一个整数序列中找出最小的元素,并用递归的方法实现 2、源码(二分序列递归)
阅读全文
数学趣题——验证四方定理 摘要: 1、题目 所有自然数最多只要4个数的平方和就可以表示 2、源码
阅读全文
数学趣题——验证角谷猜想 摘要: 1、题目 任意给定一个自然数,若它为偶数则除以2,若它为奇数则乘以3,得到一个新的自然数,照这样计算下去,若干次后必然得到1。编程验证 2、源码
阅读全文
数学趣题——具有特殊性质的数 摘要: 1、题目 4位数abcd,有这样的性质:abcd=(ab+cd)的平方。ab,cd都为两个2位数,求这个4位数abcd。 2、源码
阅读全文
数学趣题——表示成两个数的平方和 摘要: 1、题目 找出所有满足x平方+y平方=N的正整数对x和y 2、分析 x,y的取值不可能大于根号N。 3、源码
阅读全文
数学趣题——连续整数固定和问题 摘要: 1、题目 一个数m的连续整数固定和就是指存在a1,a2,…an,后一个数只比前一个数大一,而且它们的和等于数m。 2、分析 最直观解法就是穷举法 3、源码
阅读全文
数学趣题——谁在说谎 摘要: 问题: A说:B说谎。B说:C说谎。C说:A.B都说谎。请问谁说谎 分析: 对A,B,C三人说的话的真假变量a,b,c表示,a,b,c的取值为1或0 按照题意:存在如下逻辑关系: (1)若a = 1, 则 b = 0; (2)若a = 0, 则 b = 1; (3)若b = 1, 则 c = 0; (4)若b = 0, 则 c = 1; (5)若c = 1, 则 a+b = 0; (6)若c = ...
阅读全文
数学趣题——数字翻译器 摘要: 问题:输入一个正整数N,输出英文表达。例如:1对应one 源码:
阅读全文
数学趣题——亲密数 摘要: 如果整数A的全部因子之和等于B,而B的全部因子之和等于A,则为亲密数。求3000以内的亲密数。 (1)应该事先求出1-3000所有数字的整数因子之和,存入一个数组,以提高效率 (2)由于亲密数配对是唯一的,所以如果一个元素在集合中都没有找到亲密数,那么任何一个其他的元素的亲密数也不可能是该元素了,所以其他元素在找亲密数时就不需要再考虑之前已经找过的数字。 源码如下:
阅读全文
数学趣题——魔幻方阵 摘要: 问题: 在n*n的矩阵中填写1~n*n这n*n个数字。使得它的每一行、每一列以及两个对角线之和均相等。求出一个这样的三阶魔幻方阵 最简单,效率最低的穷举法可以解。 源码:
阅读全文
数学趣题——求圆周率的近似值 摘要: 应用数值概念算法求圆周率 数值概念算法(随机数方法):利用概率论解决问题, 在求圆周率时的核心思想是: 在一个边长为r的正方形中,以中心点为圆心,r为直径作圆,则圆的面积是1/4πr平方,而正方形面积是r平方。二者比值就是1/4π。 所以随机向该正方形投入点,其中落在圆内的概率的4倍就是圆周率。 源码:
阅读全文
数学趣题——常胜将军 摘要: 一、题目 21根火柴,A和B每人每次可以取走1——4根,不可多取,也不可不取,取最后一根火柴者输,要求A先取,B后取。如何保证B永远是胜利者。 二、分析 即必须是B最后只留给A 1根火柴。也就是除了最后第21根火柴,之前的每一轮都必须保证A和B取到的火车数之和为5。 三、源码
阅读全文
数学趣题——分解质因数 摘要: 在2~n-1之间找出n的两个因数(不一定是质因数)i和j,即i * j = n; 如果i是质数,则j必须是n的一个质因数,否则继续对j进行质因数分解。 如果j是质数,则i必须是n的一个质因数,否则继续对i进行质因数分解。
阅读全文
数学趣题——兔子产仔问题 摘要: Fi = 1 (i =1), 2(i = 2), Fi-1 + F i-2 (i >= 3)
阅读全文
数学趣题——爱因斯坦阶梯问题 摘要: 若x mod 2 =1, x mod 3 = 2, x mod 5 = 4, x mod 6 = 5, x mod 7 =0;求最小解 源码如下:
阅读全文
数学趣题——新郎和新娘 摘要: 一、题目 新郎A,B,C。新娘X,Y,Z。 A说他将和X结婚,X说她将和C结婚,C说他将和Z结婚。这三句全是假的。请问真正是怎么配对‘ 二、分析 可以用穷举法,一共3+2+1种可能方案。 A,B,C位置不变,不断调换X,Y,Z的位置。 三、源码
阅读全文
数学趣题——填数字游戏 摘要: 1: #include <stdio.h> 2: 3: int Reverse(int i) 4: { 5: int r = 0; 6: while (i) 7: { 8: r = r * 10 + i % 10; 9: i = i / 10; 10: } 11: return r; 12: } 13: 14: int fun(int i, int j) 15: { 16:...
阅读全文
数学趣题——判断回文数字 摘要: 1: #include <string.h> 2: #include <stdio.h> 3: 4: int IsCircle(int n); 5: int Reverse(int i); 6: 7: int main() 8: { 9: int n; 10: printf("input a number/n"); 11: scanf("%d", &n); 1...
阅读全文
数学趣题——百钱买百鸡 摘要: 1: #include <string.h> 2: #include <stdio.h> 3: 4: int Accord(int i, int j, int k); 5: 6: int main() 7: { 8: int i, j, k; 9: for (i=0; i<=100; i++) 10: for (j=0; j<=100; j++) 11: f...
阅读全文
数学趣题——排列组合 摘要: 1: #include <stdio.h> 2: 3: int main() 4: { 5: int red, yellow, green; 6: for (red=0; red<=3; ++red) 7: for (yellow=0; yellow<=3; ++yellow) 8: for (green=2; green<=6; ++green) 9: if(red...
阅读全文
数学趣题——哥德巴赫猜想的近似证明 摘要: 一、分析 可在较小范围内使用枚举法,验证每一个偶数是否能表示成为两个素数的和。 二、源码
阅读全文
数学趣题——求两个数的最大公约数和最小公倍数 摘要: 1: #include <stdio.h> 2: 3: int **(int a, int b) 4: { 5: int min; 6: if (a <= 0 || b <= 0) 7: return -1; 8: if (a > b) 9: min = b; 10: else 11: min = a; 12: 13: while (min) 14: { ...
阅读全文
数学趣题——棋盘放麦粒 摘要: 1: #include <stdio.h> 2: #include <math.h> 3: 4: int main() 5: { 6: double sum = 0; 7: int i; 8: for (i = 1; i <= 64; ++i) 9: { 10: sum += pow(2, i-1); 11: } 12: printf("the sum is /...
阅读全文
编程基本功——判断某天是一年中的第几天 摘要: 一、分析 (1)首先分析是否为闰年,若为闰年则2月为29天 (2)其次计算之前的几个月一共有多少天 (3)最终加上该天在月中是多少天 二、源码
阅读全文
编程基本功——寻找矩阵中的“鞍点” 摘要: 一、问题分析 在所在行中最大,在所在列中最小。所以一个矩阵最多只有一个鞍点。 所以可以逐行寻找鞍点。先找出某行中最大的元素,再将该元素与同列中其他元素进行比较,若该元素同时是所在列中最小的元素,则它就是鞍点。 二、源码
阅读全文
编程基本功——复杂级数的前n项和 摘要: 1: #include "stdio.h" 2: 3: int main() 4: { 5: float m = 1.0; 6: float n = 1.0; 7: float s = 0.0; 8: int i, j; 9: 10: for (i=1; i<=5; ++i) 11: { 12: for (j=0; j<i; ++j) 13: { 14: m = m * 0.5...
阅读全文
编程基本功——打印杨辉三角 摘要: 1: #include "stdio.h" 2: 3: int main() 4: { 5: int i, j, k, buf[7], tmp[7]; 6: 7: for (i=0; i<=6; ++i) 8: { 9: if (i == 0) 10: printf("%d", 1); 11: else if(i == 1) 12: { 13: printf("/n%d %d/n"...
阅读全文
编程基本功——打印特殊图形 摘要: 一、分析 对于特定格式输出的问题,最关键的是理解输出格式的规律。 找出第i行打印的个数与i的关系 找出第i行打印的起始位置与i的关系 二、源码
阅读全文
编程基本功——十进制/二进制转换器 摘要: 一、分析 除2取余法,先得到的是低位,后得到的是高位。所以可以用栈思想计算 二、源码
阅读全文
编程基本功——记录程序的运行时间 摘要: 一、分析 主要使用<time.h>中的类型和几个函数即可。 clock_t定义了表示时间值的算术类型,一般用于记录存储一个系统时间值。 clock()可以取得从程序运行开始到调用clock()函数所花费的处理器时间,返回类型就是clock_t。 (end - start) / CLK_TCK就可以将时间差转换为以秒为单位 二、源码
阅读全文
编程基本功——计算文件的大小 摘要: 一、分析 巧妙利用fseek()重定位流上的文件指针和ftell()获得当前文件指针相对于文件开头处的位置,可以高效率求的文件的大小 二、源码
阅读全文
编程基本功——巧用位运算作整数交换 摘要: 一、分析 使用位运算交换整数,可使用按位异或的方法,省掉临时变量,减少空间复杂度 二、源码
阅读全文
编程基本功——矩阵的乘法运算 摘要: 一、分析 解决矩阵相乘,比较简单的方式就是三重循环嵌套语句 二、源码
阅读全文
编程基本功——矩阵的转置运算 摘要: 一、分析 可以用一个二维数组存放矩阵的数据,通过将二维数组的指针作为参数传递实现矩阵转置。 二维数组指针的传递,实参是数组名,形参一定是如(*a)[n]形式的,其中n表示该二维数组每行的元素个数,也就是列数。 二、源码
阅读全文
编程基本功——指针变量作参数 摘要: 一、分析 要想通过被调用函数修改主函数中的数组值,只能将数组的首地址(实际上在被调用函数中看作指针)作为参数进行传递,被调用函数通过该指针对数组值进行修改。注意!并不是把整个数组的内容传到了被调用函数中!!! 二、源码
阅读全文
编程基本功——判断闰年 摘要: 一、分析 闰年特点:该年份能被4整除,但不能被100整除 该年份能被4整除,又能被400整除 二、源码
阅读全文
编程基本功:基于switch语句的译码器 摘要: 1: #include "stdio.h" 2: 3: void Decode(char *str, int n); 4: 5: int main() 6: { 7: char str[19] = "001011101001011001"; 8: Decode(str, 18); 9: getchar(); 10: 11: return 0; 12: } 13: 14: void Decod...
阅读全文
编程基本功——嵌套if-else语句的妙用 摘要: 一、问题 对输入的成绩进行等级划分 二、分析 使用if-else嵌套语句时必须注意else与if的配对正确 三、源码
阅读全文
编程基本功——计算字符的ASCII码 摘要: 一、问题 在终端输入一个字符,输出它的ASCII码 二、分析 一个字符在内存中的存储方式是:以它的ASCII码形式存放的,大小为8位。例如:空格符的ASCII码是32,它在内存中32对应的8位二进制数为100000就代表一个空格。 所以只要变换一种输出的形式就可以显示出该字符的ASCII码。 三、源码
阅读全文
编程基本功——字符类型统计器 摘要: 一、题目分析 解决字符的分类问题可以通过字符的ASCII码进行判断,因为不同的字符对应不同的ASCII码。 例如常用的有:空格符——32,制表符——9,换行符——10,Ctrl+Z的组合键输入的字符对应的是EOF结束标志。 二、源码
阅读全文