1、 马克思手稿中有一道趣味数学题:有 30 个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了 50 先令,每个男人各花 3 先令,每个女人各花 2 先令,每个小孩各花 1 先令,问男人、女人和小孩各有几人?解方程组编写程序,采用穷举法求出结果。 编写程序,根据以下公式求 e 的值。要求用两种方法计算:1) for 循环,计算前 50 项 2)while 循环,直至最后一项的值小于 10-4 从键盘中输入一个数字(不限位数) ,用循环语句编程判断并输出这个数字的位数。 猴子吃桃子问题。猴子第一天摘下若干个桃,当即只一半,又多吃一个。第二天早上又将剩下的一半吃掉一半,双多吃一个。以后每天早上都吃
2、了前天剩下的一半零一个,到第 10 天早上只剩下最后一个桃。问第一天摘了几个桃。 编程打印九九乘法表 青年歌手参加歌曲大奖赛,有 10 个评委打分,试编程求选手的平均得分(去掉一个最高分和一个最低分) 。 从键盘中输入一个数字(可以包含小数点,其位数在 60 位以下,求其整数的有效位数,如输入0123.456,返回值为整数有效位数为 3)1) 输入数据为浮点型,不用数组,不用字符串,只有变量的算术运算实现此功能。2) 使用数组来进行编程。 使用数组,编写一个十进制正整数转换为任意进制数的转换工具。(大进制向小进制的转换。 (方法是相除去余)10 进制 327 转八进制:327/8 40 余数为
3、 740/8 5 余数为 0于是八进制数为 507(第一位 5 是最后的商) ) 使用数组,编写一个任意进制正整数转换为十进制的转换工具。 (以 2,10 进制互转为例,其他请举一反三:二进制数 1101 转十进制:12 的三次幂1 2 的二次幂02 的一次幂1 2 的零次幂8 401 13 ) 10 个小孩围成一圈分糖果,老师顺次分给每个人的糖块数为12, 2,8,22 ,16,4 ,10 , 6,14,20。然后按下列规则调整,所有小孩同时把自己的糖果分一半给右边的小孩,糖块数变为奇数的人,再向老师补要一块,问经过多少次调整后,大11!23!45!n家的糖块一样多,且每人多少块。 编写一个
4、函数,用以求 x2-5x+4 的值,x 做为函数的形参,调用此函数,求:y1= 22-52+4Y2=(x+15)2-5(x+15)+4Y3=(sinx)2-5sinx+4sinx 可以加载”math.h” 库函数后使用,函数说明为double sin( double x) 编写一个函数,使给定的一个二维数组(NN) 行列互换(N3)。 从键盘中输入一个不超过 40 个字符的字符串,再输入一个位数,删除对应 位数的字符,然后输出删除指定字符后的字符串要求:1) 用 puts 输出指示信息2) 用 gets 接收字符串 如果有一个正整数从左、右来读都是一样的,则称为回文式数(简称回数) ;比如10
5、1,32123 ,999 都是回数。数学中有名的“回数猜想”之迷,至今未解决。回数猜想: 任取一个数,再把它倒过来,并把这两个数相加,然后把这个和数再倒过来,与原和数相加,重复此过程,一定能获得一个回数。例: 68 倒过来是 8668+86= 154154+541= 605605+506=1111 (回数)编程,输入任意整数,按上述方法产生一个回数,为简便起见,最多计算 7 步,看是否能得到一个回数。要求:主函数中接收键盘数据,必须用 scanf(“%ld”,long s=0,t=0;printf(“a=“);scanf(“%d“,printf(“n=“);scanf(“%d“,while(i
6、0要求:1) 写出递归函数的原型2) 编写程序 4 用递归法将一个整数转换成字符形式输出。例如输入 483,应输出字符串“483”。 其程序如下,请验证,并修改程序,增加显示出输入数字的位数的功能,并使输出结果与下图一致。void convert(long n) long i;if (i=n/10)!=0) convert(i);putchar(n%10+0);main() long number;scanf(“%ld“,if ( number2) /*如果是闰年且月份大于 2,总天数应该加一天*/sum+;printf(“It is the %dth day.“,sum);getch();
7、=【程序 5】题目:输入三个整数 x,y,z,请把这三个数由小到大输出。1.程序分析:我们想办法把最小的数放到 x 上,先将 x 与 y 进行比较,如果 xy 则将 x 与 y 的值进行交换,然后再用 x 与 z 进行比较,如果 xz 则将 x 与 z 的值进行交换,这样能使 x 最小。2.程序源代码:#include “stdio.h“#include “conio.h“main()int x,y,z,t;scanf(“%d%d%d“,if (xy)t=x;x=y;y=t; /*交换 x,y 的值*/if(xz)t=z;z=x;x=t; /*交换 x,z 的值*/if(yz)t=y;y=z;
8、z=t; /*交换 z,y 的值*/printf(“small to big: %d %d %dn“,x,y,z);getch(); =【程序 6】题目:用*号输出字母 C 的图案。1.程序分析:可先用*号在纸上写出字母 C,再分行输出。2.程序源代码:#include “stdio.h“#include “conio.h“main()printf(“Hello C-world!n“);printf(“ *n“);printf(“ *n“);printf(“ * n“);printf(“ *n“);getch(); =【程序 7】题目:输出特殊图案,请在 c 环境中运行,看一看,Very Be
9、autiful!1.程序分析:字符共有 256 个。不同字符,图形不一样。 2.程序源代码:#include “stdio.h“#include “conio.h“main()char a=176,b=219;printf(“%c%c%c%c%cn“,b,a,a,a,b);printf(“%c%c%c%c%cn“,a,b,a,b,a);printf(“%c%c%c%c%cn“,a,a,b,a,a);printf(“%c%c%c%c%cn“,a,b,a,b,a);printf(“%c%c%c%c%cn“,b,a,a,a,b);getch(); =【程序 8】题目:输出 9*9 口诀。1.程序分析
10、:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。2.程序源代码:#include “stdio.h“#include “conio.h“main()int i,j,result;printf(“n“);for (i=1;i10;i+)for(j=1;j10;j+)result=i*j;printf(“%d*%d=%-3d“,i,j,result); /*-3d 表示左对齐,占 3 位*/printf(“n“); /*每一行后换行*/getch();=【程序 9】题目:要求输出国际象棋棋盘。1.程序分析:用 i 控制行,j 来控制列,根据 i+j 的和的变化来控制输出黑方格,还是白方
11、格。2.程序源代码:#include “stdio.h“#include “conio.h“main()int i,j;for(i=0;i8;i+)for(j=0;j8;j+)if(i+j)%2=0)printf(“%c%c“,219,219);elseprintf(“ “);printf(“n“);getch(); = 【程序 10】题目:打印楼梯,同时在楼梯上方打印两个笑脸。 1.程序分析:用 i 控制行,j 来控制列,j 根据 i 的变化来控制输出黑方格的个数。2.程序源代码:#include “stdio.h“#include “conio.h“main()int i,j;printf
12、(“11n“); /*输出两个笑脸*/for(i=1;i11;i+)for(j=1;j=i;j+)printf(“%c%c“,219,219);printf(“n“);getch(); .:.:经典 c 程序 100 例=11-20 :.:. 经典 c 程序 100 例=11-20【程序 11】题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列 1,1,2,3,5,8,13,21.2.程序源代码:#include “stdio.h“#include “conio.h“main()long f1,f2;int i;f1=f2=1;for(i=1;i=20;i+)printf(“%12ld %12ld“,f1,f2);if(i%2=0) printf(“n“); /*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/