题目:
1. 一只老鼠咬坏了账本,公式中的符号 □ 代表被老鼠咬掉的地方。要想恢复下面的等式,应在□中填上哪个相同的数字?
3□ * 6237 = □3 * 3564
思路:利用穷举法找出该数字。
2.要求编制一个求方程ax2+bx+c=0的根的程序。一次可以求解多个方程的根,采用循环结构,当次循环输入一个方程的系数a、b和c,输出求出的根。求解时考虑四种情况:(1)系数a为0,不是二次方程。(2)方程有两个不同的实根。(3)方程有两个相同的实根。(4)方程有两个虚根。
3.一辆汽车撞人后逃跑。4个目击者提供如下线索:
甲:牌照三、四位相同; 乙:牌号为31XXXX;
丙:牌照五、六位相同; 丁:三~六位是一个整数的平方。
思路:为了从这些线索中求出牌照号码,只要求出后四位再加上310000即可。这四位又是前两位相同,后两位也相同,互相又不相同并且是某个整数的平方的数。可以仍然使用穷举法。由于1000的平方根大于31,循环可从31开始。
4.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天都吃了前一天剩下的一半零一个。到了第10天早上再吃时,就只剩一个桃子了。求第一天共摘多少桃子。
思路:这里可以采用递推算法,设第10天的桃子数是x=1,则第9天的桃子数为(x+1)*2。共递推9次就可以得到第1天猴子所摘的桃子数。
5.打印以下钻石图案,要求任意输入行数(必须为奇数),图案被打印在屏幕的中心。例如行数为7的钻石图案如下:
*
***
*****
*******
*****
***
*
思路:分为两部分,上面4行和下面3行,上面按行数递增,下面部分按行数递减。欲将图案输出在屏幕中心,通过计算可知每一行的左边应该有多少空格。
6.实现一个计算器。实现两个整数简单的加减乘除四则运算(假定除法为整除)。输入数据在文件express.txt中,计算结果写入另一个文件result.txt中,内容如下所示:
express.txt result.txt
1+2 1+2=3
3-6 3-6=-3
4*9 4*9=36
9/2 9/2=4
思路:打开数据文件express.txt,按顺序依次读入每行表达式中的两个运算量和一个运算符,根据运算符确定执行的是哪一种运算,计算后将结果在屏幕上显示,同时写入结果数据文件result.txt。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
/*1.FIndNum函数,求出满足以下等式的数字,
3 □* 6237 = □3 * 3564
*/
void FindNum()
{
int i,find = 0;
for(i=0; i<=9; i++)
{
if((30+i)*6237 == (i*10+3)*3564)
{
printf("所求的数字为 %d, 3%d*6237 = %d3*3564\n",i,i,i);
find = 1;
}
}
if(!find)
printf("找不到满足等式的数字。\n"