时间限制: 1 Sec 内存限制: 128 MB
提交: 70 解决: 44 [提交][状态][讨论版]
题目描述
编写算法对输入的一个整数,判断它能否被3,5,7整除,并输出以下信息之一: 能同时被3,5,7整除;
能被其中两个数(要指出哪两个)整除; 能被其中一个数(要指出那一个)整除; 不能被3,5,7任一个整除;
输入
输入一个整数<100000;
输出
如果都能整除输出“all\ 如果都不能整除输出\
如果能被3和5整除则输出“3 5”。中间有一个空格, 注意按由小到大输出。
样例输入
35
样例输出
5 7
#include
long n; int k; scanf(\
k=((n%3==0)+(n%5==0)*2+(n%7==0)*4);//判断整数是否能被2,3,5整除; switch(k) { case 7:printf(\ case 6:printf(\
case 5:printf(\ case 4:printf(\ case 3:printf(\ case 2:printf(\ case 1:printf(\ case 0:printf(\}//用switch语句输出结果; }
心得:这题主要考察输入输出问题,首先输入一个整数,运用语句k=((n%3==0)+(n%5==0)*2+(n%7==0)*4),判断这个数能否被2,3,5整除,用switch语句输出所有可能发生的结果,然后输出题目中所要求输出的结果,其中用switch语句起到了优化算法的作用。
14问题A警察抓小偷
时间限制: 1 Sec 内存限制: 128 MB
提交: 115 解决: 88 [提交][状态][讨论版]
题目描述
警察局抓了a,b,c,d,4名小偷嫌疑犯,其中只有一个人是小偷,审问中,a说:我不是小偷,b说:c是小偷,c说:小偷肯定是d,d说:c在冤枉人。 现在已经知道4个人中3人说的是真话,一人说的是假话,问到底谁是小偷。
输入 输出
小偷是c
样例输入 样例输出
小偷是c
#include
if(((x!=1)+(x==3)+(x==4)+(x!=4))==3)//判断是否有三个人说真话的情况; printf(\}
心得:这个题目主要考察把文字信息转化为数字信息,即信息数字化,把A,B,C,D看成1,2,3,4;x定义为小偷,然后把A,B,C,D四人所说的话变成数字语言,判断当他们四个人有三个人说真话的情况,然后以把数字变成字母输出。
15问题 B: n!
时间限制: 1 Sec 内存限制: 128 MB
提交: 262 解决: 162 [提交][状态][讨论版]
题目描述
输入一个整数N,输出它的阶乘。
输入
输入一个整数<20;
输出
输出它的阶乘
样例输入
5
样例输出
120
提示
#include
sum=add(n); printf(\ return 0; } int add(int n)//定义add函数 { int f; if (n==0||n==1) { f=1; }//判断当n等于0和1这两种情况; else f=n*add(n-1);//调用add函数求值; return f; }
心得:这里主要运用函数的递归调用,首先用if对输入的数进行判断,看是否为1和0,如果是,那么输出其阶乘等于1,如果不是那么调用函数f=n*add(n-1)进行求值,add函数总共被调用了n次,求得最后的结果,输出。
16汉诺塔问题
时间限制: 1 Sec 内存限制: 128 MB
提交: 224 解决: 138 [提交][状态][讨论版]
题目描述
把N个盘子从A柱子借助B柱子移到C柱子,要求每次只能移动一个盘子,并且小盘子不能放到大盘子上。问如何移动。
输入
输入盘子的个数N(<=10)
输出
输出移动的次数。
样例输入
3
样例输出
7
提示
#include
int i,j,n,sum; scanf(\ j=1;
if(n!=1)//去除盘子的个数为1的情况;
{
for(i=1;i<=n;i++) {
j=j*2; }
sum=j-1;//求盘子移动的次数; }
else sum=1;
printf(\ return 0; }
心得:这题主要考察循环与递归问题,先假设盘子的个数,取几个特殊值,找出移动盘子次数的规律。这个编程首先判断盘子个数,如果是1,则输出1次,如果不是1,执行n次循环,求得j,然后求出移动盘子的次数j-1,输出。
17问题 D: 猴子吃桃子问题(递归) 时间限制: 1 Sec 内存限制: 128 MB
提交: 98 解决: 87 [提交][状态][讨论版]
题目描述
一只猴子摘了若干桃子,每天吃现有桃子的一半多一个,到第10天时就只有一个桃子了,求原来有多少个桃。